Как определить размер внутренней вспышки для цели?

Я хочу залить прошивку устройства в файл с помощью 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 х 1кБ.

Что означает «кг» в 0002 кг?
В инструкциях, которым я следую (в другом месте, для другого устройства, см. Выше), используется 128 x 1kB, что, как я считаю, неверно.
Как я могу рассчитать размер флеш-памяти и что произойдет, если я установлю слишком большой размер памяти для загрузки изображения?

Команда такая:

dfu-util -a 0 -s 0x08000000:131072 -U ./original.bin

Я думаю так должно быть

dfu-util -a 0 -s 0x08000000:65536 -U ./original.bin

person linuxUser123    schedule 31.01.2019    source источник
comment
Когда я устанавливаю слишком большой размер памяти, кажется, что любой недопустимый адрес возвращает 0xFF.   -  person linuxUser123    schedule 01.02.2019


Ответы (1)


См. UM0290, в котором мы находим:

Каждый дескриптор строки альтернативных настроек должен следовать этому сопоставлению памяти, иначе программное обеспечение хоста ПК сможет декодировать правильное сопоставление для выбранного устройства:

  • @: Чтобы определить, что это специальный дескриптор отображения (чтобы избежать декодирования стандартного дескриптора)
  • /: для разделителя между зонами
  • Максимум 8 цифр на адрес, начиная с «0x».
  • /: для разделителя между зонами
  • Максимум 2 цифры для количества секторов
  • *: для разделителя между количеством секторов и размером сектора
  • Максимум 3 цифры для размера сектора от 0 до 999
  • 1 цифра для множителя размера сектора. Допустимые значения: B (байт), K (килограмм), M (мега).
  • 1 digit for the sector type as follows:
    • a (0x41): Readable
    • b (0x42): стираемый
    • c (0x43): читаемый и стираемый
    • d (0x44): возможность записи
    • e (0x45): доступно для чтения и записи
    • f (0x46): стирание и запись
    • g (0x47): чтение, стирание и запись

Таким образом, ваша строка действительно означает, что внутренняя флэш-память состоит из 64 секторов по 2 КБ и что они «читаемые, стираемые и записываемые» (т.е. флэш). Вы уверены в своих ожиданиях от макета флеш-памяти устройства?

person unwind    schedule 01.02.2019
comment
Это означает, что размер внутренней флэш-памяти составляет 64x2x1024 байта. Спасибо за эту отличную ссылку. - person linuxUser123; 01.02.2019