adnega 11 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Это же совсем просто: в самом начале загрузчика проверять специальный флаг и прыгать в основную прошивку или продолжать выполнять загрузчик. При этом не тронув никакой периферии. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба специальный флаг, целостность прошивки, и какие - либо коды безопасности.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Какой такой fiq? Это же Cortex-M, нет там никакого fiq. Как же нет? А это что: /** \brief Disable FIQ This function disables FIQ interrupts by setting the F-bit in the CPSR. Can only be executed in Privileged modes. */ #define __disable_fault_irq __disable_fiq ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Как же нет? А это что: А это какая-то чушь (очевидно, перекочевала из кода для других процессоров ARM). Просто подтверждает, что этот код пишут простые смертные, вполне способные ошибаться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Это же совсем просто: в самом начале загрузчика проверять специальный флаг и прыгать в основную прошивку или продолжать выполнять загрузчик. Флаг в EEPROM? А почему сразу не прыгнуть? К чему эти танцы с бубном, если и так ясно что прыгать будем? специальный флаг, целостность прошивки, и какие - либо коды безопасности.... А при чем здесь reset? Программа бутлоадер стартанула, все проверила, теперь выставляет флаг, чтобы прыгнуть и делает ресет? Бессмыслица Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Это какой-то "мудрец" переименовал fast_interrupt от ARM в fault_interrupt для Cortex-M. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба поглядел доки на кортекс - м http://infocenter.arm.com/help/index.jsp?t...b/CHDBIBGJ.html нашел только PM Prioritizable interrupt mask: 0 = no effect. 1 = prevents the activation of all exceptions with configurable priority. то есть Reset, NMI, HardFault задушить этим битиком нельзя... HardFault душиться егойным регистром http://infocenter.arm.com/help/index.jsp?t...a/Cihieffb.html Reset понятно никак не душиться, Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба А это какая-то чушь (очевидно, перекочевала из кода для других процессоров ARM). Почему чушь? Код вполне имеет смысл: __attribute__( ( always_inline ) ) static __INLINE void __enable_fault_irq(void) { __ASM volatile ("cpsie f"); } /** \brief Disable FIQ This function disables FIQ interrupts by setting the F-bit in the CPSR. Can only be executed in Privileged modes. */ __attribute__( ( always_inline ) ) static __INLINE void __disable_fault_irq(void) { __ASM volatile ("cpsid f"); } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба А при чем здесь reset? Программа бутлоадер стартанула, все проверила, теперь выставляет флаг, чтобы прыгнуть и делает ресет? Бессмыслица бутлоадер может работать так старт - проверка - запуск боевой прошивки а может так старт - проверка - режим обновления прошивки - обновил прошивку, поставил флаг нормального старта - ресет и по первому пути... в таком случае вы точно ничего не забудите, и ваша основная программа начнется как после ресета, со всеми регистрами в правильных состояниях Почему чушь? Код вполне имеет смысл: http://infocenter.arm.com/help/index.jsp?t...ch02s08s01.html это от 7 арма... в кортаксах - м только CPSID i http://infocenter.arm.com/help/index.jsp?t...a/BABHBAAB.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба поглядел доки на кортекс - м http://infocenter.arm.com/help/index.jsp?t...b/CHDBIBGJ.html нашел только PM Prioritizable interrupt mask: 0 = no effect. 1 = prevents the activation of all exceptions with configurable priority. Не там смотрите: нужно в описании Cortex-M3 или M4 смотреть. 2.8. FAULTMASK register bit assignmentsBits Name Function [31:1] - Reserved [0] FAULTMASK 0 = no effect 1 = prevents the activation of all exceptions except for NMI. The processor clears the FAULTMASK bit to 0 on exit from any exception handler except the NMI handler. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба все там просто ссылки криво вставляются... я постом выше поправил ссылки... в кортаксах - м только CPSID i http://infocenter.arm.com/help/index.jsp?t...a/BABHBAAB.html отключает все крмое NMI и RESET, странно что про HardFault не упомянуто... О прошу прощения. Чет криво у них написано, если взять набор инструкций кортекса м3 Examples CPSID i ; Disable interrupts and configurable fault handlers (set PRIMASK) CPSID f ; Disable interrupts and all fault handlers (set FAULTMASK) CPSIE i ; Enable interrupts and configurable fault handlers (clear PRIMASK) CPSIE f ; Enable interrupts and fault handlers (clear FAULTMASK). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Биты состояния прерывания (I и F) были заменены новым регистром PRIMASK (однобитный регистр, который будучи установлен в 1, разрешает генерацию только немаскируемого прерывания и исключения HardFault; все остальные прерывания и исключения маскируются). Читаем Джозефа Ю. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба Почему чушь? Код вполне имеет смысл: Код имеет смысл, а вот комментарий не имеет: This function disables FIQ interrupts by setting the F-bit in the CPSR. Про комментарий я и написал - это чушь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба вот хрень какая-то, что же их официальный сайт то никак не определиться:? ну то есть надо понимать что осталось одно __disable_irq(); которое глушит все кроме ресета и NMI? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 21 мая, 2014 Опубликовано 21 мая, 2014 · Жалоба а может так старт - проверка - режим обновления прошивки - обновил прошивку, поставил флаг нормального старта - ресет и по первому пути... в таком случае вы точно ничего не забудите, и ваша основная программа начнется как после ресета, со всеми регистрами в правильных состояниях Не будет "со всеми регистрами". Флаг надо както передать. EEPROM? Его надо будет както прочтать, значит инициализировать регистры, сделать какието действия, то есть все равно ни как про ресете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться