RTIC和Embassy是目前rust嵌入式开发中比较热门的两个框架。本来呢,针对RTIC的移植已经完成了一小半,但在移植过程中感受到了RTIC的不足,正好跳出来全面考察下embassy,本文就是根据目前的尝试结果做个对比总结。
RTIC和Embassy是两种完全不同的思路:
1、RTIC是基于MCU强大的中断体系以中断来驱动,所以RTIC的重心是放到了数据的隔离上,可参考rust嵌入式开发补充,整个框架,不管是处理还是规模都比较简单
2、Embassy则是基于rust语言的异步特性【async和await】、Send等来实现线程化并确保安全
也就是说,一个依托底层MCU,一个依托rust语言,所以分别形成了自己的特色。
RTIC的优缺点
RTIC的优点就是简便,一旦理解了RTIC的工作机制,开发起来只要牢记三个方面就好了:
- 中断驱动:所有的任务调用源头都是某个硬件中断,是天然的事件-响应模型,以此模型来编写各个处理任务,然后将这些任务分配到相应的硬件中断中spawn就好了,逻辑非常清晰、简洁
- 数据隔离:RTIC将数据分为了本地和共享两类,本地数据为某个任务独享,其它任务全都无法访问;共享数据为指定的某几个任务共享,使用时需加锁来互斥使用。确保了数据安全,而且数据的访问逻辑也非常清晰,不容易混乱,使用上也非常简单,不会出现复杂的Option<Arc<Mutex<…>>>的形式【RTIC自己做了,提供给用户任务时就是复制过来的数据指针了】
- 优先级

本文对比了Rust嵌入式开发中的RTIC和Embassy框架,RTIC基于中断驱动,强调数据隔离;Embassy则利用rust异步特性,提供更灵活的任务调度和通信手段。RTIC简单但功能有限,Embassy则更强大但对rust知识要求较高。

1843

被折叠的 条评论
为什么被折叠?



