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

 
 
 
Reply to this topicStart new topic
> RTX Kernal malloc()
Dениs
сообщение Nov 18 2014, 20:24
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 25-12-12
Пользователь №: 74 984



Проблема в следующем, при выделении больших обемов памяти в RTX Kernal с помощью функции malloc(), не удается найти подходящий кусок памяти по размеру и возвращает указатель на NULL ? Может необходимо в таске увеличить размер стека ?
Go to the top of the page
 
+Quote Post
VAI
сообщение Nov 19 2014, 05:25
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 120
Регистрация: 17-06-04
Пользователь №: 37



malloc() выделяет память не в стеке, а в куче (heap). Размер кучи для STM32F2 задаётся в файле "startup_stm32f2xx.s".
Учитывайте, что частый вызов malloc(), calloc(), realloc() и free() может привести к фрагментации кучи и невозможности выделить области памяти большого объёма...

Для реентабельности (возможности вызова из разных задач) вызов malloc(), calloc(), realloc() и free() должен быть обрамлён функциями rt_tsk_lock() и rt_tsk_unlock().
Примеры функций для CMSIS_RTX кейла во вложенном файле Прикрепленный файл  rtx_malloc.zip ( 2.51 килобайт ) Кол-во скачиваний: 54
.


--------------------
Если зайца бить, его можно и спички научить зажигать
Сколько дурака не бей - умнее не будет. Зато опытнее
Go to the top of the page
 
+Quote Post
Aaron
сообщение Nov 28 2014, 06:53
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 243
Регистрация: 5-10-06
Из: Зеленоград
Пользователь №: 21 007



использование динамической памяти в embedded проектах- тихое непредсказуемое зло имхо. Если уж решили использовать в процессах - то для выделения памяти используйте события/мутексы (усложнится немного выделение памяти, появятся обёртки для malloc/free) - чтобы процесс засыпал пока память не появится, хотя бы на некоторое время (сколько система позволяет) - ну а дальше обработка ошибок при невозможности выделить память.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 05:28
Рейтинг@Mail.ru


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