文章目录
ucos移植相关知识点
一、ucos系统
1、实时操作系统的概念
如果操作系统能使计算机系统及时响应外部事件的请求,并能及时控制所有实时设备与实时任务协调运行,且能在一个规定的时间内完成对事件的处理,则这个操作系统就是一个实时操作系统。
实时操作系统有两个基本要求:
第一,实时系统的计算必须产生正确的结果,称为逻辑或功能正确。
第二,实时系统的计算必须在预定的时间内完成称为时间正确。
按时间正确的程度来分,实时操作系统分为硬实时操作系统和软实时操作系统。
2、任务的相关概念
在设计一个较为复杂的应用程序时,通常把一个大型任务分解成多个小任务,然后在计算机中通过运行这些小任务,最终完成大人的目的。
-
在ucos-ii中,与上述小任务对应的程序实体就叫做”任务“,而ucos-ii就是一个能对这些小任务的运行进行管理和调度的多任务操作系统。
-
在代码上看,任务就是一个函数。
-
从任务的存储结构上看,分为:任务控制块、任务堆栈、任务代码,三个部分
-
任务的控制块
任务控制块是关联了任务代码的程序控制块,它记录了各个属性;
- 任务的堆栈
任务堆栈则用来保存任务的工作环境;

- 任务的链表
链表对任务进行管理;

-
ucos-ii的任务有两种:用户任务和系统任务
- 用户任务
由应用程序设计者编写的任务,且是为了解决应用问题而编写的。
- 系统任务(两个系统任务:空闲任务和统计任务)
为应用程序提供某种服务或为系统本身服务的。
3、任务调度的相关概念
任务调度为系统中处于就绪状态的任务分配CPU是多任务操作系统的核心工作。
这项工作设计两项技术:
一是判断哪些任务处于就绪状态(OSTimeTick(););
二是进行任务调度(PendSV_Handler)。
所谓任务调度,就是通过一个算法在就绪任务中确定应该马上运行的任务,操作系统用于负责这项工作的程序模块叫调度器。
-
任务就绪表
它登记了系统中所有处于就绪状态的任务,每个任务在位图中占据一个二进位,该位置的状态(0或1)就表示任务是否处于就绪状态。
-
登记
当某个任务处于就绪状态时,系统将该任务登记在任务就绪表中,即在就绪表中将该任务的对应位置1。
- 注销
当某个任务需要脱离就绪状态时,系统在就绪表中将该任务的位置0。
- 调度器
有两种:
一种是任务级的调度器,由函数OSSched()实现。
一种是中断级的调度器,由OSIntExt()实现。
- OS_TASK_SW() 任务切换宏
其实任务切换的工作是靠OSCtxsw()来完成的,它的工作:
-
把被中止的任务的断点指针保存到任务堆栈中;
-
把CPU通用寄存器的内容保存到任务堆栈中;
-
把被中止任务的任务堆栈指针当前值保存到该任务的任务控制块的OSTCBStkPtr中;
-
获得待运行任务的任务控制块;
-
使CPU通过任务控制块获得待运行任务的任务堆栈指针;

本文详细介绍了嵌入式实时操作系统UCOS的系统概念,包括任务管理、中断处理、进程通信、内存管理和移植细节。在UCOS中,任务调度是核心,通过任务控制块、中断服务子程序和任务切换实现多任务运行。中断具有可剥夺性,通过OSIntEnter()和OSIntExit()管理中断嵌套。通信机制如信号量、互斥量和邮箱用于任务间的同步与数据交换。此外,还探讨了GPIO和定时器的驱动。在移植过程中,涉及OS_CPU.H、OS_CPU_C.C和OS_CPU_A.ASM等文件的修改。最后,通过示例展示了如何创建和管理UCOS任务。
1317

被折叠的 条评论
为什么被折叠?



