Linux 内核2.6.32.26 在sc32442处理器上的移植

来源:互联网 发布:关晓彤人品知乎 编辑:程序博客网 时间:2024/04/30 03:42

Linux 内核2.6.32.26 sc32442处理器上的移植

1.首先,下载内核源码压缩包

http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.26.tar.bz2

解压缩到/home/hu/development文件夹内

 

2.打开根目录下的Makefile文件修改

ARCH ?= $(SUBARCH)

CROSS_COMPILE ?=

ARCH := arm

CROSS_COMPILE := arm-unknwon-linux-gnueabi-

 

3.修改nand分区信息

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

    arch/arm/plat-s3c24xx/common-smdk.c中修改smdk_default_nand_part[],注意这个一定

    要跟bootloader的一致。在我的板子中修改如下:

         static struct mtd_partition smdk_default_nand_part[] = {

                    [0] = {

                    .name = "uboot",

                    .size = 0x000000040000,

                    .offset = 0,

                              },

                     [1] = {

                    .name = "Kernel",

                    .offset = 0x000000060000,

                    .size = 0x000000200000,

                                 },

                     [2] = {

                     .name = "root",

                     .offset = 0x000000260000,

                     .size = 0x000004000000,

                                }

             };

 

4.修改机器码

u-boot的移植中,我们已经设置了MACH_TYPEMACH_TYPE_SMDK2440, 查看u-bootinclude/asm-arm/mach-types.h文件,发现

#define MACH_TYPE_SMDK2440 1008

linux 内核源码的 arch/arm/tools/mach-types 文件有如下定义:

smdk2440    MACH_SMDK2440     SMDK2440       1008

因此我们也需修改内核机器码使其为1008

修改 arch/arm/mach-s3c2440/mach-smdk2440.c : //修改文件最后面

MACHINE_START(S3C2440, "SMDK2440")修改为:MACHINE_START(SMDK2440, "SMDK2440")

 

修改arch/arm/kernel/head.S //ENTRY(stext)下添加如下代码(红色部分)

ENTRY(stext)

mov r0, #0

mov r1, #0x3f0 // MACH_TYPE_SMDK2440 1008 换成十六进制就是 0x3f0

ldr r2, =0x30000100 //Linux kernel parameter

 

5.打补丁,添加yaffs2文件系统支持

下载yaffs补丁:cvs-root.tar.gz (用搜索引擎一搜就能搜到)

tar xzvf cvs-root.tar.gz

cd cvs/yaffs2/

./patch-ker.sh c /home/hu/development/linux-2.6.32.26

 

6.配置内核

 调用自带的一个默认配置单, 该配置单在内核源码的 “arch/arm/configs/”

  目录下面,名为:“s3c2410_defconfig”,该配置文件里面选择了几乎所有的和 S3C24XX 系列

   CPU 相关的 配置选项,我们完全可以在该配置单的基础上进行配置。

 

内核代码顶层目录下,执行make menuconfig 进入菜单选项

最下面一项load an alternate configuration file

输入路径arch/arm/configs/s3c2410_defconfig

 

(1).General setup --->

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

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

(2). System Type ---->

      [*] S3C2410 DMA support 

      S3C2440 Machines --->

              [*] SMDK2440

              [ ] SMDK2440 with S3C2440 CPU module

       S3C2442 Machines --->

               [*] SMDK2440 with S3C2442 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 Samsung S3C SoCs

                                   [ ]     Samsung S3C NAND driver debug                             

                                   [ ]     Samsung S3C NAND Hardware ECC                                    

                     < > Real Time Clock --->

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

         Miscellaneous filesystems --->

                      <*>YAFFS2 file system support

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

          [*]Use the ARM EABI to compile the Kernel

(7).Boot options  --->

       设置默认启动参数为:

root=/dev/mtdblock2 init=/linuxrc console=ttySAC0 rootfstype=yaffs mem=64M rw

退出之前要到最上级菜单,选最后一项save an alternate configuration file

输入.config然后再确认,退出

 

7.编译内核

内核顶层目录下执行make zImage

则在arch/arm/boot/ 下生成镜像文件 zImage

原创粉丝点击