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

 
 
 
Reply to this topicStart new topic
> Hard fault
Darti
сообщение Nov 22 2015, 15:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Столкнулся с интересным явлением, прикручиваю к проекту карту памяти, хочу с нее читать данные, выделяю буфер uint8_t buff[] внутри функции main, т.е. локальный, контроллер уходит hard fault. Происходит это тогда когда буфер больше ~950 байт. Камень stm32l152rc. Если выделяю буфер глобально, то все работает. Почему так происходит?
Go to the top of the page
 
+Quote Post
ohmjke
сообщение Nov 22 2015, 15:27
Сообщение #2


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Переполнение стека? Что там в PC, LR до прыжка по вектору обработчика HF?
Go to the top of the page
 
+Quote Post
Darti
сообщение Nov 22 2015, 16:25
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Цитата(ohmjke @ Nov 22 2015, 18:27) *
Переполнение стека? Что там в PC, LR до прыжка по вектору обработчика HF?

LR = 0x080005EF
PC = 0x080001C6
Go to the top of the page
 
+Quote Post
ohmjke
сообщение Nov 22 2015, 18:11
Сообщение #4


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Эмм, это был риторический вопрос, который указывает направление для размышлений rolleyes.gif
Мне значения этих регистров без отладчика с вашим проектом ничего не дадут.
Go to the top of the page
 
+Quote Post
x893
сообщение Nov 22 2015, 18:14
Сообщение #5


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Распечатайте состояние при входе hard fault и смотрите в программе, что у Вас в программировании не так.
Гуглоком дает первой ссылкой
http://blog.frankvh.com/2011/12/07/cortex-...-fault-handler/
Go to the top of the page
 
+Quote Post
Darti
сообщение Nov 22 2015, 21:40
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Цитата(ohmjke @ Nov 22 2015, 21:11) *
Эмм, это был риторический вопрос, который указывает направление для размышлений rolleyes.gif
Мне значения этих регистров без отладчика с вашим проектом ничего не дадут.

Погуглил еще, нашел то как задается стек, в моем случае размер 1024, похоже что идет превышение больше допустимого. Тогда почему крашится с локальной переменной понятно, но тогда не понятно почему не крашится с глобальной, разве глобальные переменные располагаются не там же в стеке? Хочется почитать нормальную литературу и разобраться с этим вопросом, пните в нужном направлении.

Go to the top of the page
 
+Quote Post
x893
сообщение Nov 22 2015, 21:48
Сообщение #7


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Рискну предположить, что глобальные переменные выделяются не на стеке.
Go to the top of the page
 
+Quote Post
Darti
сообщение Nov 22 2015, 22:16
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 46
Регистрация: 17-09-14
Из: Спб
Пользователь №: 82 840



Цитата(x893 @ Nov 23 2015, 00:48) *
Рискну предположить, что глобальные переменные выделяются не на стеке.

Логично, но где об этом написано?
Go to the top of the page
 
+Quote Post
x893
сообщение Nov 22 2015, 22:44
Сообщение #9


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

Группа: Свой
Сообщений: 1 333
Регистрация: 27-10-08
Из: Планета Земля
Пользователь №: 41 226



Надеюсь в файле map
Go to the top of the page
 
+Quote Post
ohmjke
сообщение Nov 23 2015, 05:03
Сообщение #10


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

Группа: Участник
Сообщений: 116
Регистрация: 27-01-10
Из: СПб
Пользователь №: 55 094



Цитата(x893 @ Nov 23 2015, 00:48) *
Рискну предположить, что глобальные переменные выделяются не на стеке.


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

По-быстрому нагуглил - http://www.intuit.ru/studies/courses/2193/...ure/1976?page=6
Изучайте.
Go to the top of the page
 
+Quote Post

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

 


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


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