Использование W806 Как добавить большое количество пользовательских данных в конец прошивки flash

Опубликовано в 2022-05-09 14: 42: 19

В некоторых сценариях использования, У пользователя много данных, которые нужно записать заранее flash Чжун, Операции в коде приложения flash Интерфейс чтения и записи для чтения этих данных, В этой статье будет показано, как эти данные могут быть добавлены sdk Генерируемые W806. fls Конец прошивки, Затем, используя инструмент загрузки flash Ли.
Предположим, что файл пользовательских данных user. bin, А user. bin Положить SDK Содержание bin/W806 В каталоге. user. bin Я просто записывал данные.
image. png

Открыть tools/W806/utilities/aft_build_project. sh Документация, В соответствии с W806 Правила создания прошивки, В каждом. bin Добавить перед файлом header, Создать. img Документация, Будет много. img Файлы соединяются и создаются в конце. fls Документация. Итак, два определения были добавлены в следующем месте, user_img_header Это пользовательские данные header Адрес хранения, user_img_pos Это начальный адрес для хранения пользовательских данных, Оба адреса можно определить самостоятельно, Следите за тем, чтобы не перекрывались адреса, по которым запускается прошивка, Начальный адрес для запуска прошивки run_img_header=0x08010000, Создано после компиляции W806. img Размер файла - это размер запущенного прошивки, После сложения они представляют собой минимальный начальный адрес данных пользователя, Меньше этого адреса перекрывается, Сделать ошибку.
image. png

Добавить следующие две строки кода в следующий код, wm_tool. exe Это инструмент для создания прошивки, Конкретно можно посмотреть wm_tool. c Документация, Вот только несколько используемых параметров. -b Представитель будет работать. bin Путь к файлу, Здесь находится bin/W806/user. bin, Это также соответствует каталогу, Если поместить SDK Под другими путями, Здесь тоже нужно внести изменения. -o Создано представителем. img Путь и имя файла, Можно поместить в тот же каталог, Так что bin/W806/user. -it Маркировка img Тип документа, Равно 0 Представляет secboot. img, Равно 1 Это означает запуск прошивки img, Здесь мы выбираем тот же тип прошивки, что и при запуске. -fc Делегаты сжаты, Выбор 0 Без сжатия. -ra Начальный адрес для хранения прошивки, Выберите предыдущее определение user_img_pos. -ih Выражение header Адрес, Выберите предыдущее определение user_img_header, У нас разные адреса 0x400, Это отсылка к определению двух прошивок. При необходимости обратите внимание на адрес 4k Целое число. Остальные параметры пока не используются, Без объяснений.
Следующая строка кода будет сгенерирована. img Файлы сгенерированы. fls Документация. Можно увидеть оригинальный код только secboot. img А W806. img Соединить, Создано W806. fls. Так что W806. img Сзади добавить user. img Параметры. Сохранить изменения.
image. png

Чтобы проверить успех, В main. c Добавить тестовый код следующим образом, Вызов flash Интерфейс чтения HAL_FLASH_Read Прочитайте только что определенный начальный адрес пользовательских данных 0x08080400 Данные о местоположении, Смотрим ли и user. bin Содержание совпадает.
image. png

Перекомпиляция, Создание прошивки, Можно увидеть в/bin/W806 В каталоге, Создано user. img Документация.
image. png

Загрузить прошивку, Использовать Upgrade Tools V1. 4. 19 Версия, Можно посмотреть в процессе загрузки, Всего скачали три. img Документация, Печатать данные и user. bin Данные в одном样的.
image. png

如果В修改应А代码过程Чжун担心固件А数据地址有重叠而不知道, 可以В sdk 的 ld/W806/gcc_csky. ld ДокументацияЧжун修改运行区固件的大小, 这样如果固件超范围到了数据区地址, 会编译报错, 可以重新划分数据起始地址向后移动.
image. png

1 条评论

Опубликовано
вопросыы