ARM在嵌入式linux内核裁剪与移植的应用
始化
内核启动时,可以依据对分区的设置进行初始配置,然后修改arch/am4mach-s3c2410/machsmdk2410.e文件下的smdk2410_devices[],指明初始化时包括在前面所设置的flash分区信息,并添加如下语句:
s3c_device_nand,
(3)禁止Flash ECC校验
内核一般都是通过UBOOT写到Nand Flash的。UBOOT则通过软件ECC算法来产生ECC校验码,这与内核校验的ECC码不一样,内核中的ECC码是由S3C2410中Nand Flash控制器产生的。所以,这里选择禁止内核ECC校验。
修改drivers/mtd/nand/s3c2410.C 下的s3c2410_nand_init_chip ()函数,可在该函数体最后加上如下一条语句:
chip->eccmode=NAND_ECC_NONE;
3 内核配置过程
3.1 支持启动时挂载devfs
为了使内核支持devfs以及在启动且在/sbin/init运行之前能自动挂载/dev为devfs文件系统,应修改fs/Keonfig文件,找到menuPseudo filesystems并添加如下语句:
3.2 配置内核产生。config文件
Linux内核裁减的配置菜单命令有好几个配置方法,这几个方法实现的功能类似,只是与用户的交互界面不同。其中:
make config是基于文本的、最为传统的配置界面,可进入命令行;
make menuconfig是基于文本菜单的配置界面;
make xconfig是基于图形窗口模式的配置界面,在Xwindow下推荐使用该界面。
在这3种方法中,make menuconfig使用最为广泛,这里选用的是make menuconfig的配置方法。相应的配置有三种选择,它们分别代表的含义如下:
Y:将该功能编译进内核;
N:不将该功能编译进内核;
M:将该功能编译成可以在需要时动态插入到内核中的模块。
运行make menuconfig时,在smdk2410_defeonfig基础上,其所增删的内核配置项如下:
(1)增加对模块的支持
Loadable module support--->
[*]Enable loadable module support
[*]Automatic kernel module loading
System Type-->
4 内核编译与下载
4.1 内核编译
编译内核时,可运行以下命令:其一是#make clean,即清理环境,保证没有不正确的依赖文件存在;二是#make dep,即将内核源码树中每个子目录产生的.depend文件建立起依赖关系;三是#make zImage,用于建立压缩的linux内核映像。
4.2 下载zImage到开发板
下载zImage到开发板的方法很多,常见的有网络下载(如FTP、TFTP等方式)、串口下载、USB下载等。本文采用FTP方式来移植Linux内核映像文件到目标机NAND FLASH中。代码如下:
CRANE2410#tftp 0x30008000 zImage至此,该嵌入式Linux的编译和移植工作便告全部完成。
5 结束语
本文以将linux移植到ARM920T内核的s3c2410处理器芯片为例,介绍了嵌入式linux内核裁剪以及移植的过程,并对移植中的关键技术和重要步骤给出了详细的说明。移植后的Linux系统在开发板上运行稳定,性能良好。本文的操作过程对嵌入式Linux系统在其它处理器上的移植也具有参考意义。
移植 应用 裁剪 内核 嵌入式 linux ARM 相关文章:
- 嵌入式Linux内核移植相关代码分析(04-21)
- 在Ubuntu上建立Arm Linux 开发环境(04-23)
- 蓝牙无线耳机设计及VxWorks移植方法(07-21)
- U-Boot的编译与移植到QT-S3C44B0X开发板上(03-08)
- LPC2292的μC/OS-II硬件抽象层构建(04-26)
- μC/OS-Ⅱ在MSP430F149上的移植(03-01)