使用Cortex-M MPU

时间:2013-11-12 13:00:23

标签: c++ freertos cortex-m

我们开始使用新软件,我们考虑使用MPU。我们将我们的新软件基于FreeRTOS(带有MPU端口)。

我们正确理解了与MPU进行任务间通信的所有细分。我们遇到的困难是如何处理动态分配保护。默认情况下,所有ram都应在用户模式下进行保护。是否有在线文档解释我们应如何处理动态分配?

我们希望尽可能多地保护内存,因为我们将设计一个大软件> 500K编译代码。

此致

乔纳森

1 个答案:

答案 0 :(得分:0)

基本上FreeRTOS提供了4种不同的内存分配策略,在heap_1.c目录的heap_2.cportable/MemMang ...文件中实现。

heap_1.c提供了一个简单的alloc only实现
heap_2.c提供了一个简单的alloc / free实现

另外2个实现了更高级的alloc / free策略。 FreeRTOS需要你至少选择其中一个,因为它需要这个接口来做它自己的资源分配(任务,互斥,信号量等)。对于提供存储器保护单元的MCU,FreeRTOS也具有适当的support

请注意,使用MPU会强制您使用最小块大小(例如1KB)分配内存。如果您需要分配大量小对象(例如,使用包含许多元素的std::list<int>std::map<int,int>),这可能会非常昂贵。您可以考虑为此类情况提供您自己的专用分配器。