嗨,
我对 TMS570 上基于 FreeRTOS 的安全软件架构感兴趣,用于安全应用程序,
在我看来,对于安全应用程序,最好使用静态版本的任务、队列、..
xQueueCreateStatic xTaskCreateStatic xTimerCreateStatic .. 等等
您是否同意这一点,或者您认为我也可以使用非静态版本?谢谢安东尼奥
正如您所暗示的,FreeRTOS 为您提供了两种选择。以下页面列出了两者的一些优缺点,所以我不会在这里重复它们:http ://www.freertos.org/Static_Vs_Dynamic_Memory_Allocation.html
不过,只有您可以回答您的问题,因为这取决于您的应用程序在做什么。无论您的应用程序是在启动时创建所有资源然后从不删除它们,还是在运行时不断创建和删除许多不同大小的内存块,答案都会非常不同。由于这是一个安全应用程序,如果它在运行时进行大量内存分配和释放,我会感到惊讶 - 但如果是这样,您将不得不关注内存碎片、处理堆耗尽和内存的非确定性行为分配器(分配不会花费相同的时间)。在大多数情况下,在 FreeRTOS 中使用 heap_4.c 应该可以防止碎片,但对于安全应用程序来说,“应该”可能还不够好。
如果所有资源都是动态分配的,但仅在启动时分配(大多数应用程序实际上都是这种情况),那么这些潜在的陷阱都不会适用,并且真的没有理由不使用动态内存。