Я работаю над простым программным обеспечением AVR для своего университетского проекта, и я застрял в понимании того, как я могу сопоставить память из шестнадцатеричного файла с фактической флэш-памятью.AVR memory and intel hex
Например, intel hex предоставляет нам информацию о начальном адресе блока данных, количестве байтов в нем и самих данных. Проблема связана с тем, что AVR MCU, в частности ATmega16, часто имеют один адрес для двух байтов: высокий и низкий.
Сначала я написал простую функцию, которая просто считывает все данные из шестнадцатеричного файла и записывает их последовательно, увеличивая адрес на каждый переданный два байта. К моему удивлению, это работает на простом моргающем коде. Однако я не уверен, что если этот подход будет работать, если кому-то нужна сложная структура памяти.
Так вопросы:
- Будет ли это решение работать на сложных структурах памяти?
- Если нет, как я могу отобразить адрес hex hex в фактический адрес флэш-памяти? Проблема в том, что в формате hex hex нет высоких и низких байтов, только адрес = байт.
Что делать, если я создаю пользовательский раздел в конце флэш-памяти и размещаю там некоторые данные, что-то вроде этого подразумевается под «сложными структурами памяти». На самом деле это не очень сложно;) Так что мне просто нужно разделить адрес на два, и это все? –