linux--mini2440内核移植手册

来源:互联网 发布:mysql安装教程视频 编辑:程序博客网 时间:2024/06/08 19:20

(我测试了几次使用这种方式修改linux-2.6.32.2内核不能通过,总提示Kernel panic - not syncing: Attempted to kill init!不知为何故,以后有精力了在弄吧)

(开发环境:Fedora13     mini2440友善之臂开发板   linux-2.6.32.2内核   arm-linux-gcc4.4.3)  

  前几天移植成功过mini2440的linux内核,当时没有记录下规范的操作步骤。今天在需要使用重新移植的时候,遇到了一些问题。下面就把移植成功的步骤写下来,这些内容主要是来自网络。主要步骤如下:

1.修改顶层Makefile文件

   直接将Makefile文件里面的        ln193
   ARCH ?= $(SUBARCH)
   CROSS_COMPILE ?=
   改为:
   ARCH ?= arm
   CROSS_COMPILE ?=arm-linux-   #已将建立好arm-linux-交叉工具链
然后用S3C2410的默认配置文件
#make s3c2410_defconfig        //此命令 configuration written to .config  
                               //要先按上面方法修改完成Makefile文件才能执行这一步,如图:

 


2.修改时钟,不修改超级终端中会出现乱码
修改Arch/arm/mach-s3c2440/mach-smdk2440.c        ln163
S3c24xx_init_clocks(16934400);
改为:
S3c24xx_init_clocks(12000000);如图:

 


3.修改对nand的分区信息。要让内核知道nand flash的分区信息,设置成跟bootloader一致。

打开超级终端,进入superervivi,使用part show查看分区信息,如图:

在arch/arm/plat-s3c24xx/common-smdk.c中修改smdk_default_nand_part[]
/* NAND parititon from 2.4.18-swl5 */如图

 


4.修改CPUID,不修改将会出现无法进入内核由于CPU mach_type 不对应找不到对应的CPU。

      mini2440 使用的supervivi 的机器码是782,这里需要修改机器码,否则会出现不能启动的情况。 机器码保存在内核源码的 “arch/arm/tools           /mach-types”文件中,在大概379 ,把原来的362改为782保存即可。 



5.修改drivers/mtd/nand/s3c2410.c

   如果内核是通过UBOOT写到Nand Flash, UBOOT通过的软件ECC算法产生ECC验码, 这与内核校验的ECC码不一样, 内核中的ECC码是由S3C2410Nand Flash控制器产生的。所以,我在这里选择禁止内核ECC校验。 搜索关键字NAND_ECC_SOFTs3c2410_nand_init_chip函数里,修改NAND_ECC_SOFT NAND_ECC_NONE

     NAND_ECC_SOFT;----》NAND_ECC_NONE;是禁止flash检测



6.向内核加入对YAFFS2的支持

    首先到 http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/网站下载一个yaffs 文件系统的补丁。得到补丁包后,解压补丁,然后打上yaffs2 的补丁,方法如下:(pstary)

            #tar xvfz cvs-root.tar.gz                                    (解压得到补丁目录cvs)

            #cd cvs/yaffs2/                                                   (进到yaffs2 的补丁目录下)

            # ./patch-ker.sh c /work/transplantation/trans_show/linux-2.6.30.5

            (执行补丁脚本,打补丁到内核中,其中/work/transplantation/trans_show/linux-2.6.30.5为内核源码的地址)

       此时到内核源码的“fs/”目录下面您将看到新添加了一个名为“yaffs2/”的目录,同时fs/目录下面的

    Makefile 文件和 Kconfig 文件也添加了 yaffs2的配置和编译条件。



7.Make menuconfig
  修改Kernel Features  --->
            [*] Use the ARM EABI to compile the kernel                   
            [*]   Allow old ABI binaries to run with this kernel (EXPERIMENTA)
把这个选上。
如果不选启动时会出现Kernel panic - not syncing: Attempted to kill init!这个错误我出现过:但是我的情况是当我选上之后还是出现。不知道为什么。

还有其他一些注意的地方:(pstary)

(1).General setup --->

       [*] Configure standard kernel features (for small systems) --->

   选上这项,否则文件系统中的一些选项不会出现

(2). System Type ---->

      [*] S3C2410 DMA support [*] Support ARM920T processor

      S3C2440 Machines --->

              [*] SMDK2440

              [*] SMDK2440 with S3C2440 CPU module

(3).[*] Enable loadable module support --->

              [*] Module unloading

(4).Device Drivers --->

            <*> Memory Technology Device (MTD) support --->

                     [*] MTD partitioning support

                                <*> NAND Device Support --->

                                 <*> NAND Flash support for S3C2410/S3C2440 SoC

                                   [ ] S3C2410 NAND Hardware ECC //这个要去掉

                     [*] Network device support --->

                                 [*] Ethernet (10 or 100Mbit) --->

                                                <*> DM9000 support

                     < > Real Time Clock --->

(5).File systems----->

         Miscellaneous filesystems --->

                      <*>YAFFS2 file system support

(6).kernel Features----->

          [*]Use the ARM EABI to compile the Kernel

保存退出



8.使用make zImage
在/linux2.6.29.2/arch/arm/boot就可以找到zImage文件了。

参考:http://blogold.chinaunix.net/u4/124051/showart.php?id=2519679

原创粉丝点击