[经验] Beaglebone外围电路设计之Android4.0.3 ICS的移植

523335234   2012-10-18 15:20 楼主
起初打算使用QT来做界面,但是随着NOKIA的衰落,QT的前景也变得暗淡,关于这方面的资料也不多。
Android不仅界面华丽,而且它的功能库包含了众多开源产品,包括WebKit,OpenCore,SQlite等。
Opencore除了能解析一般的本地多媒体文件外,还提供了对网络i流媒体的解码功能。网络流媒体主要有HTTP,RTP和RTSP等。
而小车的视频传输正是基于RTSP协议。基于此,在Beaglebone上改用Android。其实Android也是基于Linux的,Android内核
的编译和编译一般的linux并没有区别。但是Linux内核仅是Android架构中的一层。整个Android框架如下:

20121018fvwfbxfaj6p5vfop.jpg

整个开发过程包括每个层之间的框架接口编写,涉及C,C++,JAVA编程。
以下是在Beaglebone上移植Android的一点心得分享:
第一步:下载android源码, TI官网有提供。
地址如下:


下载环境:UBUNTU 10.04 (我用WIN7下载3两次卡死在了99.99% PS:为了后面编译,虚拟机的空间要足够大(25G以上)

下载完成解压前,得先安装需要的软件。

sudo gedit /etc/apt/sources.list
在最后一行加入:

接下来:

$ sudo apt-get update
$ sudo apt-get install git-core gnupg sun-java6-jdk flexbison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curllibncurses5-dev zlib1g-dev minicom tftpd uboot-mkimage expect

安装软件时,安步骤走即可。
之后就可以安装下载好的 android源码啦。
步骤:
  $ mkdir $HOME/rowboat-android  $ cd $HOME/rowboat-android  $ chmod a+x TI-Android-ICS-4.0.3_AM335x_3.0.1.bin  $ ./TI-Android-ICS-4.0.3_AM335x_3.0.1.bin

大概15分钟后,就可以安装完成。

之后得到包括U-boot源码,Linux源码以及android文件系统源码。

编译源码前,得先安装好交叉编译工具。
工具的位置:$HOME/rowboat-android/TI-Android-ICS-4.0.3_AM335x_3.0.1/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin
可以在/etc/environment之内加入也可以用如下方式:
$ export PATH=$HOME/rowboat-android/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin:$PATH

编译Bootloader:  $ cd /u-boot
• Execute following commands:
  $ make CROSS_COMPILE=arm-eabi- distclean
  $ make CROSS_COMPILE=arm-eabi- am335x_evm_config
  $ make CROSS_COMPILE=arm-eabi-

编译内核:
• Change directory to kernel
  $ cd /kernel
• Execute following commands
  $ make ARCH=arm CROSS_COMPILE=arm-eabi- distclean
  $ make ARCH=arm CROSS_COMPILE=arm-eabi- am335x_evm_android_defconfig
  $ make ARCH=arm CROSS_COMPILE=arm-eabi- uImage

编译Android文件系统稍微复杂一点:
1 配置好java环境
安装插件:
sudo apt-getinstall sun-java6-jdk
可以通过下面的方法设置机器的默认jdk版本:
sudoupdate-alternatives --config java 选auto java
2.编辑:/etc/environment 文件, 用命令 sudogedit/etc/environment 打开
environment文件,修改:
PATH="/usr/lib/jvm/bin:$PATH"
CLASSPATH="/usr/lib/jvm/lib"
JAVA_HOME="/usr/lib/jvm"
根据系统的具体路径修改。

3 给文件系统 Integration RowboPERF• 在android源码中下载:
  git clone git://gitorious.org/rowboat/rowboperf.git

4 开始编译:
make TARGET_PRODUCT= OMAPES=4.x -j  
注:N为编译所在主机的处理器数量乘以2。

最后,经过漫长的等待,约6到7个小时后编译完成。

制作用于启动的SD卡:
1 得到 rootfs.tar.bz2:
cd out/target/product/
mkdir android_rootfs
cp -r root/* android_rootfs
cp -r system android_rootfs
../../../../build/tools/mktarball.sh ../../../host/linux-x86/bin/fs_get_stats android_rootfs . rootfs rootfs.tar.bz2

2 制作

mkdir image_folder
cp uEnv.txt image_folder
cp kernel/arch/arm/boot/uImage image_folder
cp u-boot/u-boot.img image_folder
cp u-boot/MLO image_folder
cp out/target/product//rootfs.tar.bz2 image_folder
cp Media_Clips image_folder
sudo ./mkmmc-android.sh /dev/sd MLO u-boot.img uImage uEnv.txt rootfs.tar.bz2 Media_Clips


注:uEnv.txt  Media_Clips  mkmmc-android.sh 可以从下载android源码同一个地址中下载到。最简单的就是下载一个现成的prebuild-image,从中解压得到。

在下一篇修改源码使得支持自制扩展板的硬件。

回复评论 (5)

图片不能显示呀,你重新上传试试!
点赞  2012-10-18 15:25
原文编辑不了了。图片在这补上: 1.gif
点赞  2012-10-18 15:48
  加油加油!
生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰
点赞  2012-10-18 18:47
呵呵  惭愧啊 计划赶不上变化
点赞  2012-10-18 22:40
支持,搞android4了。
点赞  2012-10-19 10:10
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复