Передача управления на начало (startup code) программы
От: 00011011  
Дата: 26.12.19 08:16
Оценка:
Есть микроконтроллер ARM, в нем реализована следующая архитектура — первый сектор занимает собственноручно написанный загрузчик (для обновления прошивки и еще некоторых действий), остальное отдается под рабочую программу.
Компиляторы для рабочей программы IAR и GCC (может использоваться любой из них)
Как лучше организовать передачу управления из загрузчика на рабочую программу?
два варианта
1. рабочая программа имеет такой же стандартный вид как и обычная монолитная программа для микроконтроллера; управление передается на начало кода, в результате происходит повторная инициализация всего железа (которое уже было инициализировано загрузчиком). Это занимает время, и создает еще некоторые неудобства (проблемная переинициализация некоторой внешней периферии, которая нужна и загрузчику и рабочей программе)
2. рабочая программа создается без всякого стартап-кода, управление передается непосредственно на адрес main (я его предварительно получаю и сохраняю в таблице с фиксированным смещением). В этом случае имеется следующий недостаток — все глобальные переменные оказываются неинициализированными, так как не исполняется код перед main. Конечно можно помнить об этом и явно инициализировать их всех в начале main, но это не очень удобно, особенно с чужим кодом.

Есть какой-то компромиссный вариант — передать управление не на Main, а на инициализацию глобальных переменных, но при этом обойтись без
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.