linux内核移植

1.基本开发环境

U-boot版本:u-boot-2012.04.01 (假设U-boot已经移植好)

Linux平台:虚拟机下ubuntu 14.04

交叉编译工具:gcc-4.4.3

arm开发板:mini2440(CPU:S3C2440 ,SDRAM:64M,Nor Flash:2M,Nand Flash:256M,网卡:DM9000EP)


2.下载linux源码

在linux官网 https://www.kernel.org/ 下载最新源码linux-3.15.2.tar  ,解压。


3.移植

一般源码移植首先会在最顶层的Makefile中指定处理器平台和交叉编译工具。用vim工具打开,修改:ARCH            ?= arm  和CROSS_COMPILE   ?= arm-linux-这两行。

由于mini2440开发板在该内核版本中已经有默认配置文件(mini2440_defconfig),选用默认配置。基本功能的移植,改动较小。


根据u-boot设置分区,修改nand flash 分区(arch/arm/mach-s3c24xx/mach-mini2440.c),比如我的分区结构

static struct mtd_partition mini2440_default_nand_part[] __initdata = {
        [0] = {
                .name   = "u-boot",
                .size   = SZ_256K,
                .offset = 0,
        },
        [1] = {
                .name   = "u-boot-env",
                .size   = SZ_128K,
                .offset = SZ_256K,
        },
        [2] = {
                .name   = "kernel",
                /* 5 megabytes, for a kernel with no modules
                 * or a uImage with a ramdisk attached */
                .size   = 0x00400000,
                .offset = SZ_256K + SZ_128K,
        },
        [3] = {
                .name   = "root",
                .offset = SZ_256K + SZ_128K + 0x00400000,
                .size   = MTDPART_SIZ_FULL,
        },
};

然后命令行编译,生成uImage

#make mini2440_defconfig
#make uImage

将uImage映像通过u-boot 下载至nand flash相应的区域。

tftp 30000000 uImage
nand erase.part kernel
nand write 30000000 kernel

重新启动开发板,linux启动成功!



注意:u-boot传入的machi和linux的machid要匹配。不然在启动过程中会卡住( MACH_MINI2440           MINI2440                1999)。






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值