Мы запускаем новое программное обеспечение и думаем об использовании MPU. Мы основали наше новое программное обеспечение на FreeRTOS (с портом MPU).
Мы правильно понимаем всю сегментацию о межзадачном взаимодействии с MPU. С чем мы сталкиваемся, так это с динамической защитой распределения. По умолчанию все оперативные памяти должны быть защищены в пользовательском режиме. Есть ли в сети документация, объясняющая, как мы должны обрабатывать динамическое распределение?
Мы хотели бы защитить память столько, сколько мы будем разрабатывать большой программный код> 500K скомпилированный код.
С уважением
Джонатан
В основном 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>
со многими элементами). Вы можете рассмотреть возможность предоставления собственных специализированных распределителей для таких случаев.
Других решений пока нет …