mini2440 linux-3.7移植记录(二)

来源:互联网 发布:韩国眼中的中国 知乎 编辑:程序博客网 时间:2024/06/06 02:21

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连接,利用supervividnw下载内核到开发板中测试,只在串口调试软件那看到

NOW,Booting Linux......

UncompressingLinux... done, booting the kernel.

然后就没结果了,不知出错在哪里,调试解决问题中。。。

linux下的与开发板连接组成调试环境的设置且到另一篇文章再行说明。