开发环境 -- 驱动开发环境搭建-uboot,kernel,rootfs

道理都懂,移植这三个不就是下载,擦除,写入,再改下bootargs,bootcmd,重启就行了。

但是真正做起来的时候,中间出现各种问题,解决也花了很多时间,现在把错过的都记录下来,防止再错。

本篇使用的开发板为:友善之臂 MINI2451,芯片为S3C2451; 采用的烧录工具为:minitool

u-boot,uImage,rootfs都是现成的,这里只是讲如何把这三个放到开发板中能让它跑起来

 

1.先是u-boot:

动开发板上的u-boot是最烦的,弄错了开发板就开不起来了,因为u-boot也管部分硬件的初始化(例如串口初始化),如果u-boot没烧对地方那么开发板是没法正常启动的,如果是在改flash上的u-boot导致开发板开不起来的话,那就尝试用卡刷,找一张sd卡,烧入u-boot,再放到开发板中采用sd卡启动方式。

启动后用usb连接minitool再次向flash中刷u-boot。

 

2.uImage:

uImage我的烧录方式有两种:

用tftp在线从虚拟机上下载:

 

setenv bootcmd tftp 0x30000000 192.168.1.114:uImage\;bootm;saveenv

 

或者是将uImage固化到flash中:

 

tftp 0x30000000 192.168.1.114:uImage
nand erase 0x580000 0x400000 
nand write 0x30000000 0x580000 0x400000
setenv bootcmd nand read 30000000 580000 500000\;bootm;saveenv

 

(注意:此处的uImage烧写的位置是0x580000,此处分区是有要求的

Flash分区:
0----0xc0000 uboot
0xc0000-0x580000  env
0x580000 -0xa80000 kernel
0xa80000 -       rootfs

读的位置应该是在u-boot中设置好了的,除非自己再去修改,否则按照这个分区存放uImage和rootfs才不会出错。)

 

3.rootfs:

我在根文件系统上卡了很久,一直会出现这个问题:

后来发现是自己的nfs中的配置中的路径和实际在开发板中挂载的nfs路径不一样,才导致的。

修改:

vim /etc/exports    中将地址改为开发板中挂载的rootfs地址路径

原先设置错的路径为:/mini2440/nfsroot/rootfs

改完后要重启设置:/etc/init.d/nfs restart

用的也是在线的方式,采用nfs挂载在linux系统上:

 

setenv bootargs root=/dev/nfs nfsroot=192.168.1.114:/tftphome/rootfs ip=192.168.1.20:192.168.1.114:192.168.1.1:255.255.255.0::eth0:off console=ttySAC0,115200 init=/linuxrc lcd=P43

 

(在这条命令中,192.168.1.114是linux虚拟机上的地址,192.168.1.20是开发板上的ipaddr地址,其他的只要默认保持在同一网段就行,一般不用改)

(还有/tftphome/rootfs是我的虚拟机上rootfs文件的地址路径)

另外一种是固化到flash:

(1)用工具将rootfs 目录做成镜像     

mkcramfs  /tftphome/rootfs  rootfs.cramfs

 

(2)将rootfs.cramfs拷贝到/tftphome目录下

cp  rootfs.cramfs  /tftphome

 

(3)将rootfs.cramfs烧写到flash的第三个分区上
u-boot下执行如下命令

 

# tftp  0x30000000  192.168.1.114:rootfs.cramfs
# nand  erase  a80000  500000
# nand  write  30000000  a800000  500000

 

(4)重新设置u-boot启动参数(分别将内核和文件系统都固化到开发板上)

 

# setenv  bootargs  root=/dev/mtdblock3   init=/linuxrc console=ttySAC0,115200 ;saveenv

 

(注意:有时候遇到erase擦除失败或者write写不进去的时候    fail-5,是在那片区域产生了坏块,erase遇到会直接跳过去,

    然后当write写入时就会错误fail-5,解决方式是直接将那片区域格式化:scrub 0xa80000 500000)

 

 

其实在最后那边固化rootfs,我没弄出来,显示的还是上面的错误...还不知道错哪

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Evan_ZGYF丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值