基于Android系统的家庭体感娱乐平台

2013-05-25 20:43:11来源: 互联网
引言

  本文基于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启动则修改相应的启动参数和文件系统等。
1.3 主机框架

  主机框架如图2所示。

  1.4 主机驱动

  主机基于Android系统,驱动主要包括网卡驱动、HDMI驱动、音频驱动、显示驱动。

  1.4.1 网卡驱动

  网卡原理图如图3所示。

  

  图3 网卡原理图

  uboot中修改支持LAN9220网卡:针对硬件原理图修改初始化I/O口、 IRQ口,根据OMAP3530手册的寄存器描述调整配置,完成网卡ID号识别、网卡初始化和makefile修改。

  内核中修改支持LAN9220网卡: 从原理图确认网卡访问基址为0x18000000(gpmc_cs3的基址),这个是物理地址,总线位宽为16,中断引脚为GPMC_IRQ(对应OMAP3530的GPIO65),增加LAN9220平台设备,配置内核将LAN9220静态编译进内核。

  1.4.2 HDMI驱动

  HDMI驱动包括平台设备注册和中断、热插拔初始化、HDMI音频设备注册和初始化、视频分辨率设置和初始化,参考AD9889B_AD9389B Programmer?s Guide.pdf和EIA/CEA861B标准。

  1.4.3 音频驱动

  uboot中对音频的输出设置:

  函数int misc_init_r(void)中*((uint *) 0x4807402c)=0x1f10; // 0x1f10或 0x1f07

  根据芯片手册设置为低位0x10对应的音频采样频率fs为44.1 kHz,128fs;低位0x07对应的音频采样频率fs为44.1 kHz,256fs.

  计算方法为:

  96 MHz/(16 + 1)=5.647 MHz

  MCLK=44.1 kHz×128=5.644 8 MHz(误差较小)

  96 MHz/(07 + 1)=12 MHz

  MCLK=44.1 kHz×256=11.289 6 MHz(误差较大)

  实际应用中两者都可以,我们使用的是采样频率fs为44.1 kHz,128fs.

  在内核中对HDMI音频进行初始化,并修改音频驱动。在函数static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,unsigned int fmt)中令:

  regs-》srgr1 |=1;//1或3.为1对应音频采样频率为44.1 kHz,128fs;为3对应音频采样频率为44.1 kHz,256fs

  计算方法为:

  BCLK=fs×iis位数×channel数

  =44.1 kHz×32×2=2.822 4 MHz

  MCLK/BCLK=1+X

  得到:

  X=1→MCLK=5.644 8 MHz

  X=3→MCLK=11.289 6 MHz

  此处必须和uboot中配置一致,统一为44.1 kHz,128fs,或是44.1 kHz,256fs,这里使用的是采样频率fs为44.1 kHz,128fs.

  1.4.4 显示驱动

  DSS显示驱动原理:

  FB0→GFX→LCD,

  FB1→VID1→LCD

  复制GFX层到HDMI和TV,实现HDMI和TV的CVBS同时输出相同视频内容。

  FB0→GFX→HDMI→HDMI→VID1→TV→TV

  其中,FB为FrameBuffer,GFX为图形显示层,VID为视频显示层。

  2 操控手柄识别和游戏内容

  2.1 操控的手柄识别

  Android系统识别体感手柄,需要确认内核配置:

  Device Drivers??﹥Input device support

  《*》Event interface

  《*》Event debugging

  Device Drivers??﹥HID Devices

  《*》 Generic HID support

  《*》 USB Human Interface Device (full HID) support

  2.2 游戏内容

  主机上已有100余款家庭休闲体感游戏,以标准flash为游戏格式。

  3 平台软件SDK

  平台软件SDK是一个面向嵌入式终端的软件SDK,可跨平台移植,移植后可运行在嵌入式主机、蓝光播放器、高清机顶盒上。这些平台也可以使用体感手柄体验我们的体感游戏。

  3.1 平台软件SDK开发

  平台软件SDK开发步骤:

  ① 编译移植开源Gnash flash播放器到我们平台上,实现flash视频可以正常播放,打造出我们自己的hopoplayer播放器,支持flash格式的游戏。

  ② 建立hopoplayer播放器移植框架,方便移植到其他平台使用。

  3.2 平台软件SDK特点

  hopoplayer播放器具有如下特点:

  ◆ 支持SWF v8、action script 2.0.

  ◆ 支持H263、H264等FLV视频。

  ◆ 支持MP3、XML.

  ◆ 具有良好的可移植性,支持Linux、Android,支持x86、ARM、 MIPS、SH4等CPU.

  ◆ 可播放YouTube、优酷等网站FLV视频。

  ◆ 运行速度快,内存消耗少。

  结语

  研发了一款嵌入式游戏主机,能够使用我们设计的体感手柄操作界面和体感游戏。通过平台软件SDK的 hopoplayer播放器,可以方便地实现移植hopoplayer到其他平台使用。嵌入式主机、体感手柄、平台软件SDK,打造了完整的家庭体感娱乐平台。高清机顶盒或者蓝光播放器、体感手柄、平台软件SDK,也同样可以实现我们的家庭体感娱乐平台。

关键字:Android系统  家庭体感  娱乐平台

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2013/0525/article_18600.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Android系统
家庭体感
娱乐平台

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved