我想使用dfu-util将设备固件上传到文件中。如何确定闪存的正确大小?
将设备启动到DFU后,可以使用以下命令找到它:
dfu-util -l
我收到以下信息:
Found DFU: [0483:df11] ver=2200, devnum=8, cfg=1, intf=0, alt=1, name="@Option Bytes /0x1FFFF800/01*016 e", serial="FFFFFFFEFFFF"
Found DFU: [0483:df11] ver=2200, devnum=8, cfg=1, intf=0, alt=0, name="@Internal Flash /0x08000000/064*0002Kg", serial="FFFFFFFEFFFF"
要将闪存配置上传到文件,我需要确定闪存的大小。根据{{3}},其大小为64 x 1kB闪存。
0002Kg中的“ Kg”是什么意思?
我遵循的说明(在其他地方,关于其他设备,请参见上文)正在使用128 x 1kB
,我认为这是不正确的。
如何计算闪存的大小?如果设置的内存太大而无法下载图像,会发生什么?
命令是:
dfu-util -a 0 -s 0x08000000:131072 -U ./original.bin
我认为应该是
dfu-util -a 0 -s 0x08000000:65536 -U ./original.bin
答案 0 :(得分:0)
请参阅UM0290,其中包含:
每个备用设置字符串描述符必须遵循此内存映射,否则PC 主机软件将能够为所选设备解码正确的映射:
@
:检测到这是一个特殊的映射描述符(以避免解码标准 描述符)/
:用于区域之间的分隔符- 每个地址最多8位数字,以“ 0x”开头
/
:用于区域之间的分隔符- 扇区数最多2位
*
:用于分隔扇区数和扇区大小- 扇区大小在0到999之间的最多3位数字
- 1个数字,表示扇区大小乘数。有效的条目是:
扇区类型的B
(字节),K
(基洛),M
(兆)- 1位数字,如下所示:
a
(0x41):可读b
(0x42):可擦除c
(0x43):可读可擦d
(0x44):可写e
(0x45):可读可写f
(0x46):可擦除和可写g
(0x47):可读,可擦和可写
因此,您的字符串确实确实意味着内部闪存是2 KB的64个扇区,并且它们是“可读,可擦除和可写的”(即闪存)。您确定对设备的闪存布局有期望吗?