linux内核移植

来源:互联网 发布:exe软件封装教程 编辑:程序博客网 时间:2024/06/13 02:44

一、基本的内核移植

1、解压内核文件,进入内核问价夹

2、修改Makefile文件,修改成如下所示:

           ARCH     ?=   arm

           CROSS_COMPILE       ?=   arm-linux-

3.   配置文件并编译内核

         make   smdkv210_android_defconfig

4、编译内核(编译没有产生uImage,请将编译过的u-boot源码下tools里面的mkimage拷贝到/usr/bin (这是一个命令的路径,可以通过环境变量配置),如果没有这个文件,则编译后并没有产生uImage文件)  然后进行编译make    uImage

二、内核配置

1、make   menuconfig(如果不成功,则安装  apt-get install libncurses5-dev

修改底层消息和调试串行端口

System Type  --->

          (0) S3C UART to use for low-level messages

Kernel hacking  --->

         (0) S3C UART to use for low-level debug

检测系统注册外部时钟源

vim arch/arm/mach-s5pv210/mach-smdkv210.c

94s3c24xx_init_clocks(24000000);

2.  确定机器码

vim arch/arm/tools/mach-types

在2443行可以看出,SMDKV210评估板的机器码是2456(16进制是0x998):

2443 smdkv210      MACH_SMDKV210           SMDKV210                2456

3.  确定内核的加载地址和参数地址

vim arch/arm/mach-s5pv210/Makefile.boot

可以看出,内核的加载地址和参数地址分别为0x20008000和0x20000100,bootloader启动内核前应该将内核拷贝到0x20008000,并将参数放到0x20000100。

   zreladdr-y   := 0x20008000

params_phys-y   := 0x20000100

4、编译内核

        make     uImage(最后在arch/arm/boot下生成uImage文件)

       然后把这个文件拷贝到tftp 服务器目录下

三、设置u-boot的环境变量

1、setenv bootargs 'console=ttySAC0,115200 root=/dev/mtdblock4 rootfstype=yaffs rw'

2、setenv bootcmd tftp 40000000 uImage\; bootm\;

3、saveenv

 

4、下载内核:tftp      0x40000000    uImage

5、引导内核:bootm      0x40000000

四、如果引导不成功再进行内核配置

make menuconfig

Device Drivers  --->

    [*] Multifunction device drivers  --->

                 [ ]   Maxim Semiconductor MAX8698 PMIC Support

    [*] Voltage and Current Regulator Support  --->

                  < >   Maxim 8698 voltage regulator         (这一项没有找到,可以不管)

重新编译内核:

make uImage

五、修改nand     flash分区

1、vim drivers/mtd/nand/s3c_nand.c

struct mtd_partition s3c_partition_info[] = {

{

.name = "uboot",

.offset = 0,          /* for bootloader */

.size = (1*SZ_1M),

.mask_flags = MTD_CAP_NANDFLASH,

},

{

.name = "recovery",

.offset = MTDPART_OFS_APPEND,

.size = (5*SZ_1M),

},

{

.name = "kernel",

.offset = MTDPART_OFS_APPEND,

.size = (5*SZ_1M),

},

{

.name = "ramdisk",

.offset = MTDPART_OFS_APPEND,

.size = (3*SZ_1M),

},

{

.name = "root",

.offset = MTDPART_OFS_APPEND,

.size = MTDPART_SIZ_FULL,

},

};

 

 

2、nand     erase    0xe00000    0xF200000

3、tftp     0x40000000      rootfs.img

4、Bytes transferred = 99090816 (0x655200)

nand    write.yaffs    0x40000000     0xe00000     0x655200(要把最后一个数字改为传输的字节数!)

 

 

 步骤总结:

 1、解压压缩包,修改Makefile,和配置部分内核,然后进行编译,完成基本的内核移植。

 2、进行内核的配置、确定机器码、内核的加载地址和参数地址等参数是否正确。然后make  uImage进行编译,生成uImage镜像

 3、去掉max8698电源管理芯片的驱动

 4、修改NAND Flash分区

 5、设置u-boot的环境变量

 6、擦除root分区

 7、下载根文件系统

 8、烧写yaffs映像

 9、下载内核,tftp    0x40000000  uImage 

 10、进行引导内核bootm    0x40000000

 

 

 

 

 

0 0
原创粉丝点击