linux3.4.2内核移植详解(二):移植内核

解压进入内核顶层目录:tar xjf linux-3.4.2.tar.bz2

修改顶层Makeflie:

        ARCH        ?= arm

        CROSS_COMPILE   ?= arm-linux-

执行make s3c2410_defconfig会出现:

        # configuration written to .config

       此时将默认配置写进.config文件

执行make menuconfig配置内核:

       Device Drivers--->

               <*> Memory Technology Device (MTD) support --->

                        <*>   Enable UBI - Unsorted block images  --->

查看File System--->

          <*> Miscellaneous filesustems --->

          发现没有对yaffs2文件系统支持的,内核中默认是不支持 yaffs文件系统的, 因此我们需要为内核打上 yaffs 的补丁(笔者当初就在这卡了很久,发现原来是内核默认不支持yaffs2文件系统的,所以需要为内核打上 yaffs 的补丁)

内核打yaffs补丁:

        解压YAFFS2 最新源码并进入顶层目录:

        执行:./patch-ker.sh c m /work/trans_system/linux-3.4.2

        成功会出现:

            Updating /work/trans_system/linux-3.4.2/fs/Kconfig

            Updating /work/trans_system/linux-3.4.2/fs/Makefile

       这条命令干了三件事:

             1.修改内核 fs/Kconfig, 增加了 yaffs2 下的 Kconfig:

                      # Patched by YAFFS

                      source "fs/yaffs2/Kconfig"

             2.修改内核 fs/Makefile, 增加了 yaffs 目录的信息:

                     # Patched by YAFFS

                    obj-$(CONFIG_YAFFS_FS)   += yaffs2/

            3.在内核fs/目录下创建yaffs2子目录:

                    a.将yaffs2源码目录下的Makefile.kernel复制为内核fs/yaffs2/Makefile文件

                    b.将yaffs2源码目录下的Kconfig文件复制到内核fs/yaffs2/目录下

                    c.将yaffs2源码目录下的.c,.h文件(不包括子目录下的文件)复制到内核fs/yaffs2/目录下

执行make menuconfig配置内核支持yaffs2文件系统:

         File  systems  --->

                 Miscellaneous  filesystems  --->

                       <*>  YAFFS2  file  system  support

                        [*]  Autoselect  yaffs2  format

修改MTD分区:

       执行:vim arch/arm/mach-s3c24xx/common-smdk.c

                static struct mtd_partition smdk_default_nand_part[] = {

                 [0] = {

                .name   = "bootloader",

                .size   = SZ_256K,

                .offset = 0,

                 },

                [1] = {

               .name   = "params",

               .offset = MTDPART_OFS_APPEND,

               .size   = SZ_128K,

                },

                [2] = {

               .name   = "kernel",

               .offset = MTDPART_OFS_APPEND,

               .size   = SZ_8M,

                },

               [3] = {

               .name   = "root",

               .offset = MTDPART_OFS_APPEND,

               .size   = MTDPART_SIZ_FULL,

               }

               };

       上述分区信息要保证和u-boot中的分区信息一致

修改时钟频率为12M:

       执行vim arch/arm/mach-s3c24xx/mach-smdk2440.c

               static void __init smdk2440_map_io(void)

               {

                    s3c24xx_init_io(smdk2440_iodesc, ARRAY_SIZE(smdk2440_iodesc));

                    s3c24xx_init_clocks(12000000);//板子的晶振为12M

                    s3c24xx_init_uarts(smdk2440_uartcfgs, ARRAY_SIZE(smdk2440_uartcfgs));

              }

执行make uImage编译,在/arch/arm/boot下生成uImage。

使用DNW或者tftp烧写

ok,毕

参考:

https://www.cnblogs.com/cindyleo/p/6390047.html

https://blog.csdn.net/gatieme/article/details/53157829

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值