繁体   English   中英

使用Cortex-M MPU

[英]using Cortex-M MPU

我们启动一个新软件,然后考虑使用MPU。 我们将新软件基于FreeRTOS(带有MPU端口)。

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

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

问候

乔纳森

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

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

其他2个实现了更高级的alloc / free策略。 FreeRTOS至少需要选择其中之一,因为它需要此接口来完成其自身的资源分配(任务,互斥量,信号量等)。 对于提供内存保护单元的MCU,FreeRTOS也具有相应的支持

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM