贾斯汀·博瓦里奇的博客

主要观点:在atsamd-hal项目中,async/await支持经历了较长时间才实现。作者发现embassy框架后,开始思考在HAL中支持异步编程,最终在 2024 年 11 月将其合并。如今大多数异步HAL与执行器的耦合度降低,atsamd-hal也可与多种执行器一起使用。async/await可在单核心系统(如微控制器)中利用并发,通过Futureasync关键字、await关键字和执行器等三个构建块实现协作式多任务处理,同时需要反应堆来监听外部事件并唤醒执行器,微控制器的中断可用于此目的。文中还以atsamd-hal中的外部中断控制器为例,详细介绍了实现异步支持的步骤,包括中断处理程序绑定、wait()方法实现和中断处理程序实现等,并给出了同步和异步版本的使用示例,展示了异步版本的简洁性和可读性。

关键信息

  • async/awaitatsamd-hal项目中的实现历程及最终合并时间。
  • 异步编程的三个构建块及其作用。
  • 微控制器中实现异步支持的具体步骤和相关代码。
  • 同步和异步版本的使用示例及对比。

重要细节

  • Future trait 的定义及Poll枚举的含义。
  • async函数是返回Future的语法糖,await关键字用于驱动Future前进。
  • 不同的执行器在嵌入式和普通计算世界中的情况。
  • 中断处理程序绑定的相关 trait 和宏的使用。
  • wait()方法中如何处理中断和注册唤醒器。
  • 中断处理程序的实现细节及与Future的交互。
阅读 7
0 条评论