在cubieboard2双卡版上从零构建Android4.2.2系统

 板子买了一段时间,终于有时间可以玩玩了,论坛上找浪费了很多时间。把虚拟机环境搭建起来,编译好镜像就可以直接使用烧写工具烧写到TF卡上了。由于买的是双TF卡插槽,没有nand,所以只能在TF卡上制作镜像了。制作过程参考官方文档,好好总结一下,一来以后自己再做时图懒图方便,二来可以方便后来人。

主要可以分为一下几个步骤:

一、搭建编译环境

可以在XP或win7系统上安装虚拟机,在虚拟机中安装交叉编译工具来编译Android,一份Android代码编译下来,至少占50G左右的空间,所以要准备

足够的空间,也可以直接装Ubuntu。

二、源码下载并编译

图方便,直接从cubieboard官方网站的FTP下载,有时间可以从git下载,可以同步更新。

三、使用烧写工具将固件烧入到TF卡上。


一、搭建编译环境

[cpp]  view plain copy
  1. $sudo apt-get update  
  2. $sudo apt-get upgrade  
  3. $sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linuxgnueabihf gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev  
  4. $sudo apt-get install build-essential git u-boot-tools texinfo texlive ccache zlib1g-dev gawk bison flex gettext uuid-dev  
  5. $sudo apt-get install ia32-libs  
  6. $sudo apt-get install ncurses-dev  

1.1 首先安装虚拟机及Ubuntu

要安装vmware_tools时在win和Ubuntu之间拷贝文件。

1.2 安装JDK

编译Android需要安装JDK工具,因此安装好虚拟机后需要安装这个工具。可以到官方网站上去下:

[cpp]  view plain copy
  1. $wget dl.cubieboard.org/software/tools/android/jdk1.6.0_33.tar.gz  
将其解压到/work/tools目录下,然后修改etc/profile文件设置一些环境配置变量,添加以下配置变量:
[cpp]  view plain copy
  1. JAVA_HOME=/work/tools/jdk1.6.0_33  
  2. export JRE_HOME=/work/tools/jdk1.6.0_33/jre  
  3. export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH  
  4. export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH  

然后source以下:$source etc/profile

1.3 编译Android需要64位的,对于其他版本的需要安装以下包来支持编译:

[cpp]  view plain copy
  1. sudo apt-get install git gnupg flex bison gperf build-essential \  
  2.   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \  
  3.   libx11-dev:i386 libreadline6-dev:i386 g++-multilib mingw32 tofrodos \  
  4.   python-markdown libxml2-utils xsltproc zlib1g-dev:i386  
1.4 然后安装交叉编译工具工具链:

[cpp]  view plain copy
  1. 1. $sudo apt-get update   
  2. 2. $sudo apt-get upgrade   
  3. 3. $sudo apt-get install build-essential u-boot-tools uboot-mkimage binutils-arm-linuxgnueabihf gcc-arm-linux-gnueabi gcc-arm-linux-gnueabihf cpp-arm-linux-gnueabihf libusb-1.0-0 libusb-1.0-0-dev git wget fakeroot kernel-package zlib1g-dev libncurses5-dev   
  4. 4. $sudo apt-get install build-essential git u-boot-tools texinfo texlive ccache zlib1g-dev gawk   
  5. bison flex gettext uuid-dev   
  6. 5. $sudo apt-get install ia32-libs   
  7. 6. $sudo apt-get install ncurses-dev  

二、源码下载并编译

2.1 可以使用git建立自己的仓库下载,也可以直接从官方网站上下载:

http://dl.cubieboard.org/software/a20-cubieboard/android/CubieBoard2_SDK_20140508.tar.gz

2.2 下载后解压源码:

[cpp]  view plain copy
  1. $tar xvzf CubieBoard2_SDK_20140508.tar.gz  
2.3 拷贝配置文件:
[cpp]  view plain copy
  1. $cd lichee  
  2. $cp linux-3.4/arch/arm/configs/cubieboard2_config linux-3.4/.config  
2.4 编译内核
[cpp]  view plain copy
  1. ./build.sh -p sun7i_android  
