BOOTRST_____IVSEL__Адрес сброса_________________________Начальный адрес векторов прерываний 1______________0____$0000_______________________________$0002 1______________1____$0000_______________________________Адрес сброса в загрузочном секторе + $0002 0______________0____Адрес сброса в загрузочном секторе_____$0002 0______________1____Адрес сброса в загрузочном секторе_____Адрес сброса в загрузочном секторе + $0002
FUSE-бит BOOTRST определяет место, откуда будет стартовать программа, если есть бутлоадер, то устанавливаем этот бит (и не забываем про настройки компилятора!) Если бутлоадер работает с периферией по прерываниям и Вы не хотите мешать обработчики бутлоадера и основной проги, то для этого существует бит IVSEL, который перемещает указатель на таблицу прерываний в секцию бутлоадера. Алгоритм работы с бутлоадером: 1. запускается бутлоадер, прерывания запрещены 2. проверяется, например, запрос на обновление ПО или другие действия загрузчика 3. таблица перемещается в секцию бутлоадера, прерывания разрешаются 4. Работа в бутлоадере: ПО перешивается полностью, вместе со своей таблицей прерываний и т.д. и т.п. 5. прерывания запрещаются, таблица переводится в секцию приложения 6. переход на основную прогу.
Что еще хотите узнать?
Сообщение отредактировал alexeyv - Mar 13 2015, 04:20
|