概述
缘由:通过在u-boot命令行修改flash的factory分区的uuid,然后进入kernel后,就可以通过已经写好的/sys/device/下的节点读取flash中factory分区中uuid的值
大体流程:开机进入uboot命令行,用mw命令向内存中写入要存的uuid,然后通过sf命令,把内存中的数据写入flash
mw:
uboot下输入指令mw,会提示md的用法,memory write,即向内存中写入数据
U-Boot-PetaLinux> mw
mw - memory write (fill)
Usage:
mw [.b, .w, .l] address value [count]
bwl的意思同下,address是要写入内存的地址,value是要写入的值,count是从address开始要写入多少个数,这些都是16进制数。
示例:
U-Boot-PetaLinux> mw.w 0x10000000 0x1234 1
U-Boot-PetaLinux> md.w 0x10000000 1
10000000: 1234
md
uboot下输入指令md,会提示md的用法,memory display,即内存显示。
b:8位
w:16位
l:32位(默认值)
示例:
上述0x10000000是要显示内存的那个地址,后面的数字是输出的个数,注意是16进制的。
直接输入md来显示,默认是以32位为单位输出 。
到这里 内存中已经有了我们写入的值了,可以通过mw写 md看
uboot sf 命令用法:
uboot中如果支持spi/qspi flash, 那么可以使用sf的erase, read, write命令操作spi flash
sf read用来读取flash数据到内存
sf write写内存数据到flash
sf erase 擦除指定位置,指定长度的flash内容, 擦除后内容全1
具体用法
sf probe [[bus:]cs] [hz] [mode] - init flash device on given SPI bus and chip select
sf read addr offset len - read len' bytes starting at
offset’ to memory at `addr’
sf write addr offset len - write len' bytes from memor at
addr’ to flash at `offset’
sf erase offset [+]len - erase len' bytes from
offset’ +len' round up
len’ to block size
sf update addr offset len - erase and write len' bytes from memory at
addr’ to flash at `offset’
使用范例
sf probe
在使用sf read sf write之前,一定要调用sf probe
sf write 0x82000000 0x0 0x20000
把内存0x8200 0000处的数据, 写入flash的偏移0x0, 写入数据长度为0x20000(128KB), 操作偏移和长度最小单位是Byte
sf read 0x82000000 0x10000 0x20000
把flash偏移0x10000(64KB)处, 长度为0x20000(128KB)的数据, 写入到内存0x82000000, 操作偏移和长度最小单位是Byte
sf erase 0x0 0x10000
擦除偏移0x0处, 到0x10000之间的擦除块, 擦除操作是以erase block为单位的, 要求offset和len参数必须是erase block对齐的
这里踩了坑:
我在uboot (include/config/isvp_t30.h)中规定mtd6的分区大小是3000K,开机就是挂载不上mtd6。一直报flash没擦干净,后来才知道,mtd这个数要32的整数倍才行,换成3072就可以了
不确定是因为mtd分区最小单元就是32K,还是说sf erase的最小单元是32k
从sf命令,可以看出几点:
-
spi flash没有oob数据存在, 也就是不用考虑EDC ECC, 也没有坏块管理概念.
-
支持Byte级的读写操作, 支持随机访问.
如何验证读写效果
可以结合uboot md命令, sf read, sf write都涉及到内存操作, 可以用md查看内存数据
md 0x82000000 0x100
打印0x82000000开始, 长度范围256字节的内存数据
最后
以上就是无私白昼为你收集整理的u-boot命令行修改flash的全部内容,希望文章能够帮你解决u-boot命令行修改flash所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复