已阅读5页,还剩54页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式微处理器系统及应用 第十三章嵌入式实时操作系统内核硬件相关设计与代码移植 主要内容 1嵌入式实时操作系统内核硬件相关设计2嵌入式操作系统uCOS II的移植 13 1 1嵌入式实时操作系统内核硬件相关内容 任务管理 主要实现任务的激活 结束 调度 以及一些任务信息的获取功能 中断管理 主要实现系统中断的打开和关闭功能 时间管理 主要实现计数器的计数 信息查询等功能 提供软件定时器 在预定时间到达时触发相关的操作 如设置事件 激活任务 进行回调等 资源管理 对系统中的共享资源进行管理 保证资源的互斥使用 主要实现资源的获取 释放等功能 使用互斥信号量是实现资源管理的一种方式 同步信号量 提供任务与任务之间 任务与中断之间的同步机制 13 1 1嵌入式实时操作系统内核硬件相关内容 事件管理 一种通知机制 可以附属于任务实现 不作为一种独立的内核对象 事件管理主要负责实现事件的发送 等待 查询 清除等功能 消息队列 提供消息发送 接收等功能 满足不同任务 中断之间数据通信的需要 如果通信的双方是位于不同的处理器上的任务 则涉及到网络通信 一般不属于操作系统内核的范畴 邮箱 提供单条消息的发送和接收功能 发送者与接收者之间不能形成消息的缓冲队列 执行管理 主要实现操作系统的启动和关闭功能 13 1 1嵌入式实时操作系统内核硬件相关内容 在嵌入式实时操作系统内核的上述功能模块中 与硬件相关的模块主要是任务管理 中断管理 时间管理 具体来说是 任务管理任务上下文 它主要由特定嵌入式微处理器的寄存器构成 内核对任务上下文的主要操作是保存与恢复任务栈的处理 有些操作系统为每一个任务提供单独的堆栈 而堆栈指针也成为上下文的内容之一 因此在对任务进行切换时 也要注意对任务栈的切换处理 中断管理中断的使能和关闭 提供统一的中断使能与关闭操作 这与中断控制器和处理器类型有关中断处理程序 为系统的外部中断请求提供统一的一级中断处理程序 即中断派发程序 这也与中断控制器和处理器类型有关异常处理程序 为系统提供一些典型异常的处理程序 与处理器类型有关操作系统BSP部分目标板初始化中断控制器初始化中断和异常向量初始化显示输出定时器初始化 13 1 2任务管理 任务上下文结构任务上下文是多任务环境下任务的运行环境 主要包括运行地址 栈指针 处理器状态相关寄存器 通用寄存器 浮点寄存器等 PC SP gpr14 gpr31 fpr14 fpr31 13 1 2任务管理 任务上下文的保存与恢复 在任务进行切换时 先保存离开处理器的任务的上下文然后恢复要执行的任务上下文 uCOS操作系统任务上下文切换前的状态 保存即将离去的任务的上下文 恢复即将运行任务的上下文 13 1 3中断管理 抢占式调度下的典型中断处理过程 13 1 3中断管理 中断派发程序负责对所有外部中断进行统一处理 并识别具体产生中断的外部设备 调用相应的第二级中断处理程序即具体设备的用户中断处理程序第一级中断处理程序要求是高效的 因此通常由汇编代码编写第二级的中断处理程序可用C语言编写 用户可集中精力考虑与设备相关的功能性操作 而忽略繁琐的中断上下文处理 与操作系统的关联等 并减少错误的发生 中断派发程序的处理过程保存中断上下文根据中断优先级设置中断屏蔽码进行中断派发处理 具体步骤是 如果中断还未嵌套则对中断嵌套计数器进行加1并且进行栈切换根据中断入口表的地址跳转到用户的中断处理函数对中断嵌套计数器进行减1 如果为零 则恢复原来的栈中断嵌套计数器为零并且需要进行任务切换则进行任务切换恢复中断屏蔽码恢复中断上下文中断返回 13 1 4操作系统相关BSP部分 目标板初始化 主要完成对处理器核的寄存器 目标板内存 时钟 地址映射等的初始化 并且设置系统的初始堆栈 不同的目标板其初始化有所不同 中断控制器初始化 对系统各外部中断的优先级进行设置 中断和异常向量初始化显示输出 完成系统所需要的基本显示输出 如果系统缺乏显示设备 可初始化某种通信端口 比如UART 将信息从此端口输出 定时器初始化 完成操作系统所需要的定时器的初始化 其定时时间的设置应满足应用的需要 主要内容 1嵌入式实时操作系统内核硬件相关设计2嵌入式操作系统uCOS II的移植 13 2嵌入式操作系统uCOS II的移植 uCOS代码结构分析及必要知识介绍 移植的函数结构 BSP层的移植 os cpu a S文件的修改 移植测试 C OS II是一个抢占式实时多任务内核 它是用ANSI的C语言编写的 包含一小部分汇编语言代码 使之可以提供给不同架构的微处理器使用 至今 从8位到64位 C OS II已经在40多种不同架构的微处理器上使用 使用 C OS的领域包括 照相机行业 航空业 医疗器械 网络设备 自动提款机以及工业机器人等 嵌入式实时操作系统 C OS II简介 C OS II全部以源代码的方式提供 大约有5500行 CPU相关的部分使用的是针对Intel80 x86微处理器的代码 C OS II可以很容易地移植到不同架构的嵌入式微处理器上 嵌入式实时操作系统 C OS II简介 C OS II的特点 源代码可移植可固化可裁减可抢占性支持多任务 可确定性任务栈系统服务中断管理稳定性和可靠性 嵌入式实时操作系统 C OS II简介 嵌入式实时操作系统 C OS II简介 C OS II不是自由软件 用于商业目的时须取得许可证 移植平台简介 目标平台 winbondW90P710嵌入式微处理器 基于ARM7TDMI内核 支持三级指令流水 移植的主要工作是修改uCOS底层与处理器相关的代码 改造汇编程序代码时必须采用ARM标准的汇编指令集 开发工具 CoretekSystems公司的嵌入式软件集成交叉开发工具LambdaTOOL 它集成了GCC编译器 在代码规范方面要求符合AT T语法 13 2 1uCOS代码结构分析及必要知识介绍 软件系统结构 核心代码 硬件无关 内核管理 事件管理 邮箱管理 存储管理 互斥管理 队列管理 信号量管理 任务调度和时间管理 配置文件 用来配置uCOS的各种参数 处理器相关代码 移植工作的主要任务 编写改造这些文件以适应不同的处理器体系结构及指令集 将硬件操作加以抽象 封装接口 供应用层调用 13 2 1uCOS代码结构分析及必要知识介绍 BSP层 与uCOS移植相关的BSP包括三个器件 Uart 串口 如果开发板上没有诸如LCD这样的显示器件 可以用串口来打印程序运行时的一些输出信息Timer 时钟 用来产生定时中断AIC 中断控制器 用来处理Timer的时钟中断 以便为uCOS提供时钟节拍 13 2 1uCOS代码结构分析及必要知识介绍 uCOS内核必要知识临界段任务中断处理时钟节拍W90P710必要知识TimerUARTAIC 临界段 代码的临界段也称临界区 指处理时不可分割的代码 一旦这部分代码开始执行 则不允许任何中断的打入 否则 程序就会出现异常 为了保护临界段代码 uCOS是这样处理临界段的 在进入临界段时 须关中断 处理完毕 再开中断 相对应的两个功能函数为 OS ENTER CRITICAL OS EXIT CRITICAL 任务 任务通常是一个无限的循环 有等待 就绪 延时 等待的一种 运行 中断服务等多种状态 任务被赋以一定的优先级 系统总是运行优先级最高的就绪任务 uCOS为了管理任务 为每个任务分配了任务栈 任务控制块等数据结构 当一个任务从就绪状态切换到运行态 抢占了低优先级任务的CPU使用权时 就会发生任务切换 使低优先级的任务挂起 在任务切换时 uCOS就会将被挂起任务的信息 即寄存器的信息 压入到它的任务栈 而将即将进入运行态的任务的信息载入到寄存器中 中断处理 中断一般由三部分组成 保护现场 中断处理 恢复现场 时钟节拍 时钟节拍是特定的周期性中断 在硬件上需要靠Timer提供周期性的信号源 而后和中断处理例程一起配合完成系统时间的计数 以便为uCOS提供定时的依据 与时钟节拍相关的一个uCOS系统函数是OSTimeTick 它跟踪所有任务的定时器和超时时限 为系统记录自打开Timer后的节拍数 Timer Timer的工作方式 一般是先赋予其计数器一个初值 然后打开计数使能位 使计数器自动计数 一旦计数器里的值向下减少到零或者向上增加到某个约定的数值 那么时钟就触发了一次中断 W90P710中的Timer采用的是向下减少到零这种方式 然后计数器重新恢复初值 又开始新一个周期的计数 这样系统就有了周期性的中断信号 两次中断时差的倒数就是时钟节拍的频率 Timer就是这样和中断例程一起配合 完成系统的计时 UART Uart UniversalAsynchronousReceiver Transmitter 是通用异步收发器的简称 一般称之为串口 可以通过它将目标板上的程序执行信息发送出来 供调试观察之用 采用支持格式输出的函数printk将串口相关的驱动函数封装起来 通过调用Uart SendChar来输出字符 而应用只需调用printk就可以了 AIC AIC AdvancedInterruptController 高级中断控制器 类似于X86体系的8529芯片 是W90P710芯片中控制中断的部件 W90P710可以处理多达32个中断源 现在只定义了31种 每个中断源都对应了唯一的中断号 AIC 为了更好地管理中断 还实现了一个8级 0 7 的中断优先级位表 中断号越低 优先级就越高 1号中断 看门狗中断 优先级最高 优先级为0的四个中断触发的是FIQ中断 而其余级别的中断全都属于IRQ中断 13 2 2移植的函数结构 13 2 2移植的函数结构 os cpu a S文件函数与uCOS层交互作用图 移植任务 编写BSP 以支持ucos运行所必要的功能函数接口 主要是串口 时钟和中断 而这需要熟悉W90P710芯片的UART Timer和AIC等部件 完成对它们的驱动 修改uCOS的三个硬件相关文件 os cpu c cos cpu hos cpu a S 13 2 3BSP层的移植 AIC相关函数Aic InitAic Int EnableAic Int DisableAIC Get VectorTimer相关函数Timer InitTimer StartUART相关函数Uart SendChar AIC相关函数 1 在整个中断体系中 有三级控制开关 AIC处于中断体系的第二级 AIC相关函数 2 AIC Init 中断初始化函数 开始一般将31个中断通道都关闭 而后选择要响应设备的中断号 将其打开 因为我们要响应时钟0的中断 所以要打开13号通道 AIC相关函数 3 AIC Int Enable 中断使能函数 接受中断号 打开该中断通道 AIC相关函数 4 AIC Int Disable 和AIC Int Enable函数的作用相反 关闭某个中断通道 AIC相关函数 5 AIC Get Vector 用于从寄存器IPER里读取最高优先级的中断号 然后跳转到相应中断的处理程序 ISR 是对应中断处理函数的函数指针数组 其初始化步骤 Timer相关函数 初始化Timer 选择timer的工作模式 给计数器赋初值 选择合适的分频数 Timer Start UART相关函数 Uart SendChar 13 2 4os cpu a S文件的修改 声明部分 代码段 声明的变量在文件中要引用 但是定义却在其它文件中 声明为全局符号 在别的文件中可以被引用 13 2 4os cpu a S文件的修改 函数实现OSStartHighRdyOSCtxSwOSIntCtxSwOS CPU SR Save和OS CPU SR RestoreCPSR Init ISR Handler OSStartHighRdy 由函数OSStart调用的 用于将就绪的最高优先级任务置为运行态 OSCtxSw 完成任务级的任务切换 将被置换任务的信息压入它的任务栈 而把要运行任务的信息从任务栈加载到ARM寄存器组中 OSCtxSw 续 OSIntCtxSw 在中断处理后 恢复现场前需要调用OSIntExit来判断是否在中断处理中使更高优先级的任务就绪了 从而恢复高优先级而非被中断任务的信息 OSIntExit通过调用OSIntCtxSw来完成高优先级任务的恢复 由于在中断处理前已经保存了现场 所以OSIntCtxSw就无须保存现场信息了 OSIntCtxSw OS CPU SR Save和OS CPU SR Restore 用来关闭和打开中断它们和OS ENTER CRITICAL OS EXIT CRITICAL 的关系 CPSR Init 由于任务一开始运行就在寄存器级将中断屏蔽 需要由一个汇编级的函数将中断打开 这样启动时钟之后 才能进入中断服务程序 ISR Handler 该函数的名称是由编译器决定的 在本移植项目中主要是处理时钟节拍 相当于OSTickISR 改成这个名字是考虑到编译器的需要 异常向量表 在vectors S文件中定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 32151.54-2025温室气体排放核算与报告要求第54部分:工业硫酸企业
- 2025年方剂学祛痰剂专项真题及答案
- 2025年跨行业合作创新平台项目可行性研究报告及总结分析
- 2025年车载智能导航系统可行性研究报告及总结分析
- 2025年创新型饮品品牌市场拓展项目可行性研究报告及总结分析
- 2025年企业礼品书画装裱协议
- 2025年旅游导览智能终端开发项目可行性研究报告及总结分析
- 2025年企业办公设备采购合同协议
- 火电厂电量营销岗位竞聘笔试题(带答案)
- 2022~2023高处作业考试题库及答案参考89
- 2025中国电信股份有限公司重庆分公司社会成熟人才招聘考试笔试备考试题及答案解析
- 焦虑障碍的护理
- 2024年健康管理师职业技能等级认定中级实操考试(三)(含答案解析)
- 2025年广东省春季高考(学考)英语真题(试题+答案)
- 江西国控集团控股企业招聘笔试题库2025
- 供电所综合柜员培训
- 树木买卖砍伐协议书
- 2025研发投入绩效评估体系构建及企业创新激励机制规划
- 恶性黑色素瘤教学课件
- 钻孔灌注桩监理平行检查表(汇编)
- 2022年上海杨浦投资控股(集团)有限公司招聘笔试试题及答案解析
评论
0/150
提交评论