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

Как сместить стартовый адрес для GD32F103RBT6 в Keil?

Собственно вопрос в заголовке. По умолчанию адреса такие:

(12_12.202311-08-13).thumb.jpg.a90bed36e819bc406440a8ff1b318c73.jpg

С адресами по умолчанию проект работает.

А я хочу так:

(12_12.202311-08-31).thumb.jpg.d5b95c4e87b87eb5a5905e314a5bb7ec.jpg

 

Для смещённых адресов линкер-файл такой:

; *************************************************************
; *** 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.

 

Что ещё я не сделал?

 

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

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


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

Просьба к модераторам переместить тему в раздел https://electronix.ru/forum/forum/231-ti-allwinner-gigadevice-nordic-espressif-i-drugie/

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


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

5 hours ago, LAS9891 said:

Просьба к модераторам переместить тему в раздел https://electronix.ru/forum/forum/231-ti-allwinner-gigadevice-nordic-espressif-i-drugie/

Модератор: я её сюда и перенёс как раз из того раздела, где Вы хотите видеть тему. Тут больше вопросов по среде разработки.

3 hours ago, LAS9891 said:

Проблему решил. Так делать нельзя.

А как можно? Поделитесь ответом для тех, кто будет решать подобную задачу)

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


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

15 hours ago, haker_fox said:

Поделитесь ответом

Только из уважения к Вам.

Не претендую на истину, но как мне удалось выяснить, контроллер всегда стартует с начального адреса, и болт он клал на то, что программа во FLASH смещена. Сделал ещё такой эксперимент. Проект один и тот же но записан по разному. И оба проекта стартуют с одинакового адреса. Я полагаю, что как минимум исключения должны лежать в начале FLASH, а далее уже можно играть с SCB->VTOR.

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


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

6 minutes ago, LAS9891 said:

контроллер всегда стартует с начального адреса

Конечно! И никак иначе. То, что в скрипте линкера указано расположение программы произвольно, не влияет на адрес сброса микроконтроллера. Мне казалось, это настолько очевидно, что я даже вопроса Вашего не понял, выходит. Запускать "смещённую" программу должен только загрузчик. А сам загрузчик запускается с "начального адреса".

6 minutes ago, LAS9891 said:

исключения должны лежать в начале FLASH

Где угодно, в принципе.

6 minutes ago, LAS9891 said:

играть с SCB->VTOR.

Ой, играть! Нет, конечно. Читать внимательно описание этого регистра, и не играть, а укладывать в его биты осмысленную! информацию.

6 minutes ago, LAS9891 said:

Только из уважения к Вам.

OFF: Вы меня не знаете💗 Я в реальности очень сложный человек. Не все могут уважать мне подобных))))

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


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

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

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

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

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

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

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

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

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

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