我们启动了一个新软件,并考虑使用微处理器。我们的新软件基于FreeRTOS (带微处理器端口)。
我们正确地理解了与MPU之间的任务间通信的所有分段。我们遇到的困难是如何处理动态分配保护。默认情况下,所有ram都应在用户模式下受到保护。有没有在线文档解释我们应该如何处理动态分配?
我们希望尽可能保护内存,因为我们将设计一个大于500K编译代码的大型软件。
问候
乔纳森
发布于 2013-11-12 21:25:26
基本上,FreeRTOS提供了4种不同的内存分配策略,在heap_1.c,heap_2.c中实现。portable/MemMang目录中的文件。
heap_1.c提供了一个简单的纯分配实现
heap_2.c提供了一个简单的alloc/free实现
另外两个实现了更高级的alloc/free策略。FreeRTOS需要您至少选择其中的一个,因为它需要这个接口来完成它自己的资源分配(任务、互斥、信号量等)。对于提供存储器保护单元的单片机,FreeRTOS也具有适当的support。
请注意,使用MPU将强制您使用最小区块大小(例如1KB)来分配内存。如果您需要分配大量小对象(例如,使用具有许多元素的std::list<int>或std::map<int,int> ),这可能会非常昂贵。您可以考虑为这种情况提供自己的专用分配器。
https://stackoverflow.com/questions/19929903
复制相似问题