Android预移植到tiny4412
kernel for tiny4412
前面的文章已经把uboot给弄好了,下面就可以用自己移植的uboot来启动内核了。对于内核的移植,一开始选择的是linux4.4的内核,为什么选4.4,因为开始的时候是想在tiny4412上面跑Android 7.0的,而Android 7.0用4.4的内核比较合适,但是折腾了一段时间后发现,是我想太多了,Android 7.0上的改动还是有点打,平时在公司也比较少接触Android 7.0,所以后来还是改回移植Android 6.0了,但是内核已经能跑起来啦就不换了
首先是下载内核,内核的下载可以通过下面的指令下载:
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/common.git
下载完后可以通过git branch -a来查看现有的Android可用的kernel版本,接着通过指令:
git checkout remotes/origin/android-4.4-n-release
来获得Android N支持的kernel 4.4,接下来就是将kernel适配到tiny4412上了,这一部分我也是参照网上的资料来进行的,我使用的Blog教程是这个:
http://www.cnblogs.com/pengdonglin137/tag/TINY4412/default.html?page=1
目前我只移植到MMC部分
相信各位都了解过,Android使用的Linux kernel和标准的linux kernel是有区别的,例如:标准的Linux kernel可没有binder驱动,为了让我们移植的kernel支持Android的特性,需要执行下面一条执行,将Android的特性写道.config文件中,然后再全编就好了
ARCH=arm scripts/kconfig/merge_config.sh arch/arm/configs/tiny4412_defconfig android/configs/android-base.cfg android/configs/android-recommended.cfg
如果大家觉得麻烦也可以直接到我的Github上面下载:
https://github.com/xiaojimmychen/linux-4.4
Android源码编译
Android M的代码下载可以通过下面的指令:
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r79
使用的是清华大学提供的镜像源,下载速度还是可以的,只是中间容易出现网络断开问题,要一直执行repo sync指令来同步代码而已,所以我写了一个脚本来自动执行这个步骤,下面是代码,大家可以按照自己计算机的cpu核心数改一改数值,当然还是推荐大家按照清华大学镜像源网站上说的,使用4个核心好点;接下来将下面的执行代码保存为start_repo.sh就好了,当然别忘了给start_repo.sh加上执行权限
#!/bin/bash
echo "======start repo sync======"
repo sync -j4
while [ $? = 1 ]; do
echo "======sync failed, re-sync again======"
sleep 3
repo sync -j4
done
OK,代码下载完成了,下面可以使用下面的指令来添加对应的板子代码
./device/common/populate-new-device.sh samsung tiny4412
同时在./device/samsun