为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

mini2440内核移植(2.6.32 nand(256M))

2013-04-28 3页 doc 35KB 15阅读

用户头像

is_832089

暂无简介

举报
mini2440内核移植(2.6.32 nand(256M))搞了一天的内核移植终于成功,折磨了我一天的内核移植,快让我崩溃,不过目前仍然出现坏块,具体情况还不清楚 感谢那些贡献资料参考的朋友,是他们的无私贡献,所以让我能这么快时间的完成移植,不过目前的移植,只支持nand flash驱动,yaffs2文件系统,并且已经挂载上文件系统.下面说一下移植的需要的环境,以及移植过程 1.系统linux 5,交叉编译器:4.1.2,编译选用内核版本:2.6.31 2.进入内核根目录,修改Makefile文件 在内核的183行 ARCH ?=arm CROSS_COMPILE ?=arm-linu...
mini2440内核移植(2.6.32 nand(256M))
搞了一天的内核移植终于成功,折磨了我一天的内核移植,快让我崩溃,不过目前仍然出现坏块,具体情况还不清楚 感谢那些贡献资料参考的朋友,是他们的无私贡献,所以让我能这么快时间的完成移植,不过目前的移植,只支持nand flash驱动,yaffs2文件系统,并且已经挂载上文件系统.下面说一下移植的需要的环境,以及移植过程 1.系统linux 5,交叉编译器:4.1.2,编译选用内核版本:2.6.31 2.进入内核根目录,修改Makefile文件 在内核的183行 ARCH ?=arm CROSS_COMPILE ?=arm-linux- 3.修改机器码 在379行s3c2440 ARCH_S3C2440 S3C2440 362修改为s3c2440 ARCH_S3C2440 S3C2440 1999这个我说说自己的见解,机器码必须要和uboot传入的机器码一样,所以如果你的uboot移植过程中 机器码是多少,内核就修改为多少,因为我使用的是supervivi,传入的是1999,所以我得修改一下这个机器码 现在可以make uImage看看能不能成功,并且下载到开发板试试,如果能运行成功,会打印一堆内核的信息 若出现MACH_TYPE = 1999 NOW, Booting Linux......就停止,就说明uboot的机器码和内核的机器码不一致,修改 4.修改时钟频率 arch/arm/mach-s3c2440/mach-smdk2440.c修改 在160行 把时钟改成12000000; 接着移植nand flash,移植nand flash的时候,由于自己的失误,并且菜鸟,导致很多次也不成功 修改nand的时候,分区一定要清楚,并且一定要和uboot(或者supervivi)一样,不然会导致挂载文件系统的时候,挂载不上,或者其他问题,目前我只知道,分区不清楚,我的文件系统挂载不上,首先你得到你boatload中打印出分区信息,我的是supervivi,只需退到vivi shell中,然后输入 show part,就可以看见分区信息 下面是nand flash的修改,到arch/arm/plat-s3c24xx/common-smdk.c,替换109行那些代码 static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "vivi", .size = 0x00040000, .offset = 0x00000000, }, [1] = { .name = "param", .offset = 0x00040000, .size = 0x00020000, }, [2] = { .name = "kernel", .offset = 0x00060000, .size = 0x00500000, }, [3] = { .name = "root", .offset = 0x00560000, .size = 0x3fa80000, } 之后就可以退到,内核根目录下面 make menuconfig 选择 system->type 只选择 S3C2440 Machines ---> [*]SMDK2440[*] SMDK2440 with S3C2440 CPU module 这两项,其他的不需要选 由于我的编译器是支持Eabi的,而内核默认不支持,所以要选择下面选项 内核特性加上以下两项: Kernel Features ---> [*]Use the ARM EABI to compile the kernel[*] Allow old ABI binaries to run with this(EXPERIMENTA) kernel 然后保存退出,make zImage,等待编译完毕,烧写到开发板,就可以看到如下信息: S3C24XX NAND Driver, (c) 2004 Simtec Electronics s3c24xx-nand s3c2440-nand: Tacls=3, 29ns Twrph0=7 69ns, Twrph1=3 29ns s3c24xx-nand s3c2440-nand: NAND soft ECC 出现这个,表示内核已经支持nand 下面要移植yaffs2文件系统 首先下载一个yaffs文件系统,然后给内核打上补丁 切换到内核根目录:make menuconfig file systems -> Miscellanecous filesystems->yaffs2 file system support 选择上,重新编译,烧写内核,就打印一下信息,说明已经支持yaffs文件系统 信息: yaffs: dev is 32505859 name is "mtdblock3" yaffs: passed flags "" yaffs: Attempting MTD mount on 31.3, "mtdblock3" yaffs: auto selecting yaffs2 到此内核移植完毕,使用busybox制作一个文件系统,就可以挂载上去 下面说一下自己在移植过程遇到的问题: 1.刚刚开始的时候我用的是uboot引导内核,老是错误,我以为是我移植uboot出错了,然后换了surpervivi 但是结果还是一样,索性就用surpervivi了,查看了一下分区情况,修改了一下内核(刚刚已经说过怎么修改),就成功了 2.这个问题我没印证过,不过还是留心了,就是MTD问题,以及Ecc校验 Device Drivers ---> <*> Memory Technology Device (MTD) support ---> [*] MTD partitioning support <*> NAND Device Support ---> <*> NAND Flash support for S3C2410/S3C2440 SoC [*] S3C2410 NAND Hardware ECC Nand Flash Capacity Select(256M Nand For TX-2440A)---> 开始我应用uboot引导内核是这样选上的,后面使用了surpervivi 没在选上ECC校验,不过现在没印证到底有没有关系 以上就是自己的移植心得,这么小小的移植,都搞得自己心碎 体现了对内核机制,驱动机制,还是那么薄弱
/
本文档为【mini2440内核移植(2.6.32 nand(256M))】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索