先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash
Posted suzkfly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash相关的知识,希望对你有一定的参考价值。
1. 制作SD卡
先准备一张2G的SD卡(不能用8G的,2G的卡和8G的卡协议不一样),和烧写SD卡的工具write_sd以及需要烧写到SD卡中的u-boot-movi.bin。将SD卡格式化后连接到Ubuntu虚拟机中,注意在SD卡需要插入到读卡器中,不能用电脑自带的SD卡槽,否则在Ubuntu下认不到。先执行ls /dev/sdb*,能够看见有一个/dev/sdb文件,说明Ubuntu认到SD卡了。如下图:
执行命令:sudo ./write_sd /dev/sdb u-boot-movi.bin
将u-boot写入SD卡中。将SD卡插入6410开发板中,将拨码开关设置为SD卡启动,连接串口运行minicom或其他串口终端(先保证串口配置是正确的),启动板子后串口正常打印则说明SD卡上成功烧写了U-boot。需要说明的是写入SD卡的u-boot-movi.bin支持DNW但不支持TFTP,而且write_sd这个工具制作出来似乎就是为了烧写u-boot-movi.bin这一个文件,不能写入其他的文件 ,因此我是借助u-boot-movi.bin烧写自己编译出的U-boot。
2. 使用DNW下载U-boot
先准备好要下载进Nandflash的U-boot “u-boot-nand.bin”
1)在板子终端中输入:dnw 50008000
2)在虚拟机中输入:sudo dnw u-boot-nand.bin
成功后在6410内存地址为50008000的地方存放的就是u-boot-nand.bin,此时要将该文件写入Nandflash的0地址中。
3)在板子终端输入:nand erase 0
每次要往Nandflash中写入新数据时一定要保证该区域是擦除过的。nand erase后面可以跟两个参数,第一个是要擦除的首地址,第二个参数是要擦除的大小,如果输入nand erase 0则是整片擦除。
4)在板子终端输入:nand write 50008000 0 32000
第4步的意思是将内存地址为50008000的数据写入Nandflash中,写入长度为0x32000个字节。32000这个数是根据u-boot-nand.bin文件大小而定的,我的u-boot-nand.bin不到200k,因此写入200k确保U-boot完全写入。
5)将板子设置为Nandflash启动,重启后看打印信息,正常输出表明U-boot写入Nandflash成功并且能从Nandflash启动。
以上是关于先在SD卡上启动U-boot,再烧写新的U-boot进Nandflash的主要内容,如果未能解决你的问题,请参考以下文章
rk3399芯片SD卡烧写idbloader.img无法启动
tiny4412u-boot烧写及根文件系统制作(不进入终端问题)