当出现以下信息时,说明成功编译:

INFO: build u-boot OK. 
INFO: build rootfs ... 
INFO: skip make rootfs for android 
INFO: build rootfs OK. 
INFO: build lichee OK.

2.5 编译Android部分:输入 15 (15. sugar_cubieboard2-eng)

[cpp]  view plain copy
  1. $cd android   
  2. $source build/envsetup.sh   
  3. $lunch  
2.6 编译和打包:将uboot、kernel、rootfs等镜像打包成img文件

[cpp]  view plain copy
  1. $extract-bsp  
  2. $make -j8  
  3. $pack  
最后会打印固件生成的位置,以下为我的固件生成的位置:/lichee/tools/pack/sun7i_android_sugar-cubieboard2.img


三、使用烧写工具将固件烧入到TF卡上。

3.1 烧写工具下载地址:http://pan.baidu.com/s/1eQtb4eI

3.2 在PC win环境下插入读卡器,将其他多余的USB设备卸载掉,打开 PhoenixCard.exe,按照以下进行设置:


完成设置后,点击烧录,直到出现如下面图片一样的现实就表明成功了


3.3 从TF卡启动Android,在PC上安装串口环境,使用putty


启动成功信息:

[cpp]  view plain copy
  1. base bootcmd=run setargs_mmc boot_normal  
  2. bootcmd set setargs_mmc  
  3. key 0  
  4. recovery key high 6, low 4  
  5. cant find fstbt value  
  6. to be run cmd=run setargs_mmc boot_normal  
  7. the user data'magic is bad  
  8. WORK_MODE_BOOT  
  9. WORK_MODE_BOOT  
  10. [      0.965]Hit any key to stop autoboot:  0  
  11. read boot or recovery all  
  12. [      6.929]sunxi flash read :offset 4000000, 12287631 bytes OK  
  13. [      6.939]ready to boot  
  14. [      6.942]  
  15. Starting kernel ...  
  16.   
  17. aw_pm_init: not support super standby.  
  18. aw_pm_init: script_parser_fetch err.  
  19. notice: ir_wakeup = 0.  
  20. can't get item for emac_power gpio !  
  21. [hdmi]hdmi module init  
  22. ##fb init:w=1920,h=1080,fbmode=3  
  23. init: reading config file  
  24. init: -----------没找到sata节点,nand启动--------------  
  25. init: logo match failed!fbsize = 8294400  
  26. init: HDMI status = 1, try 10 times!TV status = 0  
  27. init: start e2fsck listening...  
  28. [hdmi]hdmi module init  
  29. EXT4-fs (mmcblk0p12): VFS: Can't find ext4 filesystem  
  30. init: buffer : /dev/block/mmcblk0p12[mmc-msg] sdc0 set ios: clk 400000Hz bm PP pm ON vdd 3.3V width 1 timing LEGACY(SDR12) dt B  
  31. init: do_umount: /data  
  32. init: do_umount error = Invalid argument  
  33. init: C_IN_START  
  34. init: path = /dev/block/data  
  35. init: do_umount: /cache  
  36. init: dont need format /dev/block/UDISK  
  37. init: dont need format /dev/block/private  
  38. init: C_IN_START  
  39. init: path = /dev/block/cache  
  40. init: do_umount: /databk  
  41. ir_init: ir_wakeup script_get_item error.  
  42. ir_init: power_key script_get_item error.  
  43. ir_init: ir_addr_code script_get_item error.  
  44. failed to get gpio_para used information  
  45. [sunxi_leds_init] request gpio188 failed  
  46. init: untracked pid 1152 exited  
  47. init: cannot find '/system/etc/install-recovery.sh', disabling 'flash_recovery'  
  48. android_usb: already disabled  
  49. init: using deprecated syntax for specifying property 'sys.usb.config', use ${name} instead  
  50. init: using deprecated syntax for specifying property 'sys.usb.config', use ${name} instead  
  51.   
  52.   
  53.   
  54. sh  
  55. root@android:/ #  
  56. root@android:/ #  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值