7.打包文件系统,我的是256M的NAND,友善那坑爹文档说用mkyaffs2img这个来打包,结果哥打包了不下数十次,没一次成功的,我就纳闷了,我都按足步骤了,怎么还这样……后来改了用mkyaffs2img-128,果然……啥也别说了,哥再次对友善的移植文档表示无语……
8.下载到目标板,运行!
具体移植过程:1.安装交叉编译工具链
这个不说,按照文档来就行。
2.移植linux内核
先到官网下一个2.6.32的源码回来,或者用友善光盘里面的也行。不过最好不要用他光盘里面的那个,因为那个已经把所有一切的都配置好了,驱动也移植好了,啥都不用我们搞,这样不利于我们的学习,自己做一遍更加有利于加深印象。
解压内核代码:
tar -zxvf linux-2.6.32.2.tar.gz
进入内核目录修改顶层Makefile:
cd linux-2.6.32.2
ARCH ?= arm //使用的目标平台 CROSS_COMPILE ?= arm-linux- //使用的交叉编译器
事实上从2.6.31版本开始,linux已经支持mini2440了,就这样修改了平台,然后make mini2440_defconfig, make zImage编译内核下载到板子上也可以启动内核,不过会出现一系列的难以理解的问题(至少对于我来说是如此)。一开始那两天,我就是为了求快,使用了linux自己的板文件,于是怎么搞都不对,总是提示unable to xxxxxxx的错误,貌似是不能初始化一个可用的控制台,然后上网找了很多资料,还是不能解决,崩溃。于是铁定了心,重头开始搞!现在我们不使用其默认的板文件,我们自己按照友善的移植文档的步骤来自己搞。
cd arch/arm/mach-s3c2440
把原本的mach-mini2440.c移到别的地方,等一下还要参考。COPY smdk-2440.c这个文件的内容,然后建立自己的mach-mini2440.c,粘贴。到smdk2440_map_io(void)函数,修改晶振,改成12000000,
s3c24xx_init_clocks(12000000); //修改为 12000000
因为友善的板子用的就是这个频率,一般开发板由于成本的考虑,都使用这种低频率的晶振源,然后由CPU的内部时钟逻辑提高频率,具体可以参考这篇文章。
然后修改MACHINE_START宏,宏的第一个参数一定要是MINI2440,第二个无所谓。
用VIM打开刚才复制得到的mach-mini2440.c文件,原来是smdk2440,所以将该文件中的所有的smdk2440替换成mini2440,可以在vim中,输入下面的命令进行替换;g表示全局替换,global.