LAS9891 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 (изменено) · Жалоба Собственно вопрос в заголовке. По умолчанию адреса такие: С адресами по умолчанию проект работает. А я хочу так: Для смещённых адресов линкер-файл такой: ; ************************************************************* ; *** Scatter-Loading Description File generated by uVision *** ; ************************************************************* LR_IROM1 0x08008000 0x0000BC00 { ; load region size_region ER_IROM1 0x08008000 0x0000BC00 { ; load address = execution address *.o (RESET, +First) *(InRoot$$Sections) .ANY (+RO) .ANY (+XO) } RW_IRAM1 0x20000000 0x00005000 { ; RW data .ANY (+RW +ZI) } } В проекте со смещёнными адресами делаю смещение для регистра SCB->VTOR в файле gd32f10x_misc.h: #define NVIC_VECTTAB_RAM ((uint32_t)0x20000000U) /*!< RAM base address */ #define NVIC_VECTTAB_FLASH ((uint32_t)0x08008000U) /*!< Flash base address */ Заливаю проект, захожу в отладчик - проект виснет. Не доходит даже до смены значения в SCB->VTOR. Что ещё я не сделал? Изменено 12 декабря, 2023 пользователем LAS9891 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба Просьба к модераторам переместить тему в раздел https://electronix.ru/forum/forum/231-ti-allwinner-gigadevice-nordic-espressif-i-drugie/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба Проблему решил. Так делать нельзя. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 12 декабря, 2023 Опубликовано 12 декабря, 2023 · Жалоба 5 hours ago, LAS9891 said: Просьба к модераторам переместить тему в раздел https://electronix.ru/forum/forum/231-ti-allwinner-gigadevice-nordic-espressif-i-drugie/ Модератор: я её сюда и перенёс как раз из того раздела, где Вы хотите видеть тему. Тут больше вопросов по среде разработки. 3 hours ago, LAS9891 said: Проблему решил. Так делать нельзя. А как можно? Поделитесь ответом для тех, кто будет решать подобную задачу) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
LAS9891 0 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 15 hours ago, haker_fox said: Поделитесь ответом Только из уважения к Вам. Не претендую на истину, но как мне удалось выяснить, контроллер всегда стартует с начального адреса, и болт он клал на то, что программа во FLASH смещена. Сделал ещё такой эксперимент. Проект один и тот же но записан по разному. И оба проекта стартуют с одинакового адреса. Я полагаю, что как минимум исключения должны лежать в начале FLASH, а далее уже можно играть с SCB->VTOR. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 13 декабря, 2023 Опубликовано 13 декабря, 2023 · Жалоба 6 minutes ago, LAS9891 said: контроллер всегда стартует с начального адреса Конечно! И никак иначе. То, что в скрипте линкера указано расположение программы произвольно, не влияет на адрес сброса микроконтроллера. Мне казалось, это настолько очевидно, что я даже вопроса Вашего не понял, выходит. Запускать "смещённую" программу должен только загрузчик. А сам загрузчик запускается с "начального адреса". 6 minutes ago, LAS9891 said: исключения должны лежать в начале FLASH Где угодно, в принципе. 6 minutes ago, LAS9891 said: играть с SCB->VTOR. Ой, играть! Нет, конечно. Читать внимательно описание этого регистра, и не играть, а укладывать в его биты осмысленную! информацию. 6 minutes ago, LAS9891 said: Только из уважения к Вам. OFF: Вы меня не знаете💗 Я в реальности очень сложный человек. Не все могут уважать мне подобных)))) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться