该操作系统在课堂分配中创建。该代码是实验性的,并且没有测试,但应该起作用。
操作系统使用一个非常简单的循环调度程序,并每262144时钟周期进行上下文切换。通过设置OCR0A和timer0的预定器,该行为可以控制。您不能在应用程序中使用timer0,而是调度程序专门使用。
只需将文件从os中开始。编辑os_config.h以满足您的需求。从您的主机调用os_init() ,并使用os_task_add(task_func, task_data)创建任务。要启动调度程序,请致电os_run() 。请注意,此呼叫永远不会返回,因此不会执行后续代码。
请注意,当前任务可能永远不会终止,并且必须使用os_current_task_kill()终止。要访问给出os_task_add的VOID-POINTER,请致电os_current_task_get_data() 。
请不要尝试使用递归或深层呼叫堆栈,因为您只有非常有限的堆栈。您不得使用timer0,因为它用于调度程序!使用自定义中断服务例程时,请勿尝试重新启用中断!
可以在os_config.h中使用以下Define-macros在编译时间配置操作系统:
OS_STACK_SIZE控制一个任务的堆栈大小。OS_TASK_COUNT控制可以同时创建多少个任务。 版权2020 Stephan Brunner
特此免费授予获得此软件副本和相关文档文件副本(“软件”)的任何人,以无限制处理该软件,包括无限制的使用权,复制,复制,修改,合并,合并,发布,分发,分发,分发,订婚,和/或允许软件的副本,并允许对以下条件提供以下条件,以下是以下条件。
上述版权通知和此许可通知应包含在软件的所有副本或大量部分中。
该软件是“原样”提供的,没有任何形式的明示或暗示保证,包括但不限于适销性,特定目的的适用性和非侵权的保证。在任何情况下,作者或版权持有人都不应对任何索赔,损害赔偿或其他责任责任,无论是在合同,侵权的诉讼中还是其他责任,是由软件,使用或与软件中的使用或其他交易有关的。