0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

采用Android系統(tǒng)與嵌入式ARM硬件開(kāi)發(fā)實(shí)現(xiàn)家庭體感娛樂(lè)平臺(tái)

電子設(shè)計(jì) ? 來(lái)源:郭婷 ? 作者:電子設(shè)計(jì) ? 2018-12-05 08:10 ? 次閱讀

引言

本文基于TI公司的OMAP3515開(kāi)源平臺(tái)設(shè)計(jì)了一款客廳游戲主機(jī),開(kāi)源軟件平臺(tái)使用Linux系統(tǒng),獨(dú)立移植了更流行、界面更友好的Android系統(tǒng),開(kāi)發(fā)了平臺(tái)軟件SDK,研發(fā)了hopoplayer播放器,支持Flash格式的游戲,并建立了友好的移植框架,可方便地移植到其他平臺(tái)使用,主機(jī)使用體感手柄控制顯示界面和操控體感游戲。完整的家庭體感娛樂(lè)平臺(tái)如圖1所示。

圖1 家庭體感娛樂(lè)平臺(tái)

1 客廳游戲主機(jī)

客廳游戲主機(jī)基于TI公司的OMAP3515開(kāi)源平臺(tái)設(shè)計(jì)。軟件上,可以選擇Android系統(tǒng),也可以選擇Linux系統(tǒng)。Android系統(tǒng)也是基于開(kāi)源Linux系統(tǒng)內(nèi)核,所以設(shè)計(jì)網(wǎng)卡驅(qū)動(dòng)、HDMI驅(qū)動(dòng)、音頻驅(qū)動(dòng)、顯示驅(qū)動(dòng)、NAND Flash驅(qū)動(dòng)、USB驅(qū)動(dòng)原理相同。硬件上,更換了網(wǎng)卡芯片、電源管理芯片、音頻解碼芯片、USB芯片和NAND Flash芯片,增加了HDMI驅(qū)動(dòng)芯片。

Linux系統(tǒng)和Android系統(tǒng)使用相同的引導(dǎo)程序xloader、uboot,設(shè)計(jì)不同的kernel和文件系統(tǒng),修改不同的啟動(dòng)參數(shù)即可選擇Linux系統(tǒng)或Android系統(tǒng)。

移植Android系統(tǒng)到嵌入式Linux平臺(tái)設(shè)備,主要有兩種方法:一種是在使用的內(nèi)核里打Android補(bǔ)丁,補(bǔ)丁量比較大,出錯(cuò)的機(jī)會(huì)也大,移植時(shí)間也會(huì)很長(zhǎng);另一種是使用開(kāi)源的Android系統(tǒng),將平臺(tái)的驅(qū)動(dòng)和配置等打補(bǔ)丁,添加到Android系統(tǒng)中,本文采用了這種方法。

1.1 下載Android源碼和建立編譯環(huán)境

主機(jī)系統(tǒng): 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) 建立編譯環(huán)境

① 準(zhǔn)備需要的開(kāi)發(fā)包:

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

② 對(duì)于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 主機(jī)框架

修改java環(huán)境變量:

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環(huán)境變量:

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系統(tǒng)的主要流程

① 首先到http://code.google.com/p/rowboat/wiki/Source網(wǎng)站,參考說(shuō)明下載2.6.29 kernel和omap3evmdonut20091222.tar.bz2 文件系統(tǒng)。

如果只下載TI OMAP3EVM 內(nèi)核,可以使用git clone git://gitorious.org/rowboat/kernel.git.

② 修改uboot的啟動(dòng)參數(shù):

setenv bootargs mem=128M console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw init=/init rootwait。

③ 把平臺(tái)上在TI OMAP3EVM中修改的內(nèi)容打補(bǔ)丁,移植到步驟①下載的內(nèi)核中,重點(diǎn)是針對(duì)平臺(tái)的驅(qū)動(dòng)和顯示部分。

④ 拷貝修改后內(nèi)核的uImage和文件系統(tǒng)到的SD卡中,從SD卡啟動(dòng)Android系統(tǒng)。

⑤ 啟動(dòng)后首先出現(xiàn)機(jī)器人LOGO,然后出現(xiàn)"android"字體LOGO,最后出現(xiàn)Android主界面。

⑥ 優(yōu)化、修改啟動(dòng)界面,如需要從NAND Flash啟動(dòng)則修改相應(yīng)的啟動(dòng)參數(shù)和文件系統(tǒng)等。

