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

 
 
> stm32 NVIC: сброс маскировки прерываний внутри обработчика
jeka
сообщение Jul 12 2017, 16:58
Сообщение #1


Administrator
***

Группа: Свой
Сообщений: 400
Регистрация: 10-05-04
Пользователь №: 1



Назрела необходимость (уже давно), разрешить прерывания более низкого приоритета в обработчике высокого приоритета. Способ в лоб - подкорректировав стек и сделать фиктивный возврат из прерывания.
С помощью MRS/MSR как я понял этого не сделать - в документации написано что запись в IPSR игнорируется.
Есть ли какое-то более человеческое решение чем через формирование стека возврата и возврат из прерывания?

Собственно, зачем это нужно - в случае аварии вызывается определенный irq. В обработчике нужно сделать некую аварийную последовательность действий, но для этого нужны рабочие обработчики другиз, в т.ч. низкоприоритетных прерываний. Можно конечно приоритеты нужных irq повысить.
Но есть вторая задача - сделать софтовый ресет (разумеется с обнулением стека), в нужную функцию и с разблокированными прерываниями. Например, в bootolader для перепрошивки.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
jeka
сообщение Jul 14 2017, 15:37
Сообщение #2


Administrator
***

Группа: Свой
Сообщений: 400
Регистрация: 10-05-04
Пользователь №: 1



Цитата(AVI-crak @ Jul 14 2017, 02:05) *
Править уровни прерываний и их очереди в теле пользовательских прерываний - это есть громадный костыль, означающий что программист накосячил в нескольких местах и не смог исправить.

Никто уровни и очереди не правит. Еще раз - задача выполнить reset, но не всего и сразу, а выборочный. Включая сброс NVIC. Чтобы часть периферии и данных в RAM остались нетронутыми.

Цитата
Чтобы не ресетить девайс - нужно изначально закладывать архитектуру здоровой OS

Вы эту ОС будете переустанавливать/обновлять без ресета?
Действия при аварии электропитания тоже предполагаются без ресета?
Go to the top of the page
 
+Quote Post
LightElf
сообщение Jul 24 2017, 09:50
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 180
Регистрация: 5-04-09
Пользователь №: 47 205



QUOTE (jeka @ Jul 14 2017, 18:37) *
Чтобы часть периферии и данных в RAM остались нетронутыми.

Дык не трогайте данные в RAM - они и останутся нетронутыми. Ресет содержимое SRAM не затрагивает. Для пущей безопасности нужный кусок SRAM защитите CRC или еще каким образом.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2017, 10:45
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(LightElf @ Jul 24 2017, 12:50) *
Ресет содержимое SRAM не затрагивает.

Да ладно??! А код boot-ROM, выполняемый после сброса, где стек и рабочие переменные размещает? laughing.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2017, 11:14
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 25 2017, 13:45) *
Да ладно??! А код boot-ROM, выполняемый после сброса, где стек и рабочие переменные размещает? laughing.gif

В STM32 SRAM не страдает от сброса (кроме, разумеется, сброса от передергивания питания, после которого там всегда будет "мусор").
STM32 RAM behavior after soft-reset


зы Помню, что как-то давно я все недоумевал, зачем в STM32 есть boot-режим старта прямо из ОЗУ (соотв. ремап вектора сброса на начало ОЗУ)? ...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2017, 12:02
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 25 2017, 14:14) *
В STM32 SRAM не страдает от сброса (кроме, разумеется, сброса от передергивания питания, после которого там всегда будет "мусор").

Да ладно?!! Они умудрились написать код чисто на регистрах и без использования стека??? Прямо чудеса чудесатые какие-то рассказываете..... biggrin.gif
Или они стек boot-ROM-а научились размещать в облаке? santa2.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2017, 12:30
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 25 2017, 15:02) *
Да ладно?!! Они умудрились написать код чисто на регистрах и без использования стека??? Прямо чудеса чудесатые какие-то рассказываете..... biggrin.gif

Вы ничего не путаете? sm.gif

В STM32 есть два спец пина BOOT0 и BOOT1, оменно они определяют кто будет запускаться при старте проца:
user-код (User Flash memory), boot-загручик (System memory), ОЗУ или еще что-то (например, в "толстых" камнях).
Опрос этих пинов производится ядром (или узлом, который отвечает за выбор области загрузки) в течение нескольких тактов после сброса.
Но даже в случае безусловного использования бут-загручика можно выяснить области ОЗУ, которые он использует. А используют они совсем небольшую часть ОЗУ.
Это не секретная информация sm.gif Все есть в соотв. мануалах ))

