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

 
 
> uC/OSII: память, как оно работает?
Koluchiy
сообщение Dec 10 2013, 10:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Здравствуйте, уважаемые гуру.
Никогда не работал с RTOS, так что буду задавать дилетантские вопросы.

Поясните пожалуйста, как эта система работает с памятью.
Стек выделяется каждой задаче, его размеры определяются при создании задачи.
Что на тему кучи (Heap)? Она общая для всех задач?

Есть ли какая-то защита памятей задач? (статических и динамических)
Умеет ли эта система работать с MMU? (процессор - NIOSII/f).

Ну и, можно ли как-то определить максимальный размер кучи, выделяемой в ходе работы системы и ее задач?
Задача статистики такой информации вроде не дает. Есть ли другие способы?

Всем заранее спасибо за ответы.
Можно вместо ответов посылать втуда, где читать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
andrewlekar
сообщение Dec 17 2013, 04:56
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 837
Регистрация: 8-02-07
Пользователь №: 25 163



Размер кучи можно определить только приблизительно: размещается памяти с запасом и прогоняется программа - потом смотрите, сколько памяти максимум требовалось. Размеры стеков для задач тоже рассчитываются таким методом - автоматического вычисления стека для задач я не встречал.
Go to the top of the page
 
+Quote Post
Koluchiy
сообщение Dec 17 2013, 05:58
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 972
Регистрация: 12-04-09
Из: Москва
Пользователь №: 47 543



Цитата(andrewlekar @ Dec 17 2013, 08:56) *
потом смотрите, сколько памяти максимум требовалось


Нельзя ли подробнее, как можно посмотреть "потом", сколько памяти максимум требовалось?
Это какая-то примочка в отладчике, или в ОС?
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Dec 17 2013, 06:56
Сообщение #4


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(Koluchiy @ Dec 17 2013, 07:58) *
Нельзя ли подробнее, как можно посмотреть "потом", сколько памяти максимум требовалось?
Это какая-то примочка в отладчике, или в ОС?


Есть примочки и для Keil-а и для IAR-а которые позволяют смотреть состояния стеков задач uCOS и менеджера памяти.
В принципе задачи и в рабочем режиме могут контролировать свой стек и увеличивать его при необходимости.

В uCOS есть только менеджер разделов памяти с выделением блоков фиксированной длины.
Разделов этих может быть много, но надо всегда напрягаться какую длину назначить блокам.
Эт такой рудимент оставшийся со времен когда в микроконтроллерах было по 2-10 кБ памяти.

В других осях есть нормальные многозадачные malloc и free, например в MQX.
А почему бы вам не изучить MQX? wink.gif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 27th August 2025 - 22:02
Рейтинг@Mail.ru


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