Перейти к содержанию
    

Изменение стартового адреса программы stm32f105

3 hours ago, Darth Vader said:

Возможно, в этом и проблема.

А для этого глаза, мозг и отладчик. Ну и руки конечно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/6/2020 at 4:56 PM, dimka76 said:

Что бы вы там не меняли в настройках, микроконтроллер все равно будет стартовать с 0x08000000.

Примерно так ))))

 

Сначала - https://www.litres.ru/dzhozef-u/yadro-cortex-m3-kompanii-arm-polnoe-rukovodstvo-48411055/

А потом Cube )))

тебе на заметку, умник )

читать тут

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 minutes ago, ichthyandr said:

ебе на заметку, умник )

Зря хамите, вам всё правильно сказали. То, что ядро стартует с 0 адреса, и эта память отмпаплена на любой другой не меняется настройками. Вот об этом и была речь. Другими словами, настройка среды и изменение скрипта линкера на влияют на адрес старта. Правильно задействовать ремапинг (для cortex-m0) или изменить смещение таблицы векторов (cortex-m3 и выше).

З.Ы. Как раз пишу бутлоадер для m0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 minutes ago, haker_fox said:

Зря хамите, вам всё правильно сказали. То, что ядро стартует с 0 адреса, и эта память отмпаплена на любой другой не меняется настройками. Вот об этом и была речь. Другими словами, настройка среды и изменение скрипта линкера на влияют на адрес старта. Правильно задействовать ремапинг (для cortex-m0) или изменить смещение таблицы векторов (cortex-m3 и выше).

З.Ы. Как раз пишу бутлоадер для m0.

пардон, если резко, но вопрос был задан конкретный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 минуты назад, ichthyandr сказал:

пардон, если резко, но вопрос был задан конкретный

"Конкретный"? :wacko2:

Из этого "вопроса" вообще ничего не ясно - что именно нужно?? Что такое "дефолтный стартовый адрес"? Если это адрес памяти, с которого стартует ядро после сброса, то изменить его невозможно - он жёстко заложен в ядре.

Что за "отладчик" имеется в виду? Эмулятор? Или нечто другое? Если эмулятор, то какой и о каком IDE речь? И почему, если разговор ведёте об адресе старта, то потом пытаетесь манипулировать с расположением таблицы прерываний. Адрес расположения какой-то таблицы прерываний - это явно не "дефолтный стартовый адрес" что бы это ни было.

Что такое "При попытке запуска отладчика программа падает."? Куда падает? как это выглядит? И причём тут какой-то "запуск отладчика"? Что это такое? Вы эмулятор в USB воткнули и какая-то программа телепередач от этого упала с полки над тумбочкой? :wacko2:

 

PS: Чтобы вам отвечали по существу, задавайте вопрос понятно, а не на своём птичьем языке, который понятен только вам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, jcxz said:

... то какой и о каком IDE речь? 

StmCubeIDE. странно конечно, но на stackoverflow ответов больше

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

33 minutes ago, ichthyandr said:

пардон, если резко, но вопрос был задан конкретный

В целом да, отвечающий вам мог бы и досказать про регистр VTOR... Тем не менее, совет читать книгу, в целом правильный. Я тут с февраля читаю по-маленьку о cortex-m0, и знаете, столько узнаю. И вопросов значительно меньше возникает. И кругозор расширяется.

З.Ы. До этого в основном с m3 и старше работал. Но книг подробно не читал. А тут решил прямо таки проштудировать всё про архитектуру.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 минут назад, ichthyandr сказал:

StmCubeIDE. странно конечно, но на stackoverflow ответов больше

Большинство здесь просто не поняли вашего "вопроса". Например я. Потому ничего и не ответили.

Ответы там касаются старта программы после снятия сброса (по вектору сброса). И ремапа памяти после сигнала сброса. У вас же в вопросе неоднократно упоминался некий "отладчик". Если речь про эмулятор (типа J-Link), то он может произвольно выставить ремап памяти до старта программы (и любые другие регистры переписать). И стартовать под ним можно с произвольного адреса.

Так что ответы там неверны для случая старта под эмулятором. Я например под эмулятором спокойно запускаю программу из ОЗУ, в то время как если просто включить питание, программа стартует из флешь. Никакие BOOT-пины для этого трогать не нужно. Как и таблицу прерываний.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 minute ago, haker_fox said:

В целом да, отвечающий вам мог бы и досказать про регистр VTOR... Тем не менее, совет читать книгу, в целом правильный. Я тут с февраля читаю по-маленьку о cortex-m0, и знаете, столько узнаю. И вопросов значительно меньше возникает. И кругозор расширяется.

З.Ы. До этого в основном с m3 и старше работал. Но книг подробно не читал. А тут решил прямо таки проштудировать всё про архитектуру.

не знаю, как глухой с немым диалог, спросил непосредственно, к чему демагогия?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 minutes ago, ichthyandr said:

к чему демагогия?

Ну так не отвечайте, если не хотите диалога. Чего беситесь то? Потом ещё удивляетесь, что к вам отношение такое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

хорошо, спасибо ))

Вопрос под hal решен

			  uint32_t vect = FIRMWARE_START;
			  __set_MSP(*(__IO uint32_t*)vect);
			  __DSB();
			  HAL_DeInit();
			  ((void(*)())(*((uint *)(FIRMWARE_START + 4))))();

нужно делать deinit в бутлоадере

Изменено пользователем ichthyandr

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 8/7/2020 at 5:03 PM, ichthyandr said:

для перемещения стартового адреса программы нужно править ld скрипт и в опциях запуска задавать адрес таблицы прерываний.

А пример можно?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На Cortex-M3 таблица векторов вот так переносится

extern void(*__vector_table[])();
SCB->VTOR = (uint32_t)&__vector_table;

Где __vector_table название таблицы векторов из стартапа. В случае применения HAL надо искать по коду SCB->VTOR, так как он может с ним что-то делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...