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

 
 
 
Reply to this topicStart new topic
> Keil RTX, Сваливаюсь в Hard Fault
toweroff
сообщение Dec 19 2012, 11:38
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Добрый день!

Запущено 7 задач, на всякий случай увеличил максимальное число до 10 в конфиге RTX
В одной задаче устанавливаю флаг для другой... и попадаю в HardFault (возможно, и в MemManage_Handler, компилятор наверняка "B ." у хендлеров в один адрес объединил)
До краша монитор RTX говорит, что со стеками задач все в порядке, все используются не более, чем на 25%
Куда копнуть, что посмотреть?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 19 2012, 11:49
Сообщение #2


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(toweroff @ Dec 19 2012, 13:38) *
Добрый день!

Запущено 7 задач, на всякий случай увеличил максимальное число до 10 в конфиге RTX
В одной задаче устанавливаю флаг для другой... и попадаю в HardFault (возможно, и в MemManage_Handler, компилятор наверняка "B ." у хендлеров в один адрес объединил)
До краша монитор RTX говорит, что со стеками задач все в порядке, все используются не более, чем на 25%
Куда копнуть, что посмотреть?


Адаптер JTAG может быть? Перед этим где нибудь остановку делаете JTAG-ом?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 19 2012, 12:09
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AlexandrY @ Dec 19 2012, 15:49) *
Адаптер JTAG может быть? Перед этим где нибудь остановку делаете JTAG-ом?

нет, и под отладкой не работает, и в обычном режиме
забыл уточнить проц - LPC1751

Еще инфа
__return_address() в HardFault_Handler говорит 0xFFFFFFF1 blink.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 19 2012, 12:33
Сообщение #4


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

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



Задайте ОС привилегированный режим.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 19 2012, 12:54
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(ViKo @ Dec 19 2012, 16:33) *
Задайте ОС привилегированный режим.

не помогло

CallStack такой:

MyTask -> SVC_Handler -> rt_evt_set -> HardFault_Handler
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 19 2012, 13:04
Сообщение #6


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(toweroff @ Dec 19 2012, 14:09) *
нет, и под отладкой не работает, и в обычном режиме
забыл уточнить проц - LPC1751

Еще инфа
__return_address() в HardFault_Handler говорит 0xFFFFFFF1 blink.gif


Ну в обычном режиме оно может у вас по жизни не работает.
А вот чем узнаете что "__return_address() в HardFault_Handler говорит 0xFFFFFFF1"?

Так вот JLink без самой последней прошивки у меня так и показывал. Он сам и вызывал этот самый HardFault.
Поменял прошивку и стал видеть реальные ошибки.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 19 2012, 13:16
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



J-Link Ultra, Firmware Jun 19, 2012
U-LINK2, Firmware V1.42

Оба отладчика показывают одинаковое значение. Могу через JTAG попробовать (сейчас по SWD)
Go to the top of the page
 
+Quote Post
toweroff
сообщение Dec 19 2012, 17:17
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(AlexandrY @ Dec 19 2012, 17:04) *
Так вот JLink без самой последней прошивки у меня так и показывал. Он сам и вызывал этот самый HardFault.
Поменял прошивку и стал видеть реальные ошибки.

я и без JLink в UART этот адрес кидаю. Ничем от показываемого JLink и ULink2 не отличается

Тфу ты sad.gif криворучкин blush.gif
Код
void os_evt_set (
    U16    event_flags,    /* Bit pattern of event flags to set */
    OS_TID task );         /* The task that the events apply to */

а я пользовал как
Код
void os_evt_set (
    OS_TID task,         /* The task that the events apply to */
    U16    event_flags);    /* Bit pattern of event flags to set */

ну и отправлял фиг знает какой задаче фиг знает какой сигнал
Go to the top of the page
 
+Quote Post

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

 


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


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