Как установить пользовательскую область памяти в Keil Scatter Загрузка файла описания - PullRequest
0 голосов
/ 26 сентября 2018

, поэтому у меня есть вопрос относительно пользовательского файла Scatter, который я собираюсь использовать.

; *************************************************************
; *** Scatter-Loading Description File generated by uVision ***
; *************************************************************

LR_IROM1 0x08000000 0x00008000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00008000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
  }
  RW_IRAM1 0x20000000 0x00002000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

ПЗУ хранится в 0x08000000 ~ 0x08008000.Можно ли было бы установить для него некоторое пространство, скажем, например, 0x08007C00 ~ 0x08007FFF, и задать для него область чтения и записи?Давайте возьмем этот диапазон адресов памяти как «Данные пользователя»

Я бы использовал область «Данные пользователя» в моей программе как сегмент, где данные могут быть записаны во время работы моей основной программы и когда я выключаю питаниеи включив устройство, я могу загрузить данные, которые были ранее записаны в этот сегмент.

Я использую цикл и HAL_Flash_Program для записи данных на начальный адрес памяти 0x08007C00.Какие изменения я должен внести в файл Scatter и, возможно, в мой C-файл, чтобы разрешить запись данных в указанную область памяти во время работы моей основной программы?

Спасибо

* Я используюSTM32F051 микроконтроллер.

1 Ответ

0 голосов
/ 26 сентября 2018

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

...