重新移植了一下内核--记之备忘

来源:互联网 发布:vb.net 教程 编辑:程序博客网 时间:2024/04/30 07:52

博主按:虽然以前移植过,但是隔得时间太长,当时又没有记录,岁数大了记性不好,这次移植又遇到了一些问题,搞了一天才搞好。以此为鉴,特记之。此文只是备忘,不是详细的移植教程,所以新接触移植的同志们还是参考一下网上的资料,有很多非常详细的。

   开发环境:

     1. 开发板:杨创utu2440-S-V41

     2. 原内核:Linux2.6.24

     3. 原文件系统:yaffs2 Busybox1.13

     4. 原交叉编译器:编译内核用3.4.1,编译Qtopia用3.3.2

     5. 原图形界面:Qtopia PDA Edition Version

     6. 移植内核:Linux2.6.31

     7. 移植文件系统:yaffs2 Busybox1.15.2

     8. 新交叉编译器:统一使用4.1.2来编译内核,Qt和Busybox1.15.2

     9. 移植图形界面:qt-everywhere-opensource-src-4.6.2

 

     移植原因: 板子自带的图形界面版本太低,我想使用较新的4.6.2版,但问题是原2.6.24的内核只能使用arm-linux-gcc-3.4.1版本编译,而用这个版本的交叉编译器编译4.6.2的Qt却编译不过去。另外用和系统不同的交叉编译器来编译程序可能会出现各种问题(我的就是在板子上运行时提示找不到文件)。 为了一劳永逸,以后杜绝这些问题。我决定移植新的内核和文件系统,统一在交叉编译器4.1.2下。

    移植过程:

    一、安装交叉编译器 我的安装目录为/usr/local/arm/4.3.2 我用的操作系统是ubuntu10.04,所以修改了一下/etc/bash.bashrc ,在最后添加一行: PATH=/usr/local/arm/4.3.2/bin:$PATH 重新启动一下终端就可以使用了。

    二、 内核的移植

     1. 重写板文件 原开发板带的板文件mach-utu2440.c不能直接在Linux2.6.31的内核中使用,改来改去的也比较麻烦,所以干脆重写板文件。以内核中的mach-smdk2440.c为基本模板,主要修改了其中的nand分区,dm9000中断号,s3c2410fb_display结构体,uart的配置等等,都比较简单,也没出问题,不记录。

     2. 修改Makefile和mach-types 在进行内核配置之前要先修改上面这两个文件。 其中Makefile中需要指定体系结构和交叉编译器, 在183行, ARCH = arm CROSS_COMPILE = arm-linux- mach-types中需要修改机器码,因为我是基于mach-smdk2440.c修改的板文件,而且修改其中的MACHINE_START(S3C2440, "SMDK2440")这一行为MACHINE_START(LEI2440, "LEI2440"), 所以在mach-types中我添加了一行 LEI2440 ARCH_LEI2440 LEI2440 **** 其中****为机器码,是要和bootloader匹配的,否则不能正确引导内核。 又由于其中增加了ARCH_LEI2440,所以要修改Kconfig和Makefile, 添加相应的配置选项和编译选项。

     3. 添加驱动 基本上就是添加驱动文件, 配置Kconfig和Makefile

     4. 配置内核 很简单,没有出错,不记录。只是注意要选择ARM EABI选项。另外修改一下Boot Options中的Default kernel command string为: noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200

     5. make uImage s 如果使用vivi引导,需要make zImage

   三、文件系统移植

     1. 建立一个文件夹,在其中建立文件系统相对应的文件夹,基本上包括 bin, etc, dev, home, lib, mnt, opt, proc, root, sbin, sys, tmp, usr, var

     2. 解压busybox1.15.2,修改Makefile 第164行 CROSS_COMPILE = arm-linux- 第190行 ARCH = arm

     3. make menuconfig进行配置。基本上使用默认设置就可以了

     4. make

     5. make install

     6. 把安装文件夹(默认的配置情况下是名为_install文件夹)中的bin sbin usr linuxrc

原创粉丝点击