Начал осваивать архитектуру ARM, есть отладочная плата с RM9200+DataFlash+SDRAM. Установил IAR (кажется, 4.40). Первый проект (по традиции) - мигание светодиодом, взят из примеров IAR - в процессе отладки во внутренней RAM работает (отладка через Wiggler), светодиод мигает. Но при попытке продвинуться дальше возникает ряд вопросов.
1. Если я залил проект в RAM и он работает, то я ожидаю, что по нажатию RESET (без выкл. питания) программа в памяти стартует заново, и светодиод продолжит мигать... Однако этого не происходит. Почему?
2. Пытаюсь добавить в функцию main() что-то типа
Код
printf("Init OK \n");
При сборке линкер ругается на стек, увеличиваю стек с 2000 до 4000, проект собирается нормально. Но при заливке в кристалл возникает ошибка уже на этапе заливки, и в правом окне отладки вместо внятных ассемблерных инструкций какой-то мусор.
3. Что из себя представляет mac-файл ? Насколько я понял, он заливается и выполняется в контроллер до заливки основной программы. Т. е. это и есть т. н. бутлоадер, или я ошибаюсь ?
4. Зачем в принципе придумано такое многоступенчатое разделение исполняемого кода - сначала .mac файл, затем Startup.s79, затем lowlevelinit, и только потом main() ? Разве нельзя сделать "по-простому" - начинаем сразу с функции main(), в которой и инициализируем всё low-level хозяйство и далее приступаем к основному коду ?
Сделано в Китае. Упаковано в России.