ok6410随板带了一套android2.3.4的源码,虽然在今天看来这版本已经是史前系统了,但无碍于学习。首先得把android刷进板子。
由于原板带的wince,要做一点前置工作才能刷进新系统,这一点随带的手册里有提及,就不说了,资料链接见最下。之所以要提及这个资料,是因为送我的盘子里拿出来的android源码是有问题的,应该是写进去的时候写错了,得重新下载才可以。
编译 android 2.3
这次的主题是如何烧android 2.3 ,书上,包括网上很多资料都说
将android_fs.tar、mmc.bin 和 zImage文件复制到SD卡上
一开始我听到这话我整个人是懵的,这mmc什么鬼,这android_fs.tar又是什么鬼?
事实上,这里的android_fs.tar指的就是android的镜像,所以无论怎么样我都得先编译好android 2.3。
由于此前已经编译过其他版本的android,所以这一路其实也不算坎坷,困难的其实来源于现在的系统以及编译环境都已经非常新了,但旧的android编译环境用不了这么新的去编译,我尝试在fedora 25上降级make,降级gcc去搞,无奈还是遇到很多问题,没办法只能装个ubuntu 12.10在虚拟机上,开始的时候还担心性能问题,但其实也没啥问题,android2.3的源码才一个多G,以现在的电脑性能来说虚拟机都够用了。
OS: ubuntu 12.10(32bit)
gcc: 4.4.7
make: 3.8.1
其他的依赖如 bison flex zlib1g-dev libx11-dev libncurses5-dev 等使用apt-get就可以了。有些依赖库可能还需要降级,建议还是先安装aptitude,然后再通过aptitude安装这些库,适当降级。
OK6410带的系统中已经附带了编译脚本 build-android.sh,只需要执行就可以了,遇到问题搜一下都能找到答案。看机器的性能,我是e3的CPU,给了4G给虚拟机,开了make -j4很快就搞定了,前提是,不能直接在与宿主机共享的目录中进行编译,这样编译通信会非常慢,对于编译这种过程很容易造成卡死,把源码都搞到虚拟机内就可以了。
编译完成后,执行源码目录下的make-rootfs-nand2g,会生成一个rootfs_dir目录,开始的时候我还以为是把这个目录下的所有文件都打成一个android_fs.tar,然后放进SD卡就可以了,结果发现这个工具其实本来就会生成一个rootfs.yaffs2文件,这个文件才是刷写的时候用到的文件(手册里也是说要用这一个文件)。
至此,android的编译就完成了。
编译 android kernel
zImage指的其实是android的kernel镜像,带的源码里也有android kernel,编译kernel比编译系统简单很多,首先需要安装交叉环境,工具也已经附带了,只需要解压就可以。
环境准备好后,只需要在根目录执行
make menuconfig(可选)
make clean
make
就可以了,最后在./arch/arm/boot/下能找到zImage。
u-boot
这里的u-boot指的并不是代码里带的那个uboot1.1.6-2012-10-11.tar.gz,当然这个也能编译出u-boot.bin出来,但使用这个u-boot是不能启动ok6410的,需要使用附带的u-boot,可以搜索u-boot_ram256.bin,然后改名即可。
制作刷写sd
刷写前需要先制作刷写SD卡,使用的是SD_WRITER工具,没linux的,直接到windows操作。
需要先format,然后刷入mmac,搞定后就可以把上面的uboot,zImage,rootfs.yaffs2放入SD卡
制作完成 。
烧写
先打开板子的SD启动方式,在电池旁边有8个开关,只需要将6,7号位向上拔就可以了,1,2,3号位不影响。
然后通电,就会自动将系统写入到内置存储了,写完后会有声音提示。
然后再把6,7 号位恢复,拔掉SD卡,再次启动,就能进入android了。
开机
第一次启动会要求进行触摸校验,点四个点即可,然后就等,一般就直接进入系统了。
屏幕下方有六个按钮,左到右第五号位是菜单键,六号位是后退键。