好久没有更新博客了,最近工作比较忙,就没有时间记录博客,现在刚好有时间,而且以后打算每周五更新一次博客,也是对一周知识的总结。
我们知道,一个linux板端运行主要是依赖于三个文件,u-boot(启动文件)、kernel(内核)、rootfs(根文件系统),一般情况下我们使用的时候会直接把这些文件文件打包成一个镜像文件直接烧录进去,或者是打包成分区烧录,但在实际工作过程中,往往会遇到需要修改内核,或者是文件系统然后需要再编译烧录到板端,这个时候就需要知道怎么非裸烧,也就是单独烧录。
一、准备工作
1、板端需要连接网线
2、主机端需要设置好相关的ip(接下来备用)
3、准备好一个tftp服务,很多软件都有,我直接用的是MobaXterm软件自带的
二、配置板端
在板端之后马上点击任意按键进入u-boot启动模式,大概如图:
输入指令printenv:
可以发现这个时候板端还没有配置ip,所以下一步应该先配置相关的地址,可以一次性直接复制进去然后回车
setenv ipaddr 192.168.0.30
setenv serverip 192.168.0.28
setenv gatewayip 192.168.0.1
setenv netmask 255.255.255.0
setenv ethaddr 38:cd:1d:01:10:88
简单陈述一下上面的命令行:
setenv ipaddr 192.168.0.30 //板端地址,这个任意设置,需要注意的是要设置在和服务器同一网段下
setenv serverip 192.168.0.28 //这个是服务器地址,也就是你将使用哪个提供tftp服务的地址,同电脑
setenv gatewayip 192.168.0.1//这个是网段,这个需要同路由器地址
setenv netmask 255.255.255.0//这个是子网掩码,同你电脑
setenv ethaddr 38💿1d:01:10:88//这个是板端的物理地址,这个物理地址需要是独一无二的,可以任意设置,但同一网段下物理地址不能重复,也就是说同一个办公室下板端物理地址设置不能设置相同。
输入
sa
保存,然后再次输入printenv可以看出,这个时候已经设置成功
这个时候网络已经配置好了,现在先验证一下网络能不能使用
输入ping 192.168.0.28 ping一下服务器地址
ping 192.168.0.28
出现 host 192.168.0.28 is alive 说明网络是正常使用,而且板端配置已经准备就绪。
接下来输入以下命令
mw.b 82000000 0xff 400000
mw.b 82000000 0xff 400000 表示从82000000 地址写入400000个字节数,为什么是82000000 这个需要根据芯片文档给的物理地址适当调整 为什么是400000?,这个需要根据内核本身大小,比如这里规划内核文件大小为4M,4102410244=4194304,16进制刚好为400000.
接下来打开服务器:
注意:这里的文件一定要和tftp服务器的文件名保持一致,不然会出错:
可以根据对比下图查找文件是否出错:
利用tftp服务器进行传输文件,命令如下:
tftp 82000000 uImage
成功如图:
这个时候表示传输成功,接下来需要写入到flash中,需要注意的是实现要区别好flash类型,因为不同的flash类型,它们对用的写入指令不同,
如:
SPI NOR Flash
sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
sf probe 0;sf erase 100000 400000;sf write 82000000 100000 400000
这里是适应于nand flash
指令如下:
nand erase 100000 400000
nand write 82000000 100000 400000
这里的400000,为文件的实际大小,用16进制数表示,和前面计算方式一样。
然后输入
sa
保存成功,这样我们重新编译的内核,就成功烧录成功了!