您认为MSM(Boost Meta State Machine)适用于嵌入式应用吗?在我的情况下,应用程序应该在具有1 MB闪存和192 KB RAM的Cortex-M4F MCU上运行。我喜欢这样一个事实:MSM为您提供了一种更加结构化的方法来定义具有正交区域的分层状态机,但它也引入了一些开销。我想知道这种方法对于具有内存约束的嵌入式应用程序是否可行,或者我应该回去"返回"对于更传统的"开关案例"国家机器。
答案 0 :(得分:0)
这实际上取决于您需要使用它的频率以及它在时间,易于开发,可读性,可移植性等方面为项目增加的价值。等。
如果您在世界上有所有时间,那么您可能会制作出更专门的内容,并根据您的应用需求进行指定。
RAM在你的场景中很珍贵(当然,取决于你的应用程序)。我建议使用Boost(或使用Boot的示例)编写一个有点不重要的状态机,检查RAM使用情况,然后确定您的项目是否有[RAM]预算。
注意,boost使得权衡使用比运行时内存更多的代码空间(通过模板化)。此外,这种权衡优化了运行时性能,因为处理器从闪存中获取指令比从RAM中获取数据更有效(在使用Cortex-M4F时,大多数情况下都是如此)。
记住,C ++ 11& 14个编译器比以前的元编程/模板更加智能,因此代码膨胀不应该真正引起关注,因为使用Boost MSM的权衡/成本对于复杂的非 - 通过国家机器。
查看Boost MSM-lite(实验性),试图通过将MSM减少到一组有限的vanilla MSM设施来解决许多问题。