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

 
 
> STM32 Обработка hard fault exception, Как правильно с ним работать
Serj78
сообщение Dec 28 2010, 02:19
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Читаю документацию на ARM ( DDI0337e - Cortex™-M3 Revision: r1p1 Technical Reference Manual)

Хочется более полного понимания, от тех кто работал с системой исключений.

Из того что я понял- это как будто "верхний" уровень "прерываний" происходящий по критическим событиям в процессоре.

Из структуры стартап-файла (использую Keil 4.12) видно, что по каждому исключению может быть вызвано прерывание.

Очень вероятно, что назначением прерываний ведает Configurable Fault handler, упомянутый в вышеуказанном документе (DDI0337e).

Но как его включить (где описана структура управляющего регистра) ?

Как вообще используют систему исключений? У меня она нигде никак в явном виде не инициализируется , как узнать что исключение произошло?
Периодически читать статус регистр исключения? И если оно произошло, какие могут быть последствия?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Serj78
сообщение Dec 28 2010, 15:48
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 966
Регистрация: 27-05-06
Из: СПб
Пользователь №: 17 499



Спасибо за примеры!
Но это если я, образно говоря- сам дурак и [ кидаю лом в унитаз поезда на полном ходу sm.gif ]

По идее, компилятор должен не допускать подобных вещей при генерации ассемблерного кода, или, по крайней мере, сообщать о них?

Как часто на практике приходится сталкиваться с подобными вещами (проявлением исключений)?
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Dec 28 2010, 16:56
Сообщение #3


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Serj78 @ Dec 28 2010, 23:48) *
По идее, компилятор должен не допускать подобных вещей при генерации ассемблерного кода, или, по крайней мере, сообщать о них?

Нет, компилятор никак не может отследить такое. Для него это вполне допустимые инструкции. Проблема возникает уже при выполнеинии этих инструкций, в периферии. Например, чтение из несуществующего участка памяти. AVR молча проглатывал такое, возвращая какое-то значение. И это было трудно отследить. А тут для облегчения труда программистов придумали исключения. Очень удобно - накосячил -- вывалился в HardFault, сразу ясно, что что-то не так sm.gif
Цитата
Как часто на практике приходится сталкиваться с подобными вещами (проявлением исключений)?

Если писать аккуратно, то редко. Но не надо бояться исключений, это полезная штука.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
sonycman
сообщение Dec 28 2010, 23:50
Сообщение #4


Любитель
*****

Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695



Цитата(AHTOXA @ Dec 28 2010, 23:56) *
Нет, компилятор никак не может отследить такое. Для него это вполне допустимые инструкции.

Почему же не может? Разве много труда компилятору стоит, чтобы проверить, выровнен ли адрес для LDM?
Это если такая конструкция генерируется с языка Си, а не написана изначально на асме, конечно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Serj78   STM32 Обработка hard fault exception   Dec 28 2010, 02:19
- - Harvester   Исключение Hard Fault, также как сброс и NMI, явля...   Dec 28 2010, 03:36
|- - Serj78   Цитата(Harvester @ Dec 28 2010, 09:36) Та...   Dec 28 2010, 12:14
|- - AHTOXA   Цитата(Serj78 @ Dec 28 2010, 20:14) Больш...   Dec 28 2010, 13:59
- - zltigo   QUOTE (Serj78 @ Dec 28 2010, 08:19) Но ка...   Dec 28 2010, 05:03
- - Dron_Gus   Например, Вы можете попытаться обратиться или выпо...   Dec 28 2010, 12:46
|- - AHTOXA   А если адрес получается извне? Например, читается ...   Dec 29 2010, 00:29
|- - sonycman   Цитата(AHTOXA @ Dec 29 2010, 08:29) А есл...   Dec 29 2010, 02:53
|- - AHTOXA   Цитата(sonycman @ Dec 29 2010, 10:53) А в...   Dec 29 2010, 03:40
- - sonycman   У меня была как то проблема с таким вылетом - в ис...   Dec 29 2010, 06:40
|- - AHTOXA   Цитата(sonycman @ Dec 29 2010, 14:40) Не ...   Dec 29 2010, 09:31
|- - sonycman   Цитата(AHTOXA @ Dec 29 2010, 17:31) Я вид...   Dec 29 2010, 11:58
|- - AHTOXA   Цитата(sonycman @ Dec 29 2010, 19:58) А н...   Dec 29 2010, 13:11
|- - sonycman   Цитата(AHTOXA @ Dec 29 2010, 21:11) Ха...   Dec 29 2010, 14:37
|- - igorsk   Цитата(sonycman @ Dec 29 2010, 16:37) И о...   Apr 7 2011, 21:45
- - pan_oleg   День добрый. Нужна помощ. Код для STM32F101BT6 нап...   Jan 5 2011, 11:31
|- - Haamu   Цитата(pan_oleg @ Jan 5 2011, 15:31) Код ...   Apr 11 2014, 02:30
|- - Сергей Борщ   Цитата(Haamu @ Apr 11 2014, 04:30) Подска...   Apr 11 2014, 03:09
- - Атмег   Цитата(pan_oleg @ Jan 5 2011, 14:31) День...   Apr 5 2011, 16:48
|- - KnightIgor   Цитата(Атмег @ Apr 5 2011, 18:48) При изм...   Apr 6 2011, 12:32
- - Атмег   Цитата(KnightIgor @ Apr 6 2011, 15:32) Эт...   Apr 6 2011, 17:10
- - Атмег   Кажется, причины ясны, проблема не в моем коде. У ...   Apr 7 2011, 17:45
|- - aaarrr   Цитата(Атмег @ Apr 7 2011, 21:45) Кажется...   Apr 7 2011, 22:11
- - Атмег   Цитата(aaarrr @ Apr 8 2011, 01:11) Можно ...   Apr 8 2011, 07:53
|- - aaarrr   Цитата(Атмег @ Apr 8 2011, 11:53) PLL нас...   Apr 8 2011, 08:49
- - Атмег   Цитата(aaarrr @ Apr 8 2011, 11:49) А FMR?...   Apr 8 2011, 09:48
|- - aaarrr   Цитата(Атмег @ Apr 8 2011, 13:48) код из ...   Apr 8 2011, 09:54
- - Атмег   Это я взял как есть из примера. Как будет очередно...   Apr 8 2011, 10:23
|- - aaarrr   Цитата(Атмег @ Apr 8 2011, 14:23) Запись ...   Apr 8 2011, 10:28
- - Атмег   Цитата(aaarrr @ Apr 8 2011, 14:28) В том-...   Apr 8 2011, 10:57
- - aaarrr   Если программа стартует из флеш, то загрузчик не з...   Apr 8 2011, 11:06
- - Атмег   Цитата(aaarrr @ Apr 8 2011, 15:06) Если п...   Apr 8 2011, 15:39
|- - aaarrr   Цитата(Атмег @ Apr 8 2011, 19:39) Имел в ...   Apr 8 2011, 16:13
- - Атмег   Цитата(aaarrr @ Apr 8 2011, 20:13) Процес...   Apr 8 2011, 17:28
|- - aaarrr   Цитата(Атмег @ Apr 8 2011, 21:28) Отличае...   Apr 8 2011, 20:29
- - Атмег   Да, вы были правы, действительно дело оказалось EE...   Apr 12 2011, 22:02
- - aaarrr   Цитата(Атмег @ Apr 13 2011, 02:02) Но Атм...   Apr 12 2011, 22:05


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

 


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


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