STM32CubeIDE где задаются настройки памяти

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Аватара пользователя
Солнцеворот
Встал на лапы
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

STM32CubeIDE где задаются настройки памяти

Сообщение Солнцеворот »

Котоколлеги, приветствую!
Никак не найду, где в CubeIDE задаются настройки стартового адреса для программы.
Хочу использовать свой загрузчик, а для этого нужно начинать основную программу не с начала памяти, а с зазором для программы загрузчика.

Чтобы было совсем понятно, что я имею в виду, в Keil это вот здесь:
Изображение

Вопрос: где это же в CubeIDE?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: STM32CubeIDE где задаются настройки памяти

Сообщение Myp3ik »

В регистре SCB->VTOR
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32CubeIDE где задаются настройки памяти

Сообщение Мурик »

Myp3ik писал(а):SCB->VTOR
Это назначение стартового адреса таблицы прерываний и др.
Не знаю как в CubeIDE, в EmBitz адрес задается в ld файле (например stm32f103c8_flash.ld). В нем есть строки

Код: Выделить всё

/* Memory Spaces Definitions */
MEMORY
{
    ROM  (rx) : ORIGIN = 0x08000000, LENGTH = 64K
    RAM (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
}
Нужно изменить адрес ROM и длину соответственно.
Аватара пользователя
Солнцеворот
Встал на лапы
Сообщения: 141
Зарегистрирован: Вт июн 03, 2008 01:39:47

Re: STM32CubeIDE где задаются настройки памяти

Сообщение Солнцеворот »

Кажется, нашел.
В файле stm32f072xb.h (для другого процессора будет другое немного имя файла):

Код: Выделить всё

#define FLASH_BASE            ((uint32_t)0x08000000U)              /*!< FLASH base address in the alias region */
#define FLASH_BANK1_END       ((uint32_t)0x0801FFFFU)              /*!< FLASH END address of bank1 */
#define SRAM_BASE             ((uint32_t)0x20000000U)              /*!< SRAM base address in the alias region */
#define PERIPH_BASE           ((uint32_t)0x40000000U)              /*!< Peripheral base address in the alias region */
По идее, если переопределить FLASH_BASE на более поздний адрес, то программа будет записана не в начало флеша, а начиная с заданного адреса.

Проверить не могу пока - не умею. Планирую писать свой загрузчик, потому решил этим вопросом озаботиться заранее.
Спасибо ответившим.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

Re: STM32CubeIDE где задаются настройки памяти

Сообщение Мурик »

Солнцеворот писал(а):По идее, если переопределить FLASH_BASE на более поздний адрес, то программа будет записана не в начало флеша, а начиная с заданного адреса.
Место расположения программы определяет линкер, а не компилятор. Эти дефайны совсем для других целей.
Солнцеворот писал(а):Проверить не могу пока - не умею. Планирую писать свой загрузчик, потому решил этим вопросом озаботиться заранее.
Если вы не умеете отредактировать значения дефайнов, проверить и чтобы убедится что это не сработало, как собираетесь писать загрузчик? В нем кроме всего прочего, необходимо корректно деинициализировать всю используемую периферию и перейти в основной код. Задача не так проста как кажется. На многих форумах данная тема обсуждается.
Ответить

Вернуться в «ARM»