如何确定目标内部闪存的大小?

时间:2019-01-31 21:30:11

标签: stm32 dfu

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

1 个答案:

答案 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个扇区,并且它们是“可读,可擦除和可写的”(即闪存)。您确定对设备的闪存布局有期望吗?