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

 
 
5 страниц V  < 1 2 3 4 5 >  
Reply to this topicStart new topic
> stm32f4discovery виснет раз в неделю
adnega
сообщение Sep 24 2013, 19:07
Сообщение #31


Гуру
******

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



Попробуйте printf ("aaa\r\n");

Сообщение отредактировал IgorKossak - Sep 24 2013, 20:35
Причина редактирования: избыточное цитирование
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 24 2013, 19:13
Сообщение #32


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



о, спасибо, заработало
а вы с xFSR не сталкивались?

пока поставил в обработчик исключения
printf ("AFSR %u CFSR %u DFSR %u HFSR %u MMFAR %u BFAR %u\r\n",SCB->AFSR,SCB->CFSR,SCB->DFSR,SCB->HFSR,SCB->MMFAR,SCB->BFAR);

если кто уточнит как правильно надо сделать буду благодарен

Сообщение отредактировал сарматъ - Sep 24 2013, 20:09
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 24 2013, 21:20
Сообщение #33


Гуру
******

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



Цитата(сарматъ @ Sep 24 2013, 23:13) *
если кто уточнит как правильно надо сделать буду благодарен

Джозефа Ю читали?
Недавно проскакивал тут на русском языке. Там есть кое-какие подробности.
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 24 2013, 21:26
Сообщение #34


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



да как раз оттуда эти регистры откопал
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 24 2013, 21:36
Сообщение #35


Гуру
******

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



Цитата(сарматъ @ Sep 25 2013, 01:26) *
да как раз оттуда эти регистры откопал

Там, вроде, написано, мол, не утяжеляйте обработчик исключительной ситуации.
А Вы printf...
Со стеком очень аккуратно - сначала нужно убедиться, что указатель исправный.
SVC нельзя использовать (или очень аккуратно).
Скорее всего, блокировка по причине разрушенного стека - я бы не надеялся, что CPU выйдет из HardFault.
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 25 2013, 05:46
Сообщение #36


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



мне хотя бы место и причину найти для начала

а стек изза чего разрушается обычно?
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 25 2013, 05:51
Сообщение #37


Гуру
******

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



думаю 95% случаев - переполнение.
остальное это обращение в локальные переменные через указатель и вылет за пределы переменной...
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 25 2013, 10:09
Сообщение #38


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



а ведь если стек рухнул printf работать не будет верно?
выходит в обработчике голый ассемблерный код должен быть безо всяких вызовов функций??
точнее если и си то без функций?

Сообщение отредактировал сарматъ - Sep 25 2013, 10:13
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 25 2013, 10:19
Сообщение #39


Гуру
******

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



принтф - это вообще жесткая функция, она же с декодировкой параметров, и прочей байдой...

голый ассемблер вам конечно не нужен, его компилятор сам сделает, а вот вызов каких-то больших функций и прочее лучше избежать

надо понимать что найденная ошибка стека не означает что он перестал работать физически, то есть переменные будут создаваться, и в пределах одной функции они будут работать корректно. ( ну за исключением очень редкой ситуации когда указатель стека попал точно на вашу функцию, но при работе из флэш это невозможно)

для того чтобы отправить данные по УАРТу вам всего навсего надо положить их в DR регистр нужной периферии, ну так и сделайте это без принтф
просто циклом ожидайте готовность регистра и пихайте данные. Пусть они идут бинарем а не текстом.

char *Pointer = (char *)&RegData;
UART->DR = *Pointer++;

чтобы на компьютере удобно было читать используйте COMTerminal, это один файлик terminal.exe, самый удобный ком порт терминал что я встречал, показывает и текст и бинарь...
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 25 2013, 10:40
Сообщение #40


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



да наверное переделаю на просто уарт
а кстати почему джозеф пишет что в си не получить значение указателя стека и нужен ассемблер?
разве этот указатель не хранится в R13?


Сообщение отредактировал сарматъ - Sep 25 2013, 11:07
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 25 2013, 12:08
Сообщение #41


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



QUOTE (сарматъ @ Sep 25 2013, 12:40) *
разве этот указатель не хранится в R13?
Как в си получить доступ к R13? И если бы это было возможно (например, регистры были бы отражены на память как в AVR), какой указатель был бы вычитан из R13 - PSP или MSP?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 25 2013, 12:58
Сообщение #42


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



что то мне казалось что я видел обращение к регистрам как к памяти в чьем то коде то ли в антохином то ли в вашем, сейчас найти не получается

а PSP или MSP какая разница? главное чтоб из стека вытянуть адрес команды на которой произошла поломка

Сообщение отредактировал сарматъ - Sep 25 2013, 13:00
Go to the top of the page
 
+Quote Post
Golikov A.
сообщение Sep 25 2013, 13:31
Сообщение #43


Гуру
******

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



в лпц есть макросы обращения к регистрам, думаю в СТМ тоже должны быть. Вроде там ассемблер спрятанный в дефайны...

ну чтобы понять на какой команде вам счетчик команд нужен, а не указатель стека тогда получается...

Go to the top of the page
 
+Quote Post
сарматъ
сообщение Sep 25 2013, 13:33
Сообщение #44


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

Группа: Участник
Сообщений: 153
Регистрация: 19-11-12
Пользователь №: 74 463



счетчик в стеке спрятан по адресу sp-24
а лпц это кто?
можете сюда эти макросы кинуть?

Сообщение отредактировал сарматъ - Sep 25 2013, 13:35
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Sep 25 2013, 15:32
Сообщение #45


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(сарматъ @ Sep 25 2013, 17:33) *
а лпц это кто?

LPC микроконтроллеры ARM от NXP (lpc). Golikov A., возможно, имел ввиду файл core_cmFunc.h из CMSIS от NXP.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

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

 


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


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