linux-2.6.37.4的移植(1)——移植前准备及设置分区

来源:互联网 发布:js模块化编程 阮一峰 编辑:程序博客网 时间:2024/05/18 20:33

参考博客:http://blog.csdn.net/laoniu_c/article/details/17919695
    虽然2.6内核里已经有了2440的代码,但是还是想从2410移植,这样遇到的问题肯能还多一点,技术不熟,希望能够成功。

首先,美其名曰“站在巨人的肩膀上”,find -iname s3c2410、 find -iname smdk2410。(-iname查找时不区分大小写)把那些关于s3c2410的平台文件改成改成cc2440
     。。。。。。。。。。。
    经过思考,还是放弃这样改了,因为2410的文件太多了,不同于u-boot,Linux文件的添加与删除,不单单是添加一个文件那么简单,还需要修改Makefile来使它能够被编译,甚至于还要在kconfig中添加配置选项然后make menuconfig 或 在.config文件中支持该配置。对于我这么懒的人来说太麻烦了,所以尝试着只做板文件的修改,然后找出2410与2440不同,在2410的文件上做相应修改就行了,就不改名了。
首先修改Makefile:ARCH = arm    CROSS_COMPILE = arm-linux-
make distclean
make s3c2410_defconfig
make uImage V=1 (注意V是大写的)可以看到详细信息 :
arm-linux-ld -EL  -p --no-undefined -X --build-id -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o  ... ...

在这里先插讲下Makefile,要分析内核的生成,就要分析它的Makefile:

顶层的makefile
顶层的makefile中并没有找到uImage,但是在arch/arm/makefile中找到了uImage,猜测arch/arm/makefile文件是被包含到顶层的makefile中。
顶层makefile中找到include语句:
include $(srctree)/arch/$(ARCH)/Makefile
找到uImage的语句(在顶层的makefile中)uImage的目标依赖于vmlinux:
vmlinux:$(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
其中vmlinux-init:
vmlinux-init := $(head-y) $(init-y)
head-y是在arch/arm中定义的:
head-y := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
... ... 
vmlinux-lds := arch/$(ARCH)/kernel/vmlinux.lds

要分析所有的文件如何生成内核,可以到vmlinux的编译命令来分析,这样分析起来非常庞大,简单一点办法是通过执行生成uImage的命令来查看终端中的输出。
# make uImage V=1
V=1的功能是将编译过程中的命令更加详细的输出来。
要分析内核的生成,只需要关心最后的几条命令即可(找到包含-o vmlinux的这一句)。
arm-linux-ld -EL  -p --no-undefined -X --build-id -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel/head.o  ... ...
由上面可知,链接脚本为arch/arm/kernel/vmlinux.lds。 第一个执行的文件为 arch/arm/kernel/head.o
把uImage下载到内核,启动,出现错误“没有MACH_TYPE_CC2440”,需要在include/generated/mach-types中添加或替换掉其中的一项。重新下载,出现乱码,可能原因有:1、machid(机器码)设置不正确;2、波特率设置不正确,console=ttySAC0,115200。
修改后,烧写。成功。
从串口输出的信息来看,mtd子系统分了8块,可以自己设置自己设想的分区,可以通过内核输出信息分区信息来找到相应的源码,然后自己做相应修改。最好是改成和u-boot设置的一样的,这样还看着顺眼。。。


<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(272) | 评论(0) | 转发(0) |
0

上一篇:u-boot2010.06的移植(6)——支持yaffs下载

下一篇:works[0]——对 i.mx6 的认识

相关热门文章
  • SHTML是什么_SSI有什么用...
  • shell中字符串操作
  • shell中的特殊字符
  • 关于java中的“错误:找不到或...
  • linux设备驱动归纳总结...
  • linux dhcp peizhi roc
  • 关于Unix文件的软链接
  • 求教这个命令什么意思,我是新...
  • sed -e "/grep/d" 是什么意思...
  • 谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
评论热议
0 0