1.Android源码的版本
android源码的版本一定要是android-4.0.3的master分支,经过验证android-4.0.1源码不能在pandaboard开发板上正常运行。
2.开发机编译器版本
开发主机上编译器的版本最好采用gcc-4.4.6版本,如果开发机的linux版本为Ubuntu11.10,它自带的编译器版本为gcc-4.6.1,编译android-4.0.3会出现很多错误,通过修改源码也可以正确编译出目标文件,但是考虑到android源码的统一性,采用gcc-4.4.1版本编译器进行编译,这就需要在ubuntu11.10上安装gcc-4.4.1编译器。经过验证采用gcc-4.4.1编译android-4.0.3没有任何编译错误。
3.下载GPU SGX540的二进制包
下载地址为:其中针对pandaboard有两个版本,分别对应android-4.0.1和android-4.0.3,毫无疑问我们应选择对应android-4.0.3的那个版本,解压后为一个脚本文件extract-imgtec-panda.sh,执行该脚本文件将生成vendor目录,将该目录拷贝到android-4.0.3源码根目录下即可,再进行编译,大约经过2个小时即可编译完成。
4.android-4.0.3文件系统的安装
因为在此之前使用的时android-2.3,SD卡分区为boot,rootfs,media三个分区,boot分区存放的是MLO,u-boot.bin和uImage。rootfs为主文件系统,media分区存放私有数据文件。当android-4.0.3编译完成后,在进行文件系统更新时想偷一下懒,用新的uImage文件替换boot分区中的uImage,用android-4.0.3/out/target/product/panda/root目录中的文件替换rootfs分区的文件,用android-4.0.3/out/target/product/panda/system目录文件替换rootfs分区中system目录,再用android-4.0.3/out/target/product/panda/data目录文件替换rootfs分区中的data目录,经过验证这样系统不能正常启动。
经过以上实验失败后决定还是采用Android-4.0.3/device/ti/panda/README文件中说明的方法进行文件系统的烧写。该文件详细说明了如何进行新文件系统的更新,使用usbboot和fastboot工具进行文件系统的更新。usbboot目录为:Android-4.0.3/device/ti/panda/usbboot,fastboot在编译完成后生成,目录为android-4.0.3/out/host/linux-x86/bin/fastboot。
遇到的问题:
使用fastboot烧写文件系统的前提时目标板已进入fastboot模式,按README文件的说明是通过usbboot工具把bootloader.bin文件通过usb接口传送到目标板的内存中并运行,这时目标板就已经进入了fastboot模式。问题是自己使用的系统为ubuntu11.10的32位版本,但是usbboot为64位的应用程序,故在ubuntu11.1032系统上无法执行,只能通过其他办法实现。
解决方法:
在android-2.3版本使用的SD卡的基础上使目标板进入fastboot模式,把android-4.0.3/device/ti/panda/bootloader.bin文件复制一份重命名为u-boot.bin,使用新的u-boot.bin替换SD卡中的u-boot.bin,这样目标启动后就会进入fastboot模式,再使用fastboot工具按照README文件的说明进行文件系统的更新后,android-4.0.3就会在pandaboardOMAP4430开发板上正常运行。