1.3 主機(jī)框架

主機(jī)框架如圖2所示。

1.4 主機(jī)驅(qū)動(dòng)

主機(jī)基于Android系統(tǒng),驅(qū)動(dòng)主要包括網(wǎng)卡驅(qū)動(dòng)、HDMI驅(qū)動(dòng)、音頻驅(qū)動(dòng)、顯示驅(qū)動(dòng)。

1.4.1 網(wǎng)卡驅(qū)動(dòng)

網(wǎng)卡原理圖如圖3所示。

采用Android系統(tǒng)與嵌入式ARM硬件開(kāi)發(fā)實(shí)現(xiàn)家庭體感娛樂(lè)平臺(tái)

圖3 網(wǎng)卡原理圖

uboot中修改支持LAN9220網(wǎng)卡:針對(duì)硬件原理圖修改初始化I/O口、 IRQ口,根據(jù)OMAP3530手冊(cè)的寄存器描述調(diào)整配置,完成網(wǎng)卡ID號(hào)識(shí)別、網(wǎng)卡初始化和makefile修改。

內(nèi)核中修改支持LAN9220網(wǎng)卡: 從原理圖確認(rèn)網(wǎng)卡訪問(wèn)基址為0x18000000(gpmc_cs3的基址),這個(gè)是物理地址,總線位寬為16,中斷引腳為GPMC_IRQ(對(duì)應(yīng)OMAP3530的GPIO65),增加LAN9220平臺(tái)設(shè)備,配置內(nèi)核將LAN9220靜態(tài)編譯進(jìn)內(nèi)核。

1.4.2 HDMI驅(qū)動(dòng)

HDMI驅(qū)動(dòng)包括平臺(tái)設(shè)備注冊(cè)和中斷、熱插拔初始化、HDMI音頻設(shè)備注冊(cè)和初始化、視頻分辨率設(shè)置和初始化,參考AD9889B_AD9389B Programmers Guide.pdf和EIA/CEA861B標(biāo)準(zhǔn)。

1.4.3 音頻驅(qū)動(dòng)

uboot中對(duì)音頻的輸出設(shè)置:

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

根據(jù)芯片手冊(cè)設(shè)置為低位0x10對(duì)應(yīng)的音頻采樣頻率fs為44.1 kHz,128fs;低位0x07對(duì)應(yīng)的音頻采樣頻率fs為44.1 kHz,256fs.

計(jì)算方法為:

96 MHz/(16 + 1)=5.647 MHz

MCLK=44.1 kHz×128=5.644 8 MHz(誤差較?。?/p>

96 MHz/(07 + 1)=12 MHz

MCLK=44.1 kHz×256=11.289 6 MHz(誤差較大)

實(shí)際應(yīng)用中兩者都可以,我們使用的是采樣頻率fs為44.1 kHz,128fs.

在內(nèi)核中對(duì)HDMI音頻進(jìn)行初始化,并修改音頻驅(qū)動(dòng)。在函數(shù)static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,unsigned int fmt)中令:

regs->srgr1 |=1;//1或3.為1對(duì)應(yīng)音頻采樣頻率為44.1 kHz,128fs;為3對(duì)應(yīng)音頻采樣頻率為44.1 kHz,256fs

計(jì)算方法為:

BCLK=fs×iis位數(shù)×channel數(shù)

=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中配置一致,統(tǒng)一為44.1 kHz,128fs,或是44.1 kHz,256fs,這里使用的是采樣頻率fs為44.1 kHz,128fs.

1.4.4 顯示驅(qū)動(dòng)

DSS顯示驅(qū)動(dòng)原理:

FB0→GFX→LCD,

FB1→VID1→LCD

復(fù)制GFX層到HDMI和TV,實(shí)現(xiàn)HDMI和TV的CVBS同時(shí)輸出相同視頻內(nèi)容。

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

其中,F(xiàn)B為FrameBuffer,GFX為圖形顯示層,VID為視頻顯示層。

2 操控手柄識(shí)別和游戲內(nèi)容

2.1 操控的手柄識(shí)別

Android系統(tǒng)識(shí)別體感手柄,需要確認(rèn)內(nèi)核配置:

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 游戲內(nèi)容

主機(jī)上已有100余款家庭休閑體感游戲,以標(biāo)準(zhǔn)flash為游戲格式。

