打印

成功移植uboot、文件系统以及内核经验

[复制链接]
5628|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
爱之翼V|  楼主 | 2012-1-30 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近项目上的一个板子和开发板连起来的时候,从nandflash启动也会进入从norflash启动一样的界面,这样需要按下“B"才能进入,没办法,只能换个思路,前几天开始搞uboot。先说下我板子和软件的情况:
1.128M的nandflash和2M的norflash,64M的ram
2. linux版本是友善提供的2.6.32,mkyaffs2image(因为我是128M的flash,好像需要什么2k对齐,所以要用那个mkyaffs2image-128M反正都是友善提供的)
3.u-boot是当然是tekkaman Ninja大牛的uboot了,下载地址https://github.com/tekkamanninja/U-boot-2009.11_tekkaman,把交叉编译器换成友善提供的arm-linux-直接make disclean; make mini2440_config;make后用supervivi下载到nandflash中就能用了
然后你需要先设置好nfs,因为这样便于下载和测试,来检测你的内核和文件系统到底是不是能用的(设置过程就略去了,网上很多)
接下来是一直内核,内核开始我也用的是友善提供的做好的镜像,后来发现分区和uboot不一致,所以自己又改了一下,改法很简单,就是把arch/arm/mach-s3c2440/mach-mini2440.c中的分区改一下就好了,对照uboot,改法如下:
supervivi  改成0x000000~0x60000
param 改成0x60000~0x80000
kernel改成0x80000~0x580000
root改成0x580000~最后,超过貌似也没关系
然后用手册上告诉的方法生成内核,再使用tekkman大牛的uboot目录下的tools目录下的mkimage把内核镜像制作成uImage.img
制作方法是mkimage -n 'linux-2.6.32'  -A arm -O linux -T kernel -C none -a 0x30008000 -e 0x30008040 -d zImage uImage.img
上面那个0x30008040 我也不知道为啥,前面我用的是0x30008000就出现了data abort,改完就没有了
然后你可以直接下载到ram中,也可以通过nfs加载内核,反正就是修改bootcmd,因为这一步错误的可能性较低,所以我就选择了直接下载:
nfs 0x30008000 192.168.0.3:/opt/nfs/uImage.img
nand erase 0x80000 300000
nand write 30008000 0x80000 300000
set bootcmd 'nand read 30008000 0x80000 300000;bootm 30008000'
saveenv
重启,不要按任何东西应该就能进入内核了,现在还没有文件系统,当然还会出现panic啥啥啥的东西
接下来就是一直文件系统,友善提供的内核好像是直接支持yaffs2的,所以高枕无忧,下面也不难,什么busybox我也没用到,就是用友善提供的root_qtopia文件夹做的。你可以先利用nfs做一下测试,看看这个root_qtopia能不能用,方法就是把它复制到nfs电脑中的nfs文件夹下,然后修改uboot中的bootargs,tekkman大牛的这个bootargs本来就是nfs的,你可以printenv bootargs看看他怎么设置的,对应改一改就行了,然后启动,应该一切正常了。接下去就是把文件系统下载到nandflash中了,就是用那个mkyaffs2image-128M把root_qtopia文件夹制作成rootfs.yaffs2,然后再使用nfs下载到nandflash中:
nfs 0x30008000 192.168.0.3:/opt/nfs/rootfs.yaffs2
nand erase 0x580000 7a80000
nand write 30008000 0x580000 你的yaffs2文件的大小(在nfs下载的时候有说出来的)
set bootargs 'noinitrd root=/dev/mtdblock3 rootfstype=yaffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M'
saveenv
然后重启就一切搞定了

相关帖子

沙发
peter_zheng| | 2012-1-31 00:55 | 只看该作者
Uboot都是用在arm9及以上,在mcu的论坛可以讨论一下bootloader的这些代码。

使用特权

评论回复
板凳
sqcumt123| | 2012-1-31 15:20 | 只看该作者
同意楼上,多讲讲bootloader启动过程和代码设置。

使用特权

评论回复
地板
keken| | 2012-2-2 16:20 | 只看该作者
仔细仔细看完了

使用特权

评论回复
5
keken| | 2012-2-2 16:21 | 只看该作者
确实不错 很受益

使用特权

评论回复
6
lifenganhui| | 2012-2-2 16:23 | 只看该作者
新知识,要虚心学习啊,不错,

使用特权

评论回复
7
345161974| | 2013-2-6 12:53 | 只看该作者
这些东西,如果照搬着友善的文档做一遍,很多人都可以做一遍的,我感觉我们需要深入的去研究每个命令以及具体的移植原理.

使用特权

评论回复
8
shenmu2012| | 2013-2-18 10:50 | 只看该作者
这个在毕业那会做过,还是不太理解的,这会谢谢楼主的分享

使用特权

评论回复
9
shenmu2012| | 2013-2-18 10:52 | 只看该作者
系统的移植也是很复杂的一个过程的,需要些耐心跟细心的

使用特权

评论回复
10
hawksabre| | 2013-2-18 20:15 | 只看该作者
新知识点   需要好好钻研钻研   呵呵  顶一个   不错哦   谢谢了   楼主

使用特权

评论回复
11
shibalihuandao| | 2013-2-19 20:42 | 只看该作者
很值得一看

使用特权

评论回复
12
zgsxhzac| | 2013-2-19 20:56 | 只看该作者
成功经验值得借鉴

使用特权

评论回复
13
sishangcine| | 2013-2-19 21:01 | 只看该作者
很不错的经验 多参考

使用特权

评论回复
14
heibaiyinjiag| | 2013-2-19 21:20 | 只看该作者
参考一下

使用特权

评论回复
15
taihezhibanh| | 2013-2-19 21:23 | 只看该作者
可以参考的成功经验

使用特权

评论回复
16
beiwaroad| | 2013-2-19 21:33 | 只看该作者
楼主写的都是关键的地方 很好

使用特权

评论回复
17
xichengmadia| | 2013-2-19 21:37 | 只看该作者
很值得参考

使用特权

评论回复
18
firstblood| | 2013-2-20 13:08 | 只看该作者
系统文件的移植是需要软件应将都要配合好的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

823

帖子

1

粉丝