реклама на сайте
подробности

 
 
> Разместить Heap FreeRTOS в SDRAM
Atlantis-
сообщение Nov 21 2014, 13:06
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 491
Регистрация: 18-05-11
Пользователь №: 65 102



Здравствуйте!
Как правильно расположить Heap FreeRTOS в памяти SDRAM? Память нужна под большие массивы данных, с которыми вроде как надо работать с помощью средств FreeRTOS. Heap выделяется как массив, можно как то указать его адрес? И не будет ли потом проблем с тем, что кроме данных эту память будет еще использовать FreeRTOS ?
Код
/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ];
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
Непомнящий Евген...
сообщение Dec 8 2014, 13:18
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Цитата(Atlantis- @ Nov 21 2014, 17:06) *
Код
/* Allocate the memory for the heap. */
static unsigned char ucHeap[ configTOTAL_HEAP_SIZE ]  __attribute__((section(".sdram")));


дальше в скрипте линкера размешаешь секцию sdram по нужному адресу.
Go to the top of the page
 
+Quote Post
remi700
сообщение Jan 23 2015, 17:29
Сообщение #3





Группа: Новичок
Сообщений: 4
Регистрация: 22-09-13
Пользователь №: 78 436



В какой момент должна быть инициализирована SDRAM - до создания любых задач РТОС, до запуска планировщика или до момента первого выделения памяти из кучи?
Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?
Go to the top of the page
 
+Quote Post
desh
сообщение Jan 25 2015, 07:37
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 113
Регистрация: 25-10-07
Из: Краснодар
Пользователь №: 31 725



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

Если куча FreeRTOS размещена в SDRAM, то до любого из указанных действий.
Цитата
Почему нельзя работать с массивом данных, присвоив указателю на первый элемент адрес в пространстве SDRAM, или нужно обязательно выделять память под него динамически через malloc/free?
1) Можно работать с памятью, как с массивом данных через указатель. Дополнительных действий не требуется
2) Можно объявить статические массивы во внешней памяти. При этом или память должна быть инициализирована перед инициализацией сегментов памяти (в IAR в функции __low_level_init) или массивы должны быть объявлены как не инициализируемые (в IAR ключевое слово __no_init). Старт программы без инициализации больших массивов произойдет быстрее.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th June 2025 - 18:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01359 секунд с 7
ELECTRONIX ©2004-2016