下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式实时操作系统cos系统因为它具有软件代码小、高度、响应速度快等特点已经使它在许多领域得到广泛的应用。从家里的洗衣机、电冰箱,到作为交通工具的自行车、小汽车,到办公室里的远程会议系统等。嵌入式系统通常由硬件环境和操作系统构成。在嵌入式操作系统的统一调度管理下实现对全部系统资源的合理利用和分配,达到提高系统性能和有效利用有限资源的目的。cos-作为一个源码开放的嵌入式实时操作系统,同时具有良好的可移植性、可裁剪性、可剥夺性、稳定性和牢靠性等优点,使其成为许多嵌入式操作系统的首选。本文将cos-在的8位处理器芯片hc9s08上移植实现。2、cos-系统结构cos-是一个完整的可移植可固化可裁剪
2、的抢占式实时多任务内核。可以在不需要做很大修改的基础上便利的移植到多种处理器上。条件是:该处理器要具有一定数量的堆栈,能够用法软件中断,产生定时器中断,此外,编译器要支持可重入代码,并且要能用法汇编实现对处理器内部寄存器的相关操作。通过cos-的管理,使多个任务之间互相协调,分时的占用cpu,实现充分利用资源和实时等相应的功能。任务通常是一个死循环,用来完成某一特定的功能;一个任务相当于一个线程。cos-可以管理多达64个任务,每个任务都具有一个唯一的合法优先级。但是,优先级最低的那个任务已经被系统定义为空闲任务,用户不能用法。用户可以通过函数ostaskcreate()来创建任务,通过ost
3、askdel()来删除任务。任务可能有以下五种状态:睡眠态、就绪态、运行态、等待状态、中断服务态。利用不同的系统函数可以实现任务在各状态之间的转换。cos-通过对就绪表的操作总是挑选在就绪任务中优先级最高的那个任务开头运行。任务级的调度是由函数ossched()来完成的;而中断级的调度是由osintext()完成的。任务切换的过程分为两步:将被挂起任务的处理器寄存器状态保存在它的任务堆栈中;将将要执行的任务堆栈中保存的寄存器值弹处处理器中,然后执行中断返回命令。这样新的任务就拥有了cpu,开头执行。直到它挂起,或者是被更高优先级的任务中断。cos-就是在对各种任务的切换之间起协调作用的协调者。
4、3、hc9s08的硬件结构每个hcs08 系列的 都是由hcs08 核加上几个存储器以及外设模块组成。hcs08 核主要包括:hcs08 cpu背景调试控制器(bdc)支持多达32个中断/复位源芯片级地址译码hcs08cpu包括和m68hc08相同的寄存器。其中包括一个8位累加器(a),一个可分离存取高8位和低8位的16位变址寄存器(hx),一个16位栈指针(sp),一个16 位程序计数器(pc)和一个状态码寄存器(ccr),该ccr 包含5个处理器状态标记(v,h,n,z 和c)和全局中断屏蔽标记(i)。hcs08核定义的5个主要的存储空间。挺直页寄存器主要包括i/o 端口寄存器和大部分的外
5、设控制和状态寄存器;ram区的地址紧接在挺直页寄存器地址的后面并且向高地址延长,堆栈空间就落在ram中。普通将堆栈的栈顶初始化在ram的高地址部分。和大部分的处理器一样,hcs08的堆栈增长方向是向下的。高地址页寄存器位于$1800到$182b之间,因为这些寄存器比挺直页寄存器的用法频率要少的多,所以它们没有支配在宝贵的挺直页地址空间中;flash存储器分配64k字节的存储空间终于分配到地址$ffff。这一块的起始地址取决于mcu有多少flash存储空间;向量区是flash区的一部分,位于$ffc0-$ffff中,但是它是单独解码的,所以当中断向量取出时别的hcs08模块可以识别出来。4、co
6、s-的移植cos-绝大部分的代码是用ansi c编写的,可移植性好。但是用户在移植时还需要修改相应的几个文件。与应用相关部分需要用户按照自己实际应用的需要举行配置,与处理器相关的部分需要用户按照不同处理器的结构修改相应的代码,以使操作系统能够精确的举行任务的切换等。主要需要修改的函数如下:1.os_cpu.h 它主要包括了用define语句定义的、与处理器相关的常数、宏以及类型。比如:typedef unsigned char int8u、define os_task_grouth 1以及如何处理临界代码段等。2.os_cpu_c.c 在这个文件中要求用户编写10个容易的c函数,但是唯一必需要
7、修改的是ostaskinit();这个函数初始化堆栈,应当根据中断时系统庇护现场的进栈挨次来初始化堆栈结构。对于hcs08系列来说,当中断发生时,依次进栈的是pcl、pch、x、a、和ccr寄存器值。同时为了保证系统的稳定还把额外的一个变址寄存器h进栈,有时还要保存页值。初始化完成后,将栈顶位置sp保存在任务控制块tcb中。3.os_cpu_a.asm 在这个文件中需要修改关键的四个函数。(1)osstarthighrdy() osstart()函数调用它来是就绪任务中优先级最高的任务开头运行。这部分普通要求用户把它转化成汇编语言实现。本文中代码如下:(2)任务级切换函数osctxsw() 主
8、要通过执行软中断或trap来实现在任务级的切换功能。其中中断向量指向osctxsw()函数的入口地址。在ossched()的最后操作系统调用os_task_sw执行软中断或trap命令,该命令找到对应的osctxsw()实现任务的切换。osctxsw()首先要保存当前运行任务的各寄存器状态到自己的堆栈中,并且保存当前栈顶位置;然后找到将要运行的任务,并且把保存该任务堆栈中的寄存器弹到cpu内部寄存器中,执行中断返回命令,这样使cpu从新的任务处执行,直到下一个任务切换的到来。执行代码如下:(3)中断级任务切换函数osintctxsw() 该函数在isr中执行任务的切换功能。因为是在中断中执行的,处理器的大部分寄存器值都已经自动保存在堆栈中了,所以该函数的大部分代码都和osctxsw()相同,只是前半部分保存寄存器的功能不要了。(4)ostickisr()时钟节拍服务函数cos-要求用户提供一个周期性的时钟源,来实现时光的定时和超时功能。这部分功能由该函数实现。这个函数首先保存寄存器的值,然后设置中断标记、清中断,再调用ostimetick()递减延时计数,推断是否要在中断中切换任务,最后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州城市职业学院《绿色体育学》2023-2024学年第一学期期末试卷
- 2025年天津市建筑安全员-B证考试题库附答案
- 2025湖北建筑安全员《B证》考试题库及答案
- 2025黑龙江省建筑安全员B证考试题库附答案
- 贵阳人文科技学院《实验诊断F》2023-2024学年第一学期期末试卷
- 广州珠江职业技术学院《产品形象设计》2023-2024学年第一学期期末试卷
- 2025河南省建筑安全员《B证》考试题库及答案
- 广州新华学院《传热学基础》2023-2024学年第一学期期末试卷
- 广州卫生职业技术学院《插花艺术》2023-2024学年第一学期期末试卷
- 课件《社保业务经办实训》
- 中国专利奖申报要点
- 《中外美术鉴赏》课件西方美术鉴赏导论
- 中小学教师违反职业道德行为处理办法
- 梁平法制图规则及钢筋翻样讲解
- 2024届湖北省武汉实验外国语学校数学七上期末统考模拟试题含解析
- 基于深度学习的网络钓鱼邮件识别技术研究
- 融资成本视角下的船舶融资租赁模式研究
- 感冒中医理论知识课件
- 2023年希望杯数学培训100题-六年级(含答案)
- 个人住房贷款提前还款月供及节省利息EXCEL计算
- 第五单元《圆》教材解析-人教版数学六年级上册
评论
0/150
提交评论