假设我在嵌入式环境中有一个协作调度程序.我有很多进程在运行.我想利用看门狗定时器,以便我可以检测进程何时因任何原因停止运行并重置处理器.
在没有RTOS的简单应用程序中,我总是会从主循环接触看门狗,这总是足够的.但是,在这里,有许多进程可能会挂起.什么是定期触摸看门狗定时器的清洁方法,同时确保每个过程都处于良好状态?
我想我可以为每个进程提供一个回调函数,这样它就可以让另一个监督所有进程的函数知道它仍然存在.回调将传递一个参数,该参数将是任务唯一ID,因此监督者可以确定谁正在回叫.
我很想知道如何在我的应用程序中使用FreeRTOS.让我提出一个简单的方案.假设我有main和一个具有一些硬件特定代码的模块.该代码可用于控制系统或传感器中的特定电机......具有定义角色的任何硬件.在module.c中,我有一个名为的函数ModuleNameTask
.在main
我创建任务使用xTaskCreate
,我通过ModuleNameTask
.由于我ModuleNameTask
是在module.c而不是main.c中定义的,所以我现在必须在module.c中包含一些FreeRTOS,以便使用类似的函数vTaskDelay
.我不喜欢我在module.c中包含这些文件的事实,因为我觉得它不再可移植.
那么,我该如何处理呢?我应该ModuleNameTask
从module.c中删除它并将其放在main.c中吗?或者只是接受我必须将FreeRTOS的位包含到module.c中的事实.有什么建议?