新闻中心

EEPW首页>嵌入式系统>设计应用> 嵌入式操作系统UC/OSII的内核结构及介绍

嵌入式操作系统UC/OSII的内核结构及介绍

作者: 时间:2010-12-12 来源:网络 收藏


是多任务的,任务切换是其核心技术,由汇编语言编写。任务切换函数OS_TASK_SW( )被设置成中断函数,调用时使用的是软件中断指令,这样在进入中断程序之前,当前任务的代码地址和状态字就自动保存在当前任务的堆栈顶部。下面用8086的程序举例切换函数:

(1) _OS_TASK_SW(或_OSIntCtxSw)PROC FAR中断程序。

(2) PUSH指令该指令针对_OS_TASK_SW,保存当前任务寄存器到该任务的堆栈,代码地址已经保存。

(3) ADD SP,n该指令针对_OSIntCtxSw,因为该函数由中断程序调用,运行他之前曾调用一些函数,堆栈发生变化,所以需要调整,去掉前几个函数的保存地址和参数,而代码地址在发生中断时就已经保存。

(4) 保存该任务的当前堆栈地址到该任务控制块OS_TCB,即保存SS和SP。

(5) 调入已就绪最高优先级任务控制块,取出其原来保存的任务堆栈地址,即赋值给SS和SP。

(6) POP指令恢复新任务的寄存器。

(7) IRET中断指令返回时,CPU从堆栈顶部即SS:SP指向的位置取出以前所保存的代码地址和状态字,并从此地址恢复原来任务的运行。

5 程序举例

一个最简单的8086程序例子:在主程序运行完毕后,各任务开始轮流执行。



6 结语

还有时间管理、内存分配的功能,并且使用了信号量、邮箱和信息队列,使各任务之间可以互相通讯,协调对各种事务的管理,适用于小型的高端CPU。已经有许多公司以其为核心,进行功能扩展,从而开发自己的,并且由于其代码简练,JEAN J.LABROSSE专门写书对其讲解,也可以非常好地用于教学。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