Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: HardFault stm32
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Nikitoc
Здравствуйте. Вылетаю в HardFault при переходе на подпрограмму (main в моем случае). При этом адрес подпрограммы - 0x80000f4 , а в регистр адреса почему-то загружается адрес 0x80000f5 (смотрю дебаггером). Работаю в Keil 4. В чем может быть причина? Неужели глючит компилятор? wacko.gif
Aurochs
С Кейлом не работал, но младший бит - это признак перехода в режим процессора Thumb. Смотрите настройки компилятора ARM/Thumb.
Nikitoc
Цитата(Aurochs @ Feb 20 2011, 00:05) *
С Кейлом не работал, но младший бит - это признак перехода в режим процессора Thumb. Смотрите настройки компилятора ARM/Thumb.

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

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

Попробуйте вЫключить в настройках "опции проекта - отладка - run to main()" и пройти в отладчике так тихонечко по дизассемблированному коду. Можно даже в режиме симуляции для начала (без железа).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.