Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Разместить Heap FreeRTOS в SDRAM
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > FreeRTOS
Atlantis-
Здравствуйте!
Как правильно расположить Heap FreeRTOS в памяти SDRAM? Память нужна под большие массивы данных, с которыми вроде как надо работать с помощью средств FreeRTOS. Heap выделяется как массив, можно как то указать его адрес? И не будет ли потом проблем с тем, что кроме данных эту память будет еще использовать FreeRTOS ?
Код
/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];
Непомнящий Евгений
Цитата(Atlantis- @ Nov 21 2014, 17:06) *
Код
/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ]  __attribute__((section(".sdram")));


дальше в скрипте линкера размешаешь секцию sdram по нужному адресу.
remi700
В какой момент должна быть инициализирована SDRAM - до создания любых задач РТОС, до запуска планировщика или до момента первого выделения памяти из кучи?
Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?
desh
Цитата
В какой момент должна быть инициализирована SDRAM - до создания любых задач РТОС, до запуска планировщика или до момента первого выделения памяти из кучи?

Если куча FreeRTOS размещена в SDRAM, то до любого из указанных действий.
Цитата
Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?
1) Можно работать с памятью, как с массивом данных через указатель. Дополнительных действий не требуется
2) Можно объявить статические массивы во внешней памяти. При этом или память должна быть инициализирована перед инициализацией сегментов памяти (в IAR в функции __low_level_init) или массивы должны быть объявлены как не инициализируемые (в IAR ключевое слово __no_init). Старт программы без инициализации больших массивов произойдет быстрее.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.