реклама на сайте
подробности

 
 
6 страниц V  < 1 2 3 4 > »   
Reply to this topicStart new topic
> STM32: сброс всей периферии перед переходом из загрузчика в основную прошивку
adnega
сообщение May 21 2014, 08:13
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(scifi @ May 21 2014, 16:17) *
Это же совсем просто: в самом начале загрузчика проверять специальный флаг и прыгать в основную прошивку или продолжать выполнять загрузчик.

При этом не тронув никакой периферии.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 21 2014, 08:16
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



специальный флаг, целостность прошивки, и какие - либо коды безопасности....
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 21 2014, 08:29
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(scifi @ May 21 2014, 15:29) *
Какой такой 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

?
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 08:45
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_Артём_ @ May 21 2014, 16:39) *
Как же нет? А это что:

А это какая-то чушь (очевидно, перекочевала из кода для других процессоров ARM). Просто подтверждает, что этот код пишут простые смертные, вполне способные ошибаться.
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение May 21 2014, 09:02
Сообщение #20


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(scifi @ May 21 2014, 07:17) *
Это же совсем просто: в самом начале загрузчика проверять специальный флаг и прыгать в основную прошивку или продолжать выполнять загрузчик.

Флаг в EEPROM?
А почему сразу не прыгнуть? К чему эти танцы с бубном, если и так ясно что прыгать будем?

Цитата(Golikov A. @ May 21 2014, 07:26) *
специальный флаг, целостность прошивки, и какие - либо коды безопасности....

А при чем здесь reset?
Программа бутлоадер стартанула, все проверила, теперь выставляет флаг, чтобы прыгнуть и делает ресет?
Бессмыслица


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 21 2014, 09:06
Сообщение #21


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Это какой-то "мудрец" переименовал fast_interrupt от ARM в fault_interrupt для Cortex-M.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 21 2014, 09:07
Сообщение #22


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



поглядел доки на кортекс - м
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 понятно никак не душиться,

Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 21 2014, 09:08
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(scifi @ May 21 2014, 16:55) *
А это какая-то чушь (очевидно, перекочевала из кода для других процессоров 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");
}
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 21 2014, 09:11
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



Цитата
А при чем здесь 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
Go to the top of the page
 
+Quote Post
_Артём_
сообщение May 21 2014, 09:12
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Golikov A. @ May 21 2014, 17:17) *
поглядел доки на кортекс - м
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.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 21 2014, 09:21
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



все там
просто ссылки криво вставляются... я постом выше поправил ссылки...

в кортаксах - м только

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).
Go to the top of the page
 
+Quote Post
adnega
сообщение May 21 2014, 09:22
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата
Биты состояния прерывания (I и F) были заменены новым регистром PRIMASK (однобитный регистр, который будучи установлен в 1, разрешает генерацию только немаскируемого прерывания и исключения HardFault; все остальные прерывания и исключения маскируются).

Читаем Джозефа Ю.
Go to the top of the page
 
+Quote Post
scifi
сообщение May 21 2014, 09:23
Сообщение #28


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Цитата(_Артём_ @ May 21 2014, 17:18) *
Почему чушь? Код вполне имеет смысл:

Код имеет смысл, а вот комментарий не имеет:
Цитата
This function disables FIQ interrupts by setting the F-bit in the CPSR.

Про комментарий я и написал - это чушь.
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение May 21 2014, 09:25
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454



вот хрень какая-то, что же их официальный сайт то никак не определиться:?

ну то есть надо понимать что осталось одно
__disable_irq();
которое глушит все кроме ресета и NMI?
Go to the top of the page
 
+Quote Post
A. Fig Lee
сообщение May 21 2014, 09:25
Сообщение #30


Знающий
****

Группа: Участник
Сообщений: 974
Регистрация: 4-04-08
Из: далека
Пользователь №: 36 467



Цитата(Golikov A. @ May 21 2014, 08:21) *
а может так
старт - проверка - режим обновления прошивки - обновил прошивку, поставил флаг нормального старта - ресет
и по первому пути... в таком случае вы точно ничего не забудите, и ваша основная программа начнется как после ресета, со всеми регистрами в правильных состояниях

Не будет "со всеми регистрами".
Флаг надо както передать. EEPROM?
Его надо будет както прочтать, значит инициализировать регистры, сделать какието действия,
то есть все равно ни как про ресете.


--------------------
Верить нельзя никому, даже себе. Мне - можно.
Go to the top of the page
 
+Quote Post

6 страниц V  < 1 2 3 4 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01489 секунд с 7
ELECTRONIX ©2004-2016