Целостность Green Hills Динамическое распределение памяти

0

У меня есть требование, которое нужно многократно выделять и освобождать память. В настоящее время он пытается использовать симулятор Integrity ARM.

Я создал две задачи: Первая задача (кодер): принимает видеоданные из сокета и кодирует их и отправляет на вторую задачу. Вторая задача (декодер): получает данные от кодировщика и декодирует ее. В этом процессе декодирования он динамически выделяет память и после декодирования освобождает память.

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

Спасибо

Теги:
dynamic
rtos
memory-management
integrity

1 ответ

2

Я вижу, что это старый пост, и вы, вероятно, уже нашли исправление, но я видел подобное поведение в Integrity, когда памяти, зарезервированной для виртуального адресного пространства в int файле, недостаточно. Попробуйте увеличить размер MemoryPoolSize и/или HeapSize в вашем VAS файле. Также проверьте еще раз, что тот же объем памяти, который вы выделяете, позже правильно освобождается. Я знаю, что ошибка, которую вы видите, похоже, не связана с нехваткой памяти, но я видел, как Integrity ведет себя очень странно, когда память для VAS исчерпана. Вы можете проверить использование памяти, чтобы узнать, приближаетесь ли вы к пределу, используя сеанс отладки INDRT2 и команду "lt", которая будет сообщать размер пула использованной/размерной памяти для каждого VAS.

Удачи!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню