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)。






你可能感兴趣的:(linux,交叉编译)