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

 
 
> выравнивание кода
amiller
сообщение Mar 10 2017, 11:20
Сообщение #1


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Пришлось срочно сделать маленькую поделку на STM32F103CBT6 (Maplemini).
Готового шаблона под этот камень у меня не было, но есть несколько рабочих проектов под STM32F105.
Скопировал проект, выбросил лишнее, заменил файлы конфигурации и стартап.
Работаю в ИАРе, одна из последних версий. Процессор стирается, шьется.
Но после выполнения первой команды улетает в HardFault.
В памяти вижу, что там, где должен лежать Reset_Handler - всегда нечетный адрес.
Вероятно в этом и есть причина такого поведения. Но как я этого добился, не могу понять.
Попытки тасовать модули в памяти не помогают, адрес меняется, но всегда нечетный.
Ничего нечётного в памяти нет, да и с чего компилятор так располагает в памяти main, совершенно не понимаю.
Может кто подскажет идею? В опциях проекта вроде уже всё просмотрел...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Непомнящий Евген...
сообщение Mar 10 2017, 11:27
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Младший бит - это признак STUB, он и должен быть установлен
Go to the top of the page
 
+Quote Post
amiller
сообщение Mar 10 2017, 12:19
Сообщение #3


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Непомнящий Евгений @ Mar 10 2017, 14:27) *
Младший бит - это признак STUB, он и должен быть установлен

Странно, а на других проектах (рабочих) адрес чётный. Смотрел в двух вариантах.


Цитата(Obam @ Mar 10 2017, 14:53) *
"после выполнения первой команды" чего? Стартап кода или main()?
Reset_Handler это точка входа __iar_program_start, а не точка входа в main().

Вероятно всё же стартап кода, но здесь трудно сказать.
Я говорил как раз про адрес Reset_Handler, т.е. тот адрес, который находится сразу за адресом стека.
Местоположение - 0x08000004.
После открытия окна отладки указатель естественно находится на main().
При любой попытке шагнуть всё зависает на выполнении кода.
После принудительной остановки отладчик обнаруживает себя уже по вектору HardFault.
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Mar 10 2017, 12:26
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(amiller @ Mar 10 2017, 15:19) *
Странно, а на других проектах (рабочих) адрес чётный. Смотрел в двух вариантах.


а где вы адрес смотрите? Прямо в бинарнике?

Цитата(amiller @ Mar 10 2017, 15:19) *
После принудительной остановки отладчик обнаруживает себя уже по вектору HardFault.


Так если у вас есть отладчик - то чего мы гадаем? Считайте содержание регистров с данными об ошибке и разберите их - поймете, что не так
Go to the top of the page
 
+Quote Post
amiller
сообщение Mar 10 2017, 12:26
Сообщение #5


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

Группа: Участник
Сообщений: 176
Регистрация: 20-02-14
Из: Томск
Пользователь №: 80 612



Цитата(Непомнящий Евгений @ Mar 10 2017, 15:20) *
а где вы адрес смотрите? Прямо в бинарнике?

На рабочих проектах только в *.hex, а в этом тестовом и в *.hex и в отладчике IAR и читал память через ST-LINK Utility.
После адреса 0х08000000 первые 4 байта адрес стека, дальше обработчик по ресету.
Порядок байт в памяти учитывал.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- amiller   выравнивание кода   Mar 10 2017, 11:20
||- - amiller   Цитата(Непомнящий Евгений @ Mar 10 2017, 15...   Mar 10 2017, 12:47
||- - Непомнящий Евгений   Цитата(amiller @ Mar 10 2017, 15:28) А по...   Mar 10 2017, 12:49
||- - amiller   Цитата(Непомнящий Евгений @ Mar 10 2017, 15...   Mar 10 2017, 13:05
||- - novikovfb   Цитата(amiller @ Mar 10 2017, 17:05) Похо...   Mar 10 2017, 13:23
||- - amiller   Цитата(novikovfb @ Mar 10 2017, 16:23) до...   Mar 10 2017, 13:39
||- - Obam   Цитата(amiller @ Mar 10 2017, 17:39) Адре...   Mar 10 2017, 13:52
||- - amiller   Цитата(Obam @ Mar 10 2017, 16:52) Получае...   Mar 10 2017, 14:06
|||- - Obam   Цитата(amiller @ Mar 10 2017, 18:06) Наше...   Mar 10 2017, 14:09
||- - amiller   Цитата(Obam @ Mar 10 2017, 16:52) Адрес ч...   Mar 10 2017, 14:24
|- - Obam   Цитата(amiller @ Mar 10 2017, 16:19) Стра...   Mar 10 2017, 12:28
- - Obam   "после выполнения первой команды" чего? ...   Mar 10 2017, 11:53


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

 


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


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