Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Написание bootloader
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
_Артём_
Добрый вечер.
Смотрю сейчас пример реализации boot для CM3 и как-то стало мне странно - используются прерывания. Раньше когда писал boot для AVR прерывания не использовал.

Есть ли смысл так делать для Cortex-M3:
1. Сократить таблицу до SP и Reset_Handler-a
2. Проверять флаги UART_RX и SysTick вместо прерываний.

?
Сергей Борщ
QUOTE (_Артём_ @ Jul 17 2012, 23:03) *
Смотрю сейчас пример реализации boot для CM3 и как-то стало мне странно - используются прерывания.
Что же в этом странного, если есть возможность переключать таблицу векторов?
QUOTE (_Артём_ @ Jul 17 2012, 23:03) *
Раньше когда писал boot для AVR прерывания не использовал.
А я использовал. В тех AVR, где есть IVSEL. В меге48 не использовал - там такой возможности нет.
QUOTE (_Артём_ @ Jul 17 2012, 23:03) *
Есть ли смысл так делать для Cortex-M3:
Если загрузчик должен делать все и еще бегать за пивом, но при этом умещаться в первую страницу флеша размером в 4К, то наверное смысл есть. Если же флеша на загрузчик хватает - то зачем?
_Артём_
Цитата(Сергей Борщ @ Jul 18 2012, 11:33) *
Что же в этом странного, если есть возможность переключать таблицу векторов?

Да, наверное неиспользование прерываний - пережитки прошлого.


Цитата(Сергей Борщ @ Jul 18 2012, 11:33) *
Если же флеша на загрузчик хватает - то зачем?


Да, смысла нет в такой экономии. Экономия на таблице - сотня-другая байт.

Спасибо.
Hamster1979
Цитата
Что же в этом странного, если есть возможность переключать таблицу векторов?
Возможность переключать таблицу векторов есть практически всегда, вопрос только как она реализована - аппаратно(как в AVR, где есть IVSEL, Cortex-M3) или на многих микроконтроллерах можно ее реализовать программно(если команды ассемблера позволяют вызвать обработчик прерывания из ОЗУ). Например я реализовывал бутлоадер с прерываниями на MSP430 - аппаратной возможности переключения таблицы нет, прерывания запускаю по адресу из ОЗУ (фиксированная область памяти, как бы програмная таблица прерывания получается , туда просто в бутлоадере свои указатели на обработчики пишешь, а в основной программе в ту же область памяти свои прописываешь).
Сергей Борщ
QUOTE (Hamster1979 @ Jul 19 2012, 10:47) *
или на многих микроконтроллерах можно ее реализовать программно
Да, безусловно. На MSP430 я тоже делал подобное. Но конкретно в меге48 4К кода всего (на загрузчик и приложение) и реализация программного переключения отжирает слишком много кода. Не стоит там девчинка вые... овчинка выделки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.