以 128M SPI NAND Flash 为例
以下的操作均基于图示的地址空间分配,您也可以根据实际情况进行调整。
tftp服务器的作用就是将烧录用到的uboot等相关文件拷贝到从tftp服务器目录下下载到板子上。 打开tftpd32.exe软件,如下图所示,tftfp32既然是个ftfp服务器,那么首先就要选择文件的路径,点击Browse,选择要传输文件的路径:
接下来选择你要给某个设备传输文件的IP(比如开发板,路由器等),这个ip一定不能选错哦。同时还要保证这个IP和windows下的IP在同一个网段下。注意,如果没有目标ip可以选择,通常是因为目标没有上电。
选择好路径和IP后,可以用目标机ping windows的IP,能ping通就表示可用。
进入uboot命令行后,你可以输入“print”命令,打印查看现在的环境变量,接下来就是修改几个重要的环境变量:bootargs、bootcmd和serverip。输入如下命令做修改
setenv bootargs '' setenv bootcmd '' setenv serverip 'your computer IP' saveenv注意: ip那里得修改成你电脑的ip。 将这两个信息做屏蔽,这样系统上电后只会停留在uboot模式,方便调试uboot(这里其实就可以用HiTool.exe软件进行uboot、kernel和rootfs等进行烧写了)。
如果出现 *** ERROR: `ipaddr’ not set 则再输入如下命令:
setenv ipaddr 192.168.1.102在secureCRT软件hisi3516dv300板子的串口终端依次输入如下命令:
mw.b 0x82000000 0xff 0x100000 tftp 0x82000000 u-boot-hi3516dv300.bin nand probe 0;nand erase 0x0 0x100000;nand write 0x82000000 0x0 0x100000含义说明:
mw.b 0x82000000 0xff 0x100000 :对内存进行初始化,其中0x82000000为flash内存地址**tftp 0x82000000 u-boot-hi3516dv300.bin ** :U-boot下载到内存nand probe 0:探测并初始化nand flashnand erase 0x0 0x100000:擦除1M大小nand write 0x82000000 0x0 0x100000 :从内存写入nand flashyaffs2文件系统的选型要根据自己板子的flash来,我的flash是nand 128KB\128M的,选择的是2k_24bit。
mw.b 0x82000000 0xff 0x7b00000; tftp 0x82000000 rootfs_hi3516dv300_2k_24bit.yaffs2; nand erase 0x500000 0x7b00000; nand write.yaffs 0x82000000 0x500000 9C1F00还要注意下面的写到内存的大小,需要计算yaffs2文件系统的大小,是文件系统镜像的十进制转换成的十六进制大小。
(注意 linux-4.9.y kernel 默认文件系统只读,需要在 bootargs 中加入rw 选项,文件系统才可读写)
setenv bootargs 'mem=128M console=ttyAMA0,115200 coherent_pool=2M root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hinand:1M(boot),4M(kernel),123M(rootfs)' setenv bootcmd 'nand read 0x82000000 0x100000 0x400000;bootm 0x82000000' saveenv烧写成功,如下图 注意:当有uboot时,可以不用重新烧写uboot,只需要重新烧写内核和文件系统即可。
翟羽嚄 认证博客专家 算法 机器学习 图像处理 我经常会分享一些智能驾驶、自动驾驶、图像识别、嵌入式linux、嵌入式音视频开发等知识,有兴趣的朋友可以关注我的头条号——翟羽镬,ID:1661013377414159,这里会分享一些整理好的且有一定价值的文章和源码。