Еще раз: BOOT-загрузчик в STM32 НЕ стартует безусловно.
Более того, в тотально залоченном состоянии бут вообще невозможно запустить (разве что прочитать его версию):
When readout protection Level2 is activated, STM32 does not boot on system memory in
any case and Bootloader can't be executed
(unless jumping to it from Flash user code, all
commands are not accessible except Get, GetID, and GetVersion).



Может, вы путаете STM32 с другими камнями (которые без своей FLASH), где BOOT стартует ВСЕГДА после сброса? wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2017, 13:25
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 25 2017, 15:30) *
STM32 does not boot on system memory in any case and Bootloader can't be executed

boot / не-boot - вопрос не в том, что в конце-концов стартует, а в том - какая ОЗУ портится при старте.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2017, 13:29
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 25 2017, 16:25) *
boot / не-boot - вопрос не в том,

Вопрос был как раз именно "в том":
Цитата(jcxz)
Да ладно?!! Они умудрились написать код чисто на регистрах и без использования стека??? Прямо чудеса чудесатые какие-то рассказываете.....

Чудес не бывает, но бывает недостаточно внимательное чтение мануалов biggrin.gif


Цитата
...а в том - какая ОЗУ портится при старте.

Дык, если сам user-код гадит под себя портит ОЗУ, то все вопросы к этому самому коду!
Но это РЕШАЕМО (способов несколько).


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jul 25 2017, 13:33
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Jul 25 2017, 16:29) *
Дык, если сам user-код гадит под себя портит ОЗУ, то все вопросы к этому самому коду!

Вопрос не про пользовательский код. А именно про boot-ROM. И в каких случаях и где он портит.

Цитата(Forger @ Jul 25 2017, 16:31) *
Вы не со мной спорите, а с мануалом от ST. Имхо, это бессмысленно wink.gif

Я не спорю с мануалом. Выдержку из него я привёл выше. В которой указывается, что "8 Kbyte starting from address 0x20000000 are used by the bootloader firmware".
Как там написано, так и читаю. К тому же там сказано про бутлоадер версии v7, а какой у меня - не знаю.
Go to the top of the page
 
+Quote Post
Forger
сообщение Jul 25 2017, 13:48
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Jul 25 2017, 16:32) *
Вопрос не про пользовательский код. А именно про boot-ROM. И в каких случаях и где он портит.

Если не разрешать запуск boot, то содержимое SRAM не пострадает.
Но какой смысл запускать принудительно бут код, если в проце уже зашита рабочая прога и ее не нужно обновлять средствами бут-загрузчика?

Цитата
Выдержку из него я привёл выше. В которой указывается, что "8 Kbyte starting from address 0x20000000 are used by the bootloader firmware".

А вы остальное почитайте, в частности раздел "Boot configuration".
Ссылку на более полный документ я приводил выше. Там уже расписано про все возможные бут-загручики любых STM32.
В т.ч. указано, какую и где память использует, сколько времени нужно на старт и какие условия необходимы для запуска загрузчика.

Не пойму, к чему этот спор?






Вот еще кое-что полезно для себя нашел, может, тоже кому пригодится:

Empty check
On ХХХХХХ devices only, internal empty check flag is implemented to allow easy programming of the virgin devices by the boot loader. This flag is used when BOOT0 pin is defining Main Flash memory as the target boot space. When the flag is set, the device is considered as empty and System memory (boot loader) is selected instead of the Main Flash as a boot space to allow user to program the Flash memory.


Т. е. этот тот самый случай, когда бутзагрузчик запускается безусловно не взирая на состояние BOOT0.
Но все же одно условие для этого нужно выполнить - флэш должна быть полностью стерта sm.gif

В одном из моих нынешних проектов это оказалось очень даже актуально, очень ...

