Jump to content
    

Разместить Heap FreeRTOS в SDRAM

Здравствуйте!

Как правильно расположить Heap FreeRTOS в памяти SDRAM? Память нужна под большие массивы данных, с которыми вроде как надо работать с помощью средств FreeRTOS. Heap выделяется как массив, можно как то указать его адрес? И не будет ли потом проблем с тем, что кроме данных эту память будет еще использовать FreeRTOS ?

/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];

Share this post


Link to post
Share on other sites

/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ]  __attribute__((section(".sdram")));

 

дальше в скрипте линкера размешаешь секцию sdram по нужному адресу.

 

Share this post


Link to post
Share on other sites

В какой момент должна быть инициализирована SDRAM - до создания любых задач РТОС, до запуска планировщика или до момента первого выделения памяти из кучи?

Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?

Share this post


Link to post
Share on other sites

В какой момент должна быть инициализирована SDRAM - до создания любых задач РТОС, до запуска планировщика или до момента первого выделения памяти из кучи?

Если куча FreeRTOS размещена в SDRAM, то до любого из указанных действий.

Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?
1) Можно работать с памятью, как с массивом данных через указатель. Дополнительных действий не требуется

2) Можно объявить статические массивы во внешней памяти. При этом или память должна быть инициализирована перед инициализацией сегментов памяти (в IAR в функции __low_level_init) или массивы должны быть объявлены как не инициализируемые (в IAR ключевое слово __no_init). Старт программы без инициализации больших массивов произойдет быстрее.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...