我正在学习嵌入式编程,所以我是这个领域的新手。有人能解释一下如何从给定的系统描述中识别任务/线程吗?另外,我如何估计时间约束、执行时间……我真的卡住了。
以下是我正在开发的系统描述:
实现了一个2自由度伺服电机系统。两轴操纵杆用于控制伺服电机。此外,启用记录和再现操纵杆的用户路径,以便可以多次复制相同的运动。需要支持录制3个动作轮廓,时长至少为5分钟。需要将简档记录到非易失性存储器,并通过操纵杆按钮进行记录/回放控制。为每个配置文件使用一个LED为当前选择的配置文件和操作模式(录制/回放)提供适当的信号。在RT-Thread系统中,在Raspberry Pi Pico平台上实现必要的驱动程序,作为对所使用的设备和实现所述系统的应用程序本身的支持,并为每个观察到的功能提供清晰的分离线程。
发布于 2021-07-04 06:35:05
在功能上进行分区是很诱人的,但在实践中,您应该根据截止日期、确定性和更新率进行分区。对于简单的系统,这可能会被证明与功能分区相同。该部分:
为每个观察到的功能清除独立的线程
可能会导致不适当的分区。然而,这可能是您的导师所期望的分区,即使它不是最优的。
可能没有单一的解决方案,但明显的候选任务是:
、
现在考虑这些候选对象,可以看到操纵杆控件和重放控件是相互排斥的,而且重放本身也是通过操纵杆按钮选择的。因此,将其作为一个单独的任务是有意义的。尤其是因为播放机将以与操纵杆相同的方式与伺服控制器通信。所以你可能会有:
、
记录器必须是单独的线程,因为对NV存储器的访问可能较慢且不确定。您需要在足够长的消息队列中输入时间和x/y位置数据,以确保记录不会影响定时运动控制。
目前尚不清楚您使用的是哪种伺服系统,也不清楚您的应用程序是否负责PID运动控制,或者只是将位置信号发送到伺服控制器。如果是后者,则可能没有理由将伺服控制与读取器/播放器分开。在这种情况下,您将拥有:
的
其他解决方案也是可能的。例如,记录器可以随时间记录伺服位置而不是操纵杆位置,并使伺服控制器处理重放。
、
如果操纵杆轮询和伺服更新速率不同,这是有意义的,因为你需要重播伺服所做的事情,而不是操纵杆所做的事情。
https://stackoverflow.com/questions/68239976
复制相似问题