引言
本文基于TI公司的OMAP3515开源平台设计了一款客厅游戏主机,开源软件平台使用Linux系统,独立移植了更流行、界面更友好的Android系统,开发了平台软件SDK,研发了hopoplayer播放器,支持Flash格式的游戏,并建立了友好的移植框架,可方便地移植到其他平台使用,主机使用体感手柄控制显示界面和操控体感游戏。完整的家庭体感娱乐平台如图1所示。
图1 家庭体感娱乐平台
1 客厅游戏主机
客厅游戏主机基于TI公司的OMAP3515开源平台设计。软件上,可以选择Android系统,也可以选择Linux系统。Android系统也是基于开源Linux系统内核,所以设计网卡驱动、HDMI驱动、音频驱动、显示驱动、NAND Flash驱动、USB驱动原理相同。硬件上,更换了网卡芯片、电源管理芯片、音频解码芯片、USB芯片和NAND Flash芯片,增加了HDMI驱动芯片。
Linux系统和Android系统使用相同的引导程序xloader、uboot,设计不同的kernel和文件系统,修改不同的启动参数即可选择Linux系统或Android系统。
移植Android系统到嵌入式Linux平台设备,主要有两种方法:一种是在使用的内核里打Android补丁,补丁量比较大,出错的机会也大,移植时间也会很长;另一种是使用开源的Android系统,将平台的驱动和配置等打补丁,添加到Android系统中,本文采用了这种方法。
1.1 下载Android源码和建立编译环境
主机系统: Linux Fedora 10.
(1) 下载Android源码
$ yum install git?core
$ curl http://android.git.kernel.org/repo 》~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir rowboat?android
$ cd rowboat?android
$ repo init ?u git://gitorious.org/rowboat/manifest.git ?m rowboat?donut.xml
$ repo sync
(2) 建立编译环境
① 准备需要的开发包:
Git 1.5.4 or newer and the GNU Privacy Guard.
JDK 5.0, update 12 or higher. Java 6 is not supported, because of incompaTIbiliTIes with @Override.
flex, bison, gperf, libsdl?dev, libesd0?dev, libwxgtk2.6?dev (optional), build?essential, zip, curl, minicom, tftp?server, uboot?mkimage
② 对于Fedora 10使用如下命令:
$ yum install bison gperf flex xorg?x11?proto?devel readline?devel
下载jdk?1_5_0_22?linux?i586.bin,安装在/usr/local/hualu/android/rowboat?android/jdk1.5.0_22下。
图2 主机框架
修改java环境变量:
export JAVA_HOME=/usr/local/hualu/android/rowboat?android/jdk1.5.0_22
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
For Ubuntu 32?bit use such command:
$ sudo apt?get install git?core gnupg sun?java5?jdk flex bison gperf libsdl?dev libesd0?dev libwxgtk2.6?dev build?essential zip curl libncurses5?dev zlib1g?dev minicom tftpd uboot?mkimage
Ubuntu Intrepid (8.10) users may need a newer version of libreadline:
$ sudo apt?get install lib32readline5?dev
下载jdk?1_5_0_22?linux?i586.bin,安装在/usr/local/hualu/android/rowboat?android/jdk1.5.0_22下。
修改java环境变量:
export JAVA_HOME=/usr/local/hualu/android/rowboat?android/jdk1.5.0_22
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/ lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH
③ 建立rootfs:
$ make TARGET_PRODUCT=omap3?evm TARGET_BUILD_VARIANT=tests ?j8
$ cd out/target/product/omap3evm
$ mkdir android_rootfs
$ cp ?r root/* android_rootfs
$ cp ?r system android_rootfs
$ sudo ////build/tools/mktarball.sh ///host/linux?x86/bin/fs_get_stats android_rootfs 。 rootfs rootfs.tar.bz2
④ 建立kernel:
$make ARCH=arm omap3_evm_android_defconfig
1.2 移植Android系统的主要流程
① 首先到http://code.google.com/p/rowboat/wiki/Source网站,参考说明下载2.6.29 kernel和omap3evm?donut?2009?12?22.tar.bz2 文件系统。
如果只下载TI OMAP3EVM 内核,可以使用git clone git://gitorious.org/rowboat/kernel.git.
② 修改uboot的启动参数:
setenv bootargs ?mem=128M console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait?。
③ 把平台上在TI OMAP3EVM中修改的内容打补丁,移植到步骤①下载的内核中,重点是针对平台的驱动和显示部分。
④ 拷贝修改后内核的uImage和文件系统到的SD卡中,从SD卡启动Android系统。
⑤ 启动后首先出现机器人LOGO,然后出现“android”字体LOGO,最后出现Android主界面。
⑥ 优化、修改启动界面,如需要从NAND Flash启动则修改相应的启动参数和文件系统等。
技术专区
- Alexa语音服务软件扩展STM32Cube
- 结合DNN API驱动未来神经网络应用的解决方案
- 针对于高端移动通信和汽车市场的四集群设计
- 一款基于帧捕捉的开源图形调试器应用设计
- 即将成为标准配置的最新安全技术:后视摄像系统