Сорри за офф ))))


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- jeka   stm32 NVIC: сброс маскировки прерываний внутри обработчика   Jul 12 2017, 16:58
- - Forger   Цитата(jeka @ Jul 12 2017, 19:58) Назрела...   Jul 12 2017, 17:29
- - jeka   Собственно в мягком ресете есть необходимость имен...   Jul 12 2017, 17:55
|- - Forger   Цитата(jeka @ Jul 12 2017, 20:55) Единств...   Jul 12 2017, 18:02
|- - jeka   Цитата(Forger @ Jul 12 2017, 21:02) Я бы ...   Jul 12 2017, 18:14
|- - Forger   Цитата(jeka @ Jul 12 2017, 21:14) как вар...   Jul 12 2017, 18:18
- - jeka   п.с. irq вызывается, поскольку авария может прилет...   Jul 12 2017, 18:06
|- - Forger   Цитата(jeka @ Jul 12 2017, 21:06) п.с. ir...   Jul 12 2017, 18:14
|- - jeka   Цитата(Forger @ Jul 12 2017, 21:14) Так в...   Jul 12 2017, 18:25
|- - Forger   Цитата(jeka @ Jul 12 2017, 21:25) Ей нужн...   Jul 12 2017, 18:32
|- - jeka   Цитата(Forger @ Jul 12 2017, 21:32) Я сов...   Jul 12 2017, 18:45
|- - Forger   Цитата(jeka @ Jul 12 2017, 21:45) После п...   Jul 12 2017, 18:56
- - jeka   Сейчас я в одном из девайсов делаю примерно так. Т...   Jul 12 2017, 18:34
|- - Forger   Цитата(jeka @ Jul 12 2017, 21:34) Вполне ...   Jul 12 2017, 18:36
- - jeka   Специфика такая. Не хочется протокол обмена обрыва...   Jul 12 2017, 19:17
|- - Forger   Цитата(jeka @ Jul 12 2017, 22:17) Специфи...   Jul 12 2017, 19:19
- - jeka   годится, но больно сложно получается. Плюс дополни...   Jul 12 2017, 19:29
|- - Forger   Цитата(jeka @ Jul 12 2017, 22:29) годится...   Jul 12 2017, 19:36
- - jeka   Ну не хочется городить огород с записью во флеш, п...   Jul 12 2017, 20:01
|- - Forger   Цитата(jeka @ Jul 12 2017, 23:01) ... ког...   Jul 12 2017, 20:08
- - jeka   Цель - понять, можно ли на arm сбросить маскировку...   Jul 12 2017, 23:47
- - KSN   По поводу непрерывного протокола обмена. Делаю та...   Jul 13 2017, 02:24
|- - Forger   Цитата(KSN @ Jul 13 2017, 05:24) По повод...   Jul 13 2017, 06:04
|- - KSN   Цитата(Forger @ Jul 13 2017, 13:04) Скаже...   Jul 13 2017, 07:18
- - jcxz   Цитата(jeka @ Jul 12 2017, 19:58) Назрела...   Jul 13 2017, 06:03
- - jcxz   Цитата(jeka @ Jul 12 2017, 19:58) в докум...   Jul 13 2017, 06:20
- - Obam   ЦитатаНазрела необходимость (уже давно), разрешить...   Jul 13 2017, 07:58
- - jeka   Прошу прощения, не указал один важный момент, из-з...   Jul 13 2017, 09:59
- - Obam   Тогда вообще ни о чём: сброс и всё.   Jul 13 2017, 10:58
- - jeka   Сброс не желателен, т.к. состояние части периферии...   Jul 13 2017, 12:27
|- - Forger   Цитата(jeka @ Jul 13 2017, 15:27) сброс н...   Jul 13 2017, 12:34
- - jeka   Мешает то что если из обработчика прерывания прост...   Jul 13 2017, 12:48
|- - Forger   Цитата(jeka @ Jul 13 2017, 15:48) Мешает ...   Jul 13 2017, 12:54
|- - jcxz   Цитата(jeka @ Jul 13 2017, 15:48) Мешает ...   Jul 13 2017, 15:02
- - Obam   "сброс текущего приоритета прерываний без шам...   Jul 13 2017, 13:09
- - AVI-crak   Цитата(jeka @ Jul 12 2017, 22:58) Собстве...   Jul 13 2017, 15:12
- - jeka   jcxz, спасибо за ответ. В целом как и предполагал....   Jul 13 2017, 16:11
|- - jcxz   Цитата(jeka @ Jul 13 2017, 19:11) jcxz, с...   Jul 13 2017, 16:30
|- - Forger   Вот читаю, вижу интересные мудрёные решения, но во...   Jul 13 2017, 17:14
|- - AVI-crak   Цитата(Forger @ Jul 13 2017, 23:14) Имхо,...   Jul 13 2017, 23:05
|- - Forger   Цитата(AVI-crak @ Jul 14 2017, 02:05...   Jul 14 2017, 08:16
- - Forger   Цитата(jeka @ Jul 14 2017, 18:37) Включая...   Jul 14 2017, 16:15
- - Forger   Цитата(LightElf @ Jul 24 2017, 12:50) Дык...   Jul 24 2017, 10:10
- - jcxz   Цитата(Forger @ Jul 25 2017, 15:30) Вы ни...   Jul 25 2017, 13:15
|- - Forger   Цитата(jcxz @ Jul 25 2017, 16:15) В AN260...   Jul 25 2017, 13:20
|- - jcxz   Цитата(Forger @ Jul 25 2017, 16:20) Это у...   Jul 25 2017, 13:30
|- - Forger   Цитата(jcxz @ Jul 25 2017, 16:30) Содержи...   Jul 25 2017, 13:31
- - LightElf   QUOTE (jcxz @ Jul 25 2017, 16:33) Вопрос ...   Aug 3 2017, 09:28
- - Forger   Цитата(LightElf @ Aug 3 2017, 12:28) Пред...   Aug 3 2017, 09:47
- - AVI-crak   Режим отладки в памяти. Программа в флеш выполняет...   Aug 3 2017, 13:25
- - LightElf   QUOTE (Forger @ Aug 3 2017, 12:47) Предпо...   Aug 3 2017, 14:06
- - Forger   Цитата(LightElf @ Aug 3 2017, 17:06) Надо...   Aug 3 2017, 14:21
- - AVI-crak   Цитата(LightElf @ Aug 3 2017, 20:06) Дейс...   Aug 3 2017, 16:16
- - Forger   Цитата(AVI-crak @ Aug 3 2017, 19:16)...   Aug 4 2017, 06:56
- - jcxz   Цитата(AVI-crak @ Aug 3 2017, 19:16)...   Aug 4 2017, 06:59
|- - AVI-crak   Цитата(jcxz @ Aug 4 2017, 12:59) Или что ...   Aug 4 2017, 08:29
||- - jcxz   Цитата(AVI-crak @ Aug 4 2017, 11:29)...   Aug 4 2017, 10:43
||- - Forger   Цитата(jcxz @ Aug 4 2017, 13:43) Может бы...   Aug 4 2017, 11:04
||- - jcxz   Цитата(Forger @ Aug 4 2017, 14:04) Встрое...   Aug 4 2017, 12:19
||- - AVI-crak   Цитата(Forger @ Aug 4 2017, 17:04) зы Рад...   Aug 4 2017, 12:38
||- - Forger   Цитата(AVI-crak @ Aug 4 2017, 15:38)...   Aug 4 2017, 13:12
|- - LightElf   QUOTE (jcxz @ Aug 4 2017, 09:59) Очевидно...   Aug 5 2017, 13:26
|- - Forger   Цитата(LightElf @ Aug 5 2017, 16:26) Дабы...   Aug 5 2017, 16:10
|- - LightElf   QUOTE (Forger @ Aug 5 2017, 19:10) Встрое...   Aug 8 2017, 17:04
|- - Forger   Цитата(LightElf @ Aug 8 2017, 20:04) Знае...   Aug 8 2017, 17:48
|- - LightElf   QUOTE (Forger @ Aug 8 2017, 20:48) Не виж...   Aug 15 2017, 14:53
|- - Forger   Цитата(LightElf)А что, возможен вариант И/И? В фан...   Aug 16 2017, 06:50
|- - LightElf   QUOTE (Forger @ Aug 16 2017, 09:50) Если ...   Aug 22 2017, 17:54
|- - Forger   Цитата(LightElf @ Aug 22 2017, 20:54) И г...   Aug 22 2017, 18:22
|- - LightElf   QUOTE (Forger @ Aug 22 2017, 21:22) Мля, ...   Aug 24 2017, 09:20
|- - Forger   Цитата(LightElf @ Aug 24 2017, 12:20) что...   Aug 24 2017, 10:54
|- - LightElf   QUOTE (Forger @ Aug 24 2017, 13:54) Камен...   Aug 30 2017, 08:38
|- - Forger   Цитата(LightElf @ Aug 30 2017, 11:38) Вы ...   Aug 30 2017, 09:07
|- - LightElf   QUOTE (Forger @ Aug 30 2017, 12:07) Поско...   Aug 30 2017, 15:50
|- - Forger   Цитата(LightElf @ Aug 30 2017, 18:50) И в...   Aug 30 2017, 16:17
- - LightElf   QUOTE (AVI-crak @ Aug 3 2017, 19:16)...   Aug 4 2017, 10:23
- - Forger   Цитата(LightElf @ Aug 4 2017, 13:23) В да...   Aug 4 2017, 10:33
- - LightElf   QUOTE (Forger @ Aug 4 2017, 13:33) Это ещ...   Aug 5 2017, 10:06
- - Forger   Цитата(LightElf @ Aug 5 2017, 13:06) Горо...   Aug 5 2017, 10:29
- - jcxz   Цитата(LightElf @ Aug 5 2017, 13:06) Горо...   Aug 5 2017, 10:37
- - Forger   Цитата(jcxz @ Aug 5 2017, 13:37) Вот имен...   Aug 5 2017, 10:49
- - jcxz   Цитата(Forger @ Aug 5 2017, 13:49) Т.е. я...   Aug 5 2017, 11:03
- - Forger   Цитата(jcxz @ Aug 5 2017, 14:03) Ядро/так...   Aug 5 2017, 12:10


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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