|
|
  |
Настройка GCC компилятора для CortexM4, Какой ключ указать, чтобы использовать DSP инструкции |
|
|
|
Dec 18 2013, 09:44
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(sidy @ Dec 18 2013, 11:32)  Что нужно сделать чтобы данные функции вызывались нормально. правильно подключить библиотеку CMSIS. Например, для stm32f10x это делается подключение заголовочного файла Код stm32f10x.h , который подтягивает за собой всё необходимое, а вы, видимо, напрямую подключаете Код core_cmInstr.h , что идеологически неверно...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 18 2013, 09:55
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333

|
Цитата(demiurg_spb @ Dec 18 2013, 13:44)  правильно подключить библиотеку CMSIS. Например, для stm32f10x это делается подключение заголовочного файла Спасибо, помогло.
|
|
|
|
|
Dec 18 2013, 10:13
|
Местный
  
Группа: Свой
Сообщений: 437
Регистрация: 27-08-04
Пользователь №: 551

|
QUOTE (sidy @ Dec 18 2013, 09:32)  И как теперь мне определить адрес из которого попали в HardFault? В местной файлохранилке есть книга из которой выдран пример вашего фаулт обработчика. Там всего несколько страниц очень понятного объяснения. Настоятельно рекомендую прочесть. Здесь на форуме давали ссылку на пример использования фаулт обработчика для поиска места сбоя. В качестве подопытного примера использовалось деление на ноль. В вашем случае нужно смотреть окрестности 0x0000A74A.
|
|
|
|
|
Dec 25 2013, 08:33
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(sidy @ Dec 25 2013, 09:17)  Странные рассуждения... Из стека у вас вряд ли выполнялась программа. Т.к. на стеке в нормальной ситуации могут быть лишь локальные данные. Сдаётся мне, что вы неверно раскрутили эту ситуацию.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Dec 25 2013, 09:50
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333

|
Цитата(demiurg_spb @ Dec 25 2013, 12:33)  Функция get_MSP вернула мне такой адрес. А данный адрес попадает в диапазон адресов стека.
|
|
|
|
|
Dec 27 2013, 06:15
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333

|
Цитата(demiurg_spb @ Dec 25 2013, 13:56)  А теперь подумайте. Это хорошо или плохо. А когда созреете дайте развёрнутый ответ. В том то и дело, что непонятно хорошо или плохо - я не знаю что с этим делать и нигде не могу найти информацию по этому поводу. Допустим когда использую функцию get_MSP в основной программе то получаю содержимое r2, но никак не адрес из диапазона адресов стека. P.S. вот тут нашел похожее: http://electronix.ru/forum/lofiversion/index.php/t72471.htmlВ той теме в последнем сообщении говорится, что стек пересчитывается, мне не совсем понятно как.
Сообщение отредактировал sidy - Dec 27 2013, 06:40
|
|
|
|
|
Dec 27 2013, 11:09
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333

|
Спасибо, руководство я уже скачал изучаю. Вроде бы начало что-то получаться: сейчас записал в обработчике HardFault регистр PC, в нем содержится адрес 0х08001ас0. Но по этому адресу я криминала не вижу:
Еще я посмотрел регистр SCB->CFSR, в нем установлены биты PRECISERR и BFARVALID, а в регистре BFAR содержится адрес 0x268dfb8, который как следует из руководства должен показывать место откуда произошел BUSFAULT. Но пока непонятно как можно связать 0х08001ас0 и 0x268dfb8.
|
|
|
|
|
Jan 17 2014, 05:42
|
Местный
  
Группа: Участник
Сообщений: 280
Регистрация: 2-11-08
Пользователь №: 41 333

|
Поймал еще несколько раз Hard Fault. В регистре PC обычно содержатся разные адреса последний раз при hard fault там был адрес 0х080046EC:
В регистре SCB->CFSR, всегда устанавливаются биты PRECISERR и BFARVALID. В регистре BFAR который содержится адрес откуда произошел BUSFAULT тоже разные значений последний раз там было значение 0х4B404288. Куда мне смотреть дальше?
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|