参考:https://tweedegolf.nl/en/blog/65/async-rust-vs-rtos-showdown
抢占调度时间:从中断服务程序开始,置对应任务被唤醒执行的时间
测试方案:在时钟中断开始时将某个引脚的电平置为高电平,在按钮的await之后将该引脚的电平翻转为低电平
测试目的:这一时间本质上代表了系统的实时性
<aside> 💡 这一段时间也表现出了我们系统的抢占调度的复杂性
</aside>
时间精度:从任务被唤醒开始执行到下一次进入休眠状态的时间
设置的引脚情况:
interrupt的测试是pa1
thread的测试是pa0
测试方案:将所有可能分配栈的空间的每一个字节都设定为某个特殊值,当栈被使用时就将被覆盖
<aside>
💡 在此基础上可以进一步可以推算出平均每个栈使用的栈空间
</aside>
设置memory.x将ram大小设置为24K,设定程序栈分配单位为2K(冗余),增加任务数量测试爆栈情况(不需要测试embassy和ucosii,他们是否爆栈能在编译时确定)
<aside> 💡
不再测试吞吐量是由于在嵌入式操作系统的应用场景下,所有的任务都应该是一个无限循环
</aside>