с использованием Cortex-M MPU

Мы запускаем новое программное обеспечение и думаем об использовании MPU. Мы основали наше новое программное обеспечение на FreeRTOS (с портом MPU).

Мы правильно понимаем всю сегментацию о межзадачном взаимодействии с MPU. С чем мы сталкиваемся, так это с динамической защитой распределения. По умолчанию все оперативные памяти должны быть защищены в пользовательском режиме. Есть ли в сети документация, объясняющая, как мы должны обрабатывать динамическое распределение?

Мы хотели бы защитить память столько, сколько мы будем разрабатывать большой программный код> 500K скомпилированный код.

С уважением

Джонатан

0

Решение

В основном FreeRTOS предлагает 4 различные стратегии выделения памяти, реализованные в heap_1.c, heap_2.c … файлы в portable/MemMang каталог.

heap_1.c предлагает простую реализацию только для alloc
heap_2.c предлагает простую реализацию alloc / free

Другие 2 реализуют более продвинутые стратегии alloc / free. FreeRTOS потребуется, чтобы вы хотя бы выбрали один из них, потому что ему нужен этот интерфейс для распределения ресурсов (задач, мьютексов, семафоров и т. Д.). Для MCU, которые обеспечивают защиту памяти, FreeRTOS также имеет соответствующие служба поддержки.

Обратите внимание, что использование MPU заставит вас выделить память, используя минимальный размер фрагмента (например, 1 КБ). Это может быть очень дорого, если вам нужно выделить много маленьких объектов (например, используя std::list<int> или же std::map<int,int> со многими элементами). Вы можете рассмотреть возможность предоставления собственных специализированных распределителей для таких случаев.

0

Другие решения

Других решений пока нет …