x893 60 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба 3 hours ago, Darth Vader said: Возможно, в этом и проблема. А для этого глаза, мозг и отладчик. Ну и руки конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ichthyandr 0 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 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 ))) тебе на заметку, умник ) читать тут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 22 minutes ago, ichthyandr said: ебе на заметку, умник ) Зря хамите, вам всё правильно сказали. То, что ядро стартует с 0 адреса, и эта память отмпаплена на любой другой не меняется настройками. Вот об этом и была речь. Другими словами, настройка среды и изменение скрипта линкера на влияют на адрес старта. Правильно задействовать ремапинг (для cortex-m0) или изменить смещение таблицы векторов (cortex-m3 и выше). З.Ы. Как раз пишу бутлоадер для m0. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ichthyandr 0 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 4 minutes ago, haker_fox said: Зря хамите, вам всё правильно сказали. То, что ядро стартует с 0 адреса, и эта память отмпаплена на любой другой не меняется настройками. Вот об этом и была речь. Другими словами, настройка среды и изменение скрипта линкера на влияют на адрес старта. Правильно задействовать ремапинг (для cortex-m0) или изменить смещение таблицы векторов (cortex-m3 и выше). З.Ы. Как раз пишу бутлоадер для m0. пардон, если резко, но вопрос был задан конкретный Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 22 минуты назад, ichthyandr сказал: пардон, если резко, но вопрос был задан конкретный "Конкретный"? Из этого "вопроса" вообще ничего не ясно - что именно нужно?? Что такое "дефолтный стартовый адрес"? Если это адрес памяти, с которого стартует ядро после сброса, то изменить его невозможно - он жёстко заложен в ядре. Что за "отладчик" имеется в виду? Эмулятор? Или нечто другое? Если эмулятор, то какой и о каком IDE речь? И почему, если разговор ведёте об адресе старта, то потом пытаетесь манипулировать с расположением таблицы прерываний. Адрес расположения какой-то таблицы прерываний - это явно не "дефолтный стартовый адрес" что бы это ни было. Что такое "При попытке запуска отладчика программа падает."? Куда падает? как это выглядит? И причём тут какой-то "запуск отладчика"? Что это такое? Вы эмулятор в USB воткнули и какая-то программа телепередач от этого упала с полки над тумбочкой? PS: Чтобы вам отвечали по существу, задавайте вопрос понятно, а не на своём птичьем языке, который понятен только вам. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ichthyandr 0 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 5 minutes ago, jcxz said: ... то какой и о каком IDE речь? StmCubeIDE. странно конечно, но на stackoverflow ответов больше Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 33 minutes ago, ichthyandr said: пардон, если резко, но вопрос был задан конкретный В целом да, отвечающий вам мог бы и досказать про регистр VTOR... Тем не менее, совет читать книгу, в целом правильный. Я тут с февраля читаю по-маленьку о cortex-m0, и знаете, столько узнаю. И вопросов значительно меньше возникает. И кругозор расширяется. З.Ы. До этого в основном с m3 и старше работал. Но книг подробно не читал. А тут решил прямо таки проштудировать всё про архитектуру. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 241 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 13 минут назад, ichthyandr сказал: StmCubeIDE. странно конечно, но на stackoverflow ответов больше Большинство здесь просто не поняли вашего "вопроса". Например я. Потому ничего и не ответили. Ответы там касаются старта программы после снятия сброса (по вектору сброса). И ремапа памяти после сигнала сброса. У вас же в вопросе неоднократно упоминался некий "отладчик". Если речь про эмулятор (типа J-Link), то он может произвольно выставить ремап памяти до старта программы (и любые другие регистры переписать). И стартовать под ним можно с произвольного адреса. Так что ответы там неверны для случая старта под эмулятором. Я например под эмулятором спокойно запускаю программу из ОЗУ, в то время как если просто включить питание, программа стартует из флешь. Никакие BOOT-пины для этого трогать не нужно. Как и таблицу прерываний. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ichthyandr 0 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 1 minute ago, haker_fox said: В целом да, отвечающий вам мог бы и досказать про регистр VTOR... Тем не менее, совет читать книгу, в целом правильный. Я тут с февраля читаю по-маленьку о cortex-m0, и знаете, столько узнаю. И вопросов значительно меньше возникает. И кругозор расширяется. З.Ы. До этого в основном с m3 и старше работал. Но книг подробно не читал. А тут решил прямо таки проштудировать всё про архитектуру. не знаю, как глухой с немым диалог, спросил непосредственно, к чему демагогия? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 61 11 августа, 2020 Опубликовано 11 августа, 2020 · Жалоба 18 minutes ago, ichthyandr said: к чему демагогия? Ну так не отвечайте, если не хотите диалога. Чего беситесь то? Потом ещё удивляетесь, что к вам отношение такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ichthyandr 0 11 августа, 2020 Опубликовано 11 августа, 2020 (изменено) · Жалоба хорошо, спасибо )) Вопрос под hal решен uint32_t vect = FIRMWARE_START; __set_MSP(*(__IO uint32_t*)vect); __DSB(); HAL_DeInit(); ((void(*)())(*((uint *)(FIRMWARE_START + 4))))(); нужно делать deinit в бутлоадере Изменено 12 августа, 2020 пользователем ichthyandr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба On 8/7/2020 at 5:03 PM, ichthyandr said: для перемещения стартового адреса программы нужно править ld скрипт и в опциях запуска задавать адрес таблицы прерываний. А пример можно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба На Cortex-M3 таблица векторов вот так переносится extern void(*__vector_table[])(); SCB->VTOR = (uint32_t)&__vector_table; Где __vector_table название таблицы векторов из стартапа. В случае применения HAL надо искать по коду SCB->VTOR, так как он может с ним что-то делать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться