fl2440——内核修改和initramfs文件系统启动

18 篇文章 1 订阅

在上篇中记录了一下u-boot的修改、移植。现在记录一下Linux内核移植和根文件系统的启动。

1、内核的修改

第一步,下载Linux内核(www.kernel.org)压缩包,我选择了linux-3.0。
这里写图片描述

1.1配置内核编译参数

修改Makefile文件,修改交叉编译器环境变量和选择开发平台类型:
[tangbin@localhost linux-3.0bk]$ vim Makefile
修改如下:
这里写图片描述

这里写图片描述
mkimage是在制作镜像文件时候, 在原来的image文件前增加一个0x40字节长度的头。
这里写图片描述

注:内核编译之后会生成两个文件。一个Image,一个Zimage。image为内核映像文件,而Zimage为内核映像压缩文件。Image大约为4M,而Zimage不到2M。

1.2修改晶振频率

Fl2440开发板的晶振频率为12M,接下来修改晶振频率:

[tangbin@localhost linux-3.0bk]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c

修改如下:
这里写图片描述

1.3修改串口驱动

[tangbin@localhost linux-3.0bk]$ vim drivers/tty/serial/samsung.c
这里写图片描述
之后将mini2440的.config拷贝过来,作为默认的.config文件。

cp arch/arm/configs/mini2440_defconfig .config

接着执行make menuconfig选择编译选项。
注:make menuconfig时出来的文本窗口中的信息是通过读取在内核源代码目录下的Kconfig文件来配置的。根据Makefile文件来编译,而Makefile文件中的变量则通过.config来进行赋值操作。仅仅在Kconfig中添加选项。
这里写图片描述
选择System Type —>
这里写图片描述
选择如图:
这里写图片描述

1.4修改MACHINE ID设备编号

将mini2440和和s3c2440的machineID对调。

vim arch/arm/tools/mach-types

这里写图片描述
将mini2440原来的1999改成362,s3c2440的362改成1999。
之后就可以执行make编译。
此时已经会生成一个linux-s3c2440.bin的可执行二进制文件,这就是我们将要烧录到开发板的文件。
这里写图片描述

1.5nand flash分区

执行命令:

vim arch/arm/plat-s3c24xx/common-smdk.c

这里写图片描述
注:各个分区大小可以根据实际情况来分。

2、内核添加根文件系统支持

2.1根文件系统支持

以initramfs文件系统作为根文件系统,它能伴随内核编译时同时与内核生成一个镜像而能与之一起启动。
这里写图片描述
选择General setup
找到:
这里写图片描述
Initramfs source file(s)里选择你所制作的根文件树所在目录。
Save保存后,执行make编译内核,将产生的linuxrom-s3c2440.bin烧录到开发板即可。

2.2 添加uboot对initramfs支持

向u-boot添加环境变量:

 set bootargs 'console=ttyS0,115200 mem=64M init=/linuxrc rw loglevel=7'
 set bootcmd 'nand read 30008000 100000 800000;bootm 30008000'
 set bkr 'tftp 30008000 linuxrom-s3c2440.bin;nand erase 100000 800000;nand write 30008000 100000 800000'

save保存,run bkr就可以完成下载,擦除和写的工作,另两条则是u-boot传递的参数,这是由Linux内核读取和处理的。(详细讲解:http://blog.chinaunix.net/uid-20672257-id-2395102.html
最后,boot,启动。

2.3可能遇到的问题和注意事项

1.在进行nand write的时候,如果指定的区域有坏块,提示无法写入,可以将写的文件大小设置大一些。如上面的,可以将800000改为900000。
2.在进行擦除nand flash时,注意是擦除整个分区,内核分区大小是10M,则:nand erase 100000 a00000。 100000是分区起始位置,a00000就是分区的大小。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值