免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 669 | 回复: 0
打印 上一主题 下一主题

成功移植最新的2.6.22.3的linux kernel到S3C2410上 【转】 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-12 11:51 |只看该作者 |倒序浏览

成功移植最新的2.6.22.3的linux kernel到S3C2410上
硬件平台:勤研2410开发板
开发平台:FC6+kernel 2.6.22.3+arm-linux-gcc-3.4.1
参考资料:panjet大侠的帖子《Linux 2.6.10 以后版本对 S3C2410 的支持》(在此特别感谢panjet大侠和所有参与过那个帖子的朋友)
由于kernel 2.6.22.3对s3c2410中文件的组织风格有了一些变化且删除了对devfs的支持,所以移植过程中遇到了一些《Linux 2.6.10 以后版本对 S3C2410 的支持》中没有提到的问题,但基本思路是一致的。
第一步:根据自己nand flash的分区情况,修改kernel中的相关参数:
由于kernel 2.6.22.3对s3c2410中文件的组织风格有了变化,所以要修改的文件不再是 arch/arm/mach-s3c2410/devs.c,而是arch/arm/plat_s3c24xx/common-smdk.c。在其中找到分区的定义
smdk_default_nand_part[] = {
...
}
根据自己的分区情况修改其中的内容(分区情况可以通过bootloader查看)
第二步:修改nand flash的参数:
在同一个文件中找到
smdk_nand_info = {
.tacls=20,
.twrph0=60,
.twrph1=20,
...
}
改成
smdk_nand_info = {
.tacls=0,
.twrph0=30,
.twrph1=0,
...
}
第三步:修改ECC校验:
根据kernel官方网站上的说明,从2.6.22.3已经修改了ECC校验的问题(这也是我移植2.6.22.3的一个重要原因)。但实验下来发现,不管是用软件ECC还是硬件ECC都不行。只好改成NAND_ECC_NONE:
在driver/mtd/nand/s3c2410.c中找到s3c2410_nand_init_chip()函数,将其中的
chip->ecc.mode=NAND_ECC_SOFT;
改成
chip->ecc.mode=NAND_ECC_NONE;
第四步:修改Makefile文件:
修改其中的目标平台和交叉编译器为:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
第五步:配置内核:
make menuconfig
注意,要将tmpfs选上,否则kernel找不到root分区。
第六步:编译内核:
make
到此内核的移植已经完成,但由于2.6.22.3中已经不包含devfs,所以还需要在root filesystem中配置console设备,否则将不能进入交互界面(不会出现提示符#)
第七步:配置console设备:
在root filesystem的/dev中,生成console设备:
mknod -m 600 console c 5 1
最后将kernel和root filesystem烧到nand flash中,kernel的移植即大功告成!^_^
由于2.6.22.3中用udev代替了devfs,下一步将进行udev的移植和配置。
上次成功移植完2.6.22.3后,由于没有启动udev,造成/dev下没有设备文件。也就是说所有的设备都没有挂接进来。
用google在网上搜了一把。发现最新的busybox已经包含了udev的简化版本即mdev,且使用非常简单。
于是下载移植:
第一步:修改Makefile
将Makefile中的ARCH和CROSS_COMPILE修改为arm系列:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
第二步:meke menuconfig
运行make menuconfig,选择你需要的选项。
在此选择
  • mdev
    第三步:编译、安装
    #make
    #make install
    这时会在你的编译目录下生成一个_install的目录,里面包含了生成的所有文件和目录结构。
    第四步:查找所依赖的共享库
    #cd _install/bin
    #arm-linux-readelf -a ./busybox | grep "Shared library"
    用上面的命令可以查到当前的busybox依赖哪些共享库(这些共享库一般可以在你的交叉编译器所在目录的lib下找到)
    第五步:将生成的文件和共享库拷贝到你的root filesystem中
    将_install中的目录结构和文件完全拷贝到你的root filesystem中。
    然后将共享库拷贝到root filesystem的lib目录中,并建立相关的链接文件
    第六步:为mdev的运行准备环境
    mdev需要改写/dev和/sys两个目录。所以必须保证这两个目录是可写的(一般会用到sysfs,tmpfs。所以要重新编译内核)。
    然后在你的启动脚本文件中加入
    /bin/mdev -s
    最后:将新的内核、新的root filesystem烧到nand flash中就行了。
    呵呵,下面要开始调试usb host了。进度一步一步的推进,好开心啊......

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/88620/showart_1793221.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP