2

我想使用 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"

要将闪存配置上传到文件,我需要确定闪存的大小。根据这篇文章,闪存的大小将是 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
4

1 回答 1

2

请参阅UM0290,我们在其中找到:

每个备用设置字符串描述符必须遵循此内存映射,否则 PC 主机软件将能够解码所选设备的正确映射:

  • @:检测这是一个特殊的映射描述符(避免解码标准描述符)
  • /:用于区域之间的分隔符
  • 每个地址最多 8 位以“0x”开头</li>
  • /:用于区域之间的分隔符
  • 扇区数最多为 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 个扇区,并且它们是“可读、可擦除和可写”的(即闪存)。您确定您对设备闪存布局的期望吗?

于 2019-02-01T13:04:06.740 回答