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

 
 
> HardFault stm32, Неясна причина
Nikitoc
сообщение Feb 18 2011, 21:02
Сообщение #1


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Здравствуйте. Вылетаю в HardFault при переходе на подпрограмму (main в моем случае). При этом адрес подпрограммы - 0x80000f4 , а в регистр адреса почему-то загружается адрес 0x80000f5 (смотрю дебаггером). Работаю в Keil 4. В чем может быть причина? Неужели глючит компилятор? wacko.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Aurochs
сообщение Feb 19 2011, 20:05
Сообщение #2


Ортодокс
***

Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775



С Кейлом не работал, но младший бит - это признак перехода в режим процессора Thumb. Смотрите настройки компилятора ARM/Thumb.
Go to the top of the page
 
+Quote Post
Nikitoc
сообщение Feb 19 2011, 20:56
Сообщение #3


Местный
***

Группа: Validating
Сообщений: 207
Регистрация: 14-01-09
Из: Днепропетровск
Пользователь №: 43 367



Цитата(Aurochs @ Feb 20 2011, 00:05) *
С Кейлом не работал, но младший бит - это признак перехода в режим процессора Thumb. Смотрите настройки компилятора ARM/Thumb.

Так ведь Cortex-M поддерживают только Thumb-2 набор инструкций. Или я Вас как-то неправильно понял?
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Feb 26 2011, 23:25
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(Nikitoc @ Feb 19 2011, 21:56) *
Так ведь Cortex-M поддерживают только Thumb-2 набор инструкций. Или я Вас как-то неправильно понял?

Я тут этому сам недавно удивлялся. Напомнили, что программный счетчик (PC), вообще говоря, всегда выровнен на границу (полу)слова, то есть, в смысле адресации младший его бит игнорируется, но служит флагом Thumb инструкций, что в Cortex и имеет место, поэтому младший бит PC всегда установлен.

Попробуйте вЫключить в настройках "опции проекта - отладка - run to main()" и пройти в отладчике так тихонечко по дизассемблированному коду. Можно даже в режиме симуляции для начала (без железа).
Go to the top of the page
 
+Quote Post



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

 


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


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