Я работаю над простым программистом AVR для своего университетского проекта, и я застрял в понимании того, как я могу отобразить память из шестнадцатеричного файла в фактическую флэш-память.
Например, Intel hex предоставляет нам информацию о начальном адресе блока данных, количестве байтов в нем и самих данных. Проблема заключается в том, что микроконтроллеры AVR, в частности ATmega16, часто имеют один адрес для двух байтов: старший и младший.
Сначала я написал простую функцию, которая просто считывает все данные из шестнадцатеричного файла и записывает их последовательно, увеличивая адрес на один каждые два переданных байта. К моему удивлению, он работает с простым мигающим кодом. Однако я не уверен, сработает ли этот подход, если кому-то нужна сложная структура памяти.
Итак, вопросы:
- Будет ли это решение работать со сложными структурами памяти?
- Если нет, как я могу сопоставить шестнадцатеричный адрес Intel с фактическим адресом флэш-памяти? Проблема в том, что в шестнадцатеричном формате Intel нет старших и младших байтов, только адрес = байт.