买了开发板一直想把uboot和kernel都换掉,开发板自带的kernel版本是2.6.35,现在更换成linux3.2.17,因为想使用设备树,移植linux3.0以上的版本可谓是一波三折,到现在还没有搞明白为什么有的版本一下子就能移植成功,而有的版本却始终卡死在Starting kernel ....处,百度过的方法都试过了,还是不行,所以暂时先移植一个可行的。网上也有很多关于移植的教程,其实我也是参照别人的步骤来的,自己也来记录一下,加深理解。
基本步骤:
1、修改顶层Makefile中的体系结构ARCH和交叉编译器前缀CROSS_COMPILE
2、使用s5pv210的缺省配置文件
make s5pv210-defconfig
3、配置内核,选择串口
在System Type --->根据开发板串口来选择
Kernel hacking --->
4、确定机器码
确保uboot中的机器码和kernel中的机器码一样,机器码都存在mach-types.h头文件中
uboot中s5pv210的机器码如下:arch/arm/include/asm/
kernel中s5pv210的机器码如下:
5、确定内核的加载地址和参数地址
内核的加载地址和参数地址在arch/arm/mach-s5pv210/Makefile.boot中,此地址为物理地址,因为这时候MMU是关闭的,操作的的地址都是物理地址,
从文件中可以看出内核的加载地址和参数地址分别为0x20008000和0x20000100,bootloader启动内核前应该将内核拷贝到0x20008000,并将参数放到0x20000100处,
现在有一个问题不太确定就是内核解压前是存在内存还是在flash上。x210开发板设置的和默认的不一样。
zreladdr-y += 0x30008000
params_phys-y := 0x30000010
6、 当这些设置好后,可以编译内核了
make -j2
如果是启动后dm9000网络异常的话,就对着开发板dm9000重新更改一下就可以了。