3.把yaffs2补丁打上
alex @arch~/embedded/linux-3.7 $ cd ..
alex @arch~/embedded $ la
total68392
drwxr-xr-x24 alex root 4096 Jan 3 14:14 linux-3.7/
-rw-r--r-- 1 alex root 69736096 Jan 3 12:40 linux-3.7.tar.xz
drwxr-xr-x 7 alex root 4096 Jan 3 13:02 yaffs2-HEAD-52df965/
-rw-r--r-- 1 alex root 279063 Dec 27 12:07 yaffs2-HEAD-52df965.tar.gz
alex @arch~/embedded $ cd yaffs2-HEAD-52df965/
alex @arch~/embedded/yaffs2-HEAD-52df965 $ ./patch-ker.sh c m ../linux-3.7
ps:不知从哪个版本开始yaffs2的补丁打上的命令中间是改为./patch-ker.sh c m../linux-3.7 所以与友善之臂的教程中的命令相比是多了个m的,要注意一下。
4.正式开始相关的移植。
进入目标板设置目录
alex @arch~/embedded $ cd linux-3.7/
alex @arch~/embedded/linux-3.7 $ cd arch/arm/mach-s3c24xx/
ls后可以看到有很多的文件,我们就采用简单一点的方式来进行修改移植。
ps:这里需要注意一下,在比较之前版本的linux中,像mach-mini2440.c等配置文件是放在linux-3.0.53/arch/arm/mach-s3c2440中的,所以在参考友善之臂提供的linux移植指南时需注意目录的更改。
我们打算是参考mach-smdk2440.c来写我们的配置文件mach-mini2440.c,所以先是把旧的文件保存一下:
alex @arch~/embedded/linux-3.7/arch/arm/mach-s3c24xx $ mv mach-mini2440.cmach-mini2440.c.orig
这个内核自带的mach-mini2440.c文件有很好的参考作用,故不须像友善之臂的指南那直接删除,可以改名保存的。
复制mach-smdk2440.c文件来修改为我们的文件。
cpmach-smdk2440.c mach-mini2440.c
打开mach-mini2440.c来进行修改。
geditmach-mini2440.c
(vim非常强大,但是本人这种凡人还是习惯一点鼠标的复制粘贴的操作,故先用gedit吧)
同时打开mach-mini2440.c.orig来作为参考
geditmach-mini2440.c.orig
先是把mach-mini2440.c中的smdk2440都替换为mini2440
以下是部分的文字复制粘贴工作了.
添加mach-mini2440.c.orig中的头文件包含到mach-mini2440.c中,亦就是把复制覆盖头文件部分。
把下面函数中的16934400改为12000000,mini2440开发板的晶振频率为12MHz。
staticvoid __init mini2440_map_io(void)
{
s3c24xx_init_io(mini2440_iodesc,ARRAY_SIZE(mini2440_iodesc));
s3c24xx_init_clocks(16934400);
s3c24xx_init_uarts(mini2440_uartcfgs,ARRAY_SIZE(mini2440_uartcfgs));
}
注释掉开发板初始化函数中的smdk_machine_init(),修改如下。
staticvoid __init mini2440_machine_init(void)
{
s3c24xx_fb_set_platdata(&mini2440_fb_info);
s3c_i2c0_set_platdata(NULL);
platform_add_devices(mini2440_devices,ARRAY_SIZE(mini2440_devices));
//smdk_machine_init();
}
保存mach-mini2440.c,开始试着编译一下了。
alex @arch~/embedded/linux-3.7/arch/arm/mach-s3c24xx $ cd ../../../
alex @arch~/embedded/linux-3.7 $ make zImage
编译结果:
LD vmlinux
SYSMAP System.map
OBJCOPYarch/arm/boot/Image
Kernel:arch/arm/boot/Image is ready
GZIP arch/arm/boot/compressed/piggy.gzip
AS arch/arm/boot/compressed/piggy.gzip.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPYarch/arm/boot/zImage
Kernel:arch/arm/boot/zImage is ready
可以看到,编译通过了。
但是在下载测试时出现了问题。
通过usb连接,利用supervivi和dnw下载内核到开发板中测试,只在串口调试软件那看到
NOW,Booting Linux......
UncompressingLinux... done, booting the kernel.
然后就没结果了,不知出错在哪里,调试解决问题中。。。
在linux下的与开发板连接组成调试环境的设置且到另一篇文章再行说明。