3 平臺(tái)軟件SDK

平臺(tái)軟件SDK是一個(gè)面向嵌入式終端的軟件SDK,可跨平臺(tái)移植,移植后可運(yùn)行在嵌入式主機(jī)、藍(lán)光播放器、高清機(jī)頂盒上。這些平臺(tái)也可以使用體感手柄體驗(yàn)我們的體感游戲。

3.1 平臺(tái)軟件SDK開(kāi)發(fā)

平臺(tái)軟件SDK開(kāi)發(fā)步驟:

① 編譯移植開(kāi)源Gnash flash播放器到我們平臺(tái)上,實(shí)現(xiàn)flash視頻可以正常播放,打造出我們自己的hopoplayer播放器,支持flash格式的游戲。

② 建立hopoplayer播放器移植框架,方便移植到其他平臺(tái)使用。

3.2 平臺(tái)軟件SDK特點(diǎn)

hopoplayer播放器具有如下特點(diǎn):

◆ 支持SWF v8、action script 2.0.

◆ 支持H263、H264等FLV視頻。

◆ 支持MP3、XML.

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

◆ 可播放YouTube、優(yōu)酷等網(wǎng)站FLV視頻。

◆ 運(yùn)行速度快,內(nèi)存消耗少。

結(jié)語(yǔ)

研發(fā)了一款嵌入式游戲主機(jī),能夠使用我們?cè)O(shè)計(jì)的體感手柄操作界面和體感游戲。通過(guò)平臺(tái)軟件SDK的 hopoplayer播放器,可以方便地實(shí)現(xiàn)移植hopoplayer到其他平臺(tái)使用。嵌入式主機(jī)、體感手柄、平臺(tái)軟件SDK,打造了完整的家庭體感娛樂(lè)平臺(tái)。高清機(jī)頂盒或者藍(lán)光播放器、體感手柄、平臺(tái)軟件SDK,也同樣可以實(shí)現(xiàn)我們的家庭體感娛樂(lè)平臺(tái)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5054

    文章

    18917

    瀏覽量

    300911
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3909

    瀏覽量

    126922
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11181

    瀏覽量

    208505
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何學(xué)習(xí)嵌入式系統(tǒng)(基于ARM平臺(tái)

    的東西都需要我們得新再裝。 3、把軟件內(nèi)核或應(yīng)用文件系統(tǒng)等東西燒到嵌入式系統(tǒng)硬件平臺(tái)中的ROM中就實(shí)現(xiàn)
    發(fā)表于 02-24 22:40

    Android嵌入式開(kāi)發(fā)必知的幾個(gè)關(guān)鍵點(diǎn)

    Android智能終端開(kāi)發(fā)并不是很多。Android嵌入式智能操作系統(tǒng)是基于Linux內(nèi)核和驅(qū)動(dòng)的,對(duì)于HTC、華為等公司
    發(fā)表于 06-28 11:10

    Android嵌入式開(kāi)發(fā)必知的幾個(gè)關(guān)鍵點(diǎn)及詳細(xì)資料教程

    Android智能終端開(kāi)發(fā)并不是很多。Android嵌入式智能操作系統(tǒng)是基于Linux內(nèi)核和驅(qū)動(dòng)的,對(duì)于HTC、華為等公司
    發(fā)表于 06-28 11:15

    采用嵌入式系統(tǒng)實(shí)現(xiàn)手機(jī)編程開(kāi)發(fā)平臺(tái)

    了移動(dòng)終端、嵌入式系統(tǒng)、數(shù)字信號(hào)處理以及通信協(xié)議設(shè)置等多項(xiàng)技術(shù)。手機(jī)編程開(kāi)發(fā)平臺(tái)是集合了通信技術(shù)、嵌入式技術(shù)、電子技術(shù)、軟件工程、操作
    發(fā)表于 07-22 06:13

    嵌入式掌上娛樂(lè)系統(tǒng)實(shí)現(xiàn)原理是什么?

    在UP-TECH S3C2410 DVK1.1 開(kāi)發(fā)平臺(tái)下,提出了一個(gè)觸摸嵌入式掌上娛樂(lè)系統(tǒng)
    發(fā)表于 08-19 06:27

    Android系統(tǒng)嵌入式游戲主機(jī)怎么研發(fā)?

    播放器,支持Flash格式的游戲,并建立了友好的移植框架,可方便地移植到其他平臺(tái)使用,主機(jī)使用手柄控制顯示界面和操控游戲。完整的
    發(fā)表于 03-30 07:37

    Android嵌入式智能操作系統(tǒng)簡(jiǎn)析

    一:首先你必須了解ARM平臺(tái) Android 移植與驅(qū)動(dòng)核心開(kāi)發(fā),當(dāng)然也可以是X86和其他的平臺(tái),不過(guò)其他
    發(fā)表于 11-05 09:21

    32位ARM7嵌入式硬件平臺(tái)簡(jiǎn)介

    32位ARM7嵌入式硬件平臺(tái)簡(jiǎn)介 ARM7嵌入
    發(fā)表于 02-10 10:49 ?68次下載

    基于Android系統(tǒng)家庭娛樂(lè)平臺(tái)

    介紹一款基于Android系統(tǒng)家庭游戲主機(jī),使用嵌入式ARM硬件
    發(fā)表于 06-21 10:59 ?1963次閱讀
    基于<b class='flag-5'>Android</b><b class='flag-5'>系統(tǒng)</b>的<b class='flag-5'>家庭</b><b class='flag-5'>體</b><b class='flag-5'>感</b><b class='flag-5'>娛樂(lè)平臺(tái)</b>

    Android家庭娛樂(lè)平臺(tái)的設(shè)計(jì)方案

    了hopoplayer播放器,支持Flash格式的游戲,并建立了友好的移植框架,可方便地移植到其他平臺(tái)使用,主機(jī)使用手柄控制顯示界面和操控
    發(fā)表于 10-24 11:40 ?0次下載
    <b class='flag-5'>Android</b><b class='flag-5'>家庭</b><b class='flag-5'>體</b><b class='flag-5'>感</b><b class='flag-5'>娛樂(lè)平臺(tái)</b>的設(shè)計(jì)方案

    ARM嵌入式系統(tǒng)硬件設(shè)計(jì)

    研究基于ARM嵌入式系統(tǒng)硬件的設(shè)計(jì),重點(diǎn)需要設(shè)置嵌入式計(jì)算機(jī)通信系統(tǒng)里面涉及到的所有控制接口,
    發(fā)表于 02-12 15:56 ?3次下載

    ARM嵌入式系統(tǒng)開(kāi)發(fā)Android開(kāi)發(fā)入門

    介紹了ARM嵌入式系統(tǒng)開(kāi)發(fā)Android開(kāi)發(fā)入門基礎(chǔ)。
    發(fā)表于 03-17 11:46 ?21次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>之<b class='flag-5'>Android</b><b class='flag-5'>開(kāi)發(fā)</b>入門

    ARM嵌入式系統(tǒng)開(kāi)發(fā)_Android應(yīng)用開(kāi)發(fā)入門(基礎(chǔ)版)

    ARM嵌入式系統(tǒng)開(kāi)發(fā)_Android應(yīng)用開(kāi)發(fā)入門(基礎(chǔ)版)(嵌入式開(kāi)發(fā)板教程)-該文檔為
    發(fā)表于 08-04 11:02 ?0次下載
    <b class='flag-5'>ARM</b><b class='flag-5'>嵌入式</b><b class='flag-5'>系統(tǒng)開(kāi)發(fā)</b>_<b class='flag-5'>Android</b>應(yīng)用<b class='flag-5'>開(kāi)發(fā)</b>入門(基礎(chǔ)版)

    嵌入式ARM開(kāi)發(fā)教程之ARM9微控制器LPC3180的軟硬件平臺(tái)的設(shè)計(jì)

    嵌入式ARM開(kāi)發(fā)教程之ARM9微控制器LPC3180的軟硬件平臺(tái)的設(shè)計(jì)(
    發(fā)表于 08-04 11:28 ?11次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>ARM</b><b class='flag-5'>開(kāi)發(fā)</b>教程之<b class='flag-5'>ARM</b>9微控制器LPC3180的軟<b class='flag-5'>硬件</b><b class='flag-5'>平臺(tái)</b>的設(shè)計(jì)

    ARM Cortex-A53嵌入式開(kāi)發(fā)平臺(tái)Android手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《ARM Cortex-A53嵌入式開(kāi)發(fā)平臺(tái)Android手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 04-28 15:10 ?0次下載