构造嵌入式Linux系统----内核篇

本文介绍如何在Ubuntu 9.10环境下定制ARM内核(s3c2440),包括修改Makefile、时钟初始化、菜单配置、NAND Flash驱动移植、添加yaffs支持等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境:Ubuntu 9.10 arm-linux-gcc-4.3.2 linux-2.6.34 s3c2440

 

1. 修改内核代码根目录下的Makefile

    ARCH改为arm, CROSS_COMPILE改为arm-linux-

2. 修改arch/arm/mach-s3c2440/mach-smdk2440.c 函数__init smdk2440_map_io

    s3c24xx_init_clocks(16934400);改为s3c24xx_init_clocks(12000000);

    (这里是根据个人的板子提供的外部晶振是多少就修改成多少就好了)

3. 然后就是make menuconfig了

    (1). 选择Load an Alternate Configuration File, 输入arch/arm/configs/s3c2410_defconfig, 然后Ok

    (2). 配置System Type

    (3). 配置General setup, 添加Local version信息

    (4). 配置Kernel Features, 选择支持EABI

    (5). 选择Save an Alternate Configuration File, 输入.config, 保存配置单

4. 修改arch/arm/tools/mach-types, s3c2440的机器码修改为168(这里根据个人板子提供的uboot来决定)

5. 移植Nand flash驱动

    修改arch/arm/plat-s3c24xx/common-smdk.c 结构体mtd_partition smdk_default_nand_part[]

     [0] = {
         .name = "uboot",
         .size = 0x00040000,
         .offset = 0x00000000,
     },
     [1] = {
         .name = "kernel",
         .offset = 0x00200000,
         .size = 0x00200000,
    },
    [2] = {
        .name = "file_system",
        .offset = 0x00400000,
        .size = 0x0FB80000,
    }

    然后修改 结构体s3c2410_platform_nand smdk_nand_info

     .tacls  = 10,
     .twrph0  = 25,
     .twrph1  = 10,

    最后修改配置单, Device Drivers-->Memory Technology Device (MTD) support-->Nand Device Support

    选择Samsung S3C NAND Hardware ECC

    保存配置

6. 添加yaffs支持

    到http://www.aleph1.co.uk/cgi-bin/viewcvs.cgi/下载cvs-root.tar.gz

    解压进入cvs/yaffs2, 然后给内核打上补丁 ./patch-ker.sh c /home/victorsummer/linux-2.6.34

    修改配置单, File systems添加yaffs2选项, 增添语言支持选项

7. 现在就可以编译内核了make zImage, 编译完成后在arch/arm/boot下会生成名为zImage的镜像

    

          

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值