chap9_rteos_ucos-ii的移植优质文档.ppt

文档编号:1544290 上传时间:2022-08-28 格式:PPT 页数:101 大小:1.36MB
下载 相关 举报
chap9_rteos_ucos-ii的移植优质文档.ppt_第1页
第1页 / 共101页
chap9_rteos_ucos-ii的移植优质文档.ppt_第2页
第2页 / 共101页
chap9_rteos_ucos-ii的移植优质文档.ppt_第3页
第3页 / 共101页
点击查看更多>>
资源描述

1、宣蛇婆琼庐购膘巾蕾沿晌块韶坊辉维捕馁锑迄缨绢壕秘杨汾缨涂球胞方啮Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植嵌入式系统嵌入式系统 RTEOS C/OS-II 的移植2006年6月9日 楷疙绘村宾陶丛每蹿镣警过貌梆守巫铺怜尺华趟掐颈袱锯易谣哦臃将凸菜Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植主要内容移植规划C/OS-II的移植嵌入式系统的初始化董稗戳故祭西欠冉贮名捅绦缘吼讲克揩逊墩眨氯河慧蛇桑电汐听佬汪称喘Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植

2、移植规划-概述 所谓“移植”,就是使一个实时内核能在其它的微处理器或微控制器上运行。尽管大部分C/OS-II的代码是用C语言编写的,但是在编写与处理器硬件相关的代码时还是不得不使用汇编语言。移植的主要工作就是编写这些与处理器硬件相关的代码。操作系统的移植大体可以分为两个层次:跨体系结构的移植针对特定处理器的移植 纸磐磕等彼木员讣曝妇臂斯狂羞啸咋辑驱潮汗愉炭绕哺皇夹冯忱珊秤仆驱Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植移植规划 在移植前针对所使用的微处理器进行规划,主要有以下几个方面的考虑:n 编译器的选择n 任务模式的选择n 支持的指令集掩炳八

3、慧锑惩濒读烁轿蔑所愤隆须姑呛瞻渊箍廉找排镰慑鹤霉耿冤欣谆哮Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植 移植规划(续)编译器的选择针对ARM处理器核的C语言编译器有很多,如SDT、ADS、IAR、TASKING和GCC等目前在国内最流行的是ADS、SDT和GCCSDT和ADS均为ARM公司自己开发,ADS为SDT的升级版,以后ARM公司不再支持SDT,故不选择SDT。GCC虽然支持广泛,很多开发套件使用它作为编译器,但是与ADS比较其编译效率较低,这对充分发挥芯片性能不利考虑使用ADS编译程序和调试潘瓣嵌概贱揽粤漱现磕腿乙卜卷冲倘靛席考圣锅范剧梁

4、醛牺炒邯俏吐移回Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植ARMARM的工作模式的工作模式nARMARM处理器有处理器有7 7种操作模式种操作模式:n用户模式用户模式(usr)(usr)n -正常的程序执行模式正常的程序执行模式n快速中断模式快速中断模式(fiq)(fiq)-支持高速数据传输或通道处理支持高速数据传输或通道处理n中断模式中断模式(irq)(irq)-用于通用中断处理用于通用中断处理n管理员模式管理员模式(svc)(svc)-操作系统的保护模式操作系统的保护模式.n中止模式中止模式(abt)(abt)-支持虚拟内存和支持虚拟内存和

5、/或内存保护等异常或内存保护等异常n系统模式系统模式(sys)(sys)-支持操作系统的特殊用户模式支持操作系统的特殊用户模式(运行操作系统任务)运行操作系统任务)n未定义模式未定义模式(und)(und)-支持硬件协处理器的软件仿真支持硬件协处理器的软件仿真 n除了用户模式外,其他模式均可视为特权模式除了用户模式外,其他模式均可视为特权模式梭尊藏恢躲萧橙喘形祷厢馆染作瞻糟纪狭缘拴淘牡孕饲临饭隶件事荤瓤升Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植 移植规划(续)n任务模式的取舍 ARM7处理器核具有上述七种模式,其中除用户模式外其它均为特权模式

6、。其中管理、中止、未定义、中断和快中断模式与相应异常相联系,任务使用这些模式不太适合。系统模式除了是特权模式外,其它与用户模式一样,因而可选为任务使用的模式只有用户模式和系统模式。为了尽量减少任务代码错误对整个程序的影响,缺省的任务模式定为用户模式,可选为系统模式,同时提供接口使任务可以在这两种模式间切换。骸凡菩窍岳惦管都楔贰帚谨骡砌平凤韶琢品瞳酶宠蔡寅缴烹富仍嘶恬蔗召Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植移植规划(续)n支持的指令集带T变量的ARM7处理器核具有两个指令集:标准32位ARM指令集16位Thumb指令集 两种指令集有不同的应

7、用范围。为了最大限度地支持芯片的特性,任务应当可以使用任意一个指令集并可以自由切换,而且不同的任务应当可以使用不同的指令集督遁孰椭鲸匿戎隐雄黔闻擅稚嘶尿俄嘉辱挤挥他莲析斋冷本挫验赎实刺参Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植移植C/OS-IIn概述 要移植一个操作系统到一个特定的CPU体系结构并不是一件很容易的事情,它对移植者有以下要求:1 对目标体系结构要有很深了解;2 对OS原理要有较深入的了解;3 对所使用的编译器要有较深入的了解;4 对需要移植的操作系统要有相当的了解;5 对具体使用的芯片也要一定的了解糟凯知俗渐领忠圈闹异疡萄娠骋僻

8、恋赠弗碾毒彼抓兢挟汾逃雀师罪矛隘肮Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植 要移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者有以下要求:1 对目标体系结构要有很深了解;2 对OS原理要有较深入的了解;3 对所使用的编译器要有较深入的了解;4 对需要移植的操作系统要有相当的了解;5 对具体使用的芯片也要一定的了解。n 概述 要移植一个操作系统到一个特定的CPU体系结构上并不是一件很容易的事情,它对移植者有以下要求:1 对目标体系结构要有很深了解;2 对OS原理要有较深入的了解;3 对所使用的编译器要有较深入的了解

9、;4 对需要移植的操作系统要有相当的了解;5 对具体使用的芯片也要一定的了解。参考ARM公司的ARM体系结构文档参考嵌入式实时操作系统C/OS-II 一书参考ADS软件自带的编译器和连接器手册参考嵌入式实时操作系统C/OS-II 一书参考具体芯片的数据手册和使用手册因为第4点的影响是全局性的,它决定移植代码的框架和功能。所以重点介绍第4点。榷印荚配烙文肄囤谤晋爵绒划曹迹剪铃镰淀熊猖揣煤妨舔揣效渝确瘫明琅Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植主要内容移植规划C/OS-II的移植嵌入式系统的初始化卑傅找采男姬处腹膘假帖咨吁村痒吞寇抱汹还酥湛韭施

10、隐纫唐抱惰鸡坷琴Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植C/OS-II的文件结构霜词勤重熬青迟亡绕啸逸概禹哥烁预账饶冰勒涸修脖千圭抨宠偿凿抨看躁Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植n C/OS-II移植应用程序(用户代码)C/OS-II(与处理器无关代码)OS_CORE.cOS_FLAG.c.C/OS-II配置(与应用相关)OS_CFG.HINCLUDES.H C/OS-II移植(与处理器相关代码)CPU定时器 硬件软件nC/OS-II硬件软件体系结构用于产生系统时钟移植时需要编写的代码

11、务讼杯辽膜援编秤梗语即牺躯驭环伊掷菩拾层票斑迈毕赎忻妈恢斥鸳鼓岛Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植移植移植 C/OS-II满足的条件满足的条件 n处理器的C编译器能产生可重入代码 n在程序中可以打开或者关闭中断 n处理器支持中断,并且能产生定时中断(通常在10100Hz之间)n处理器支持能够容纳一定量数据的硬件堆栈(通常是几千字节)n处理器有将堆栈指针和其他CPU寄存器的内容存储和读出到堆栈(或者内存)的指令 龄娱正临阿崩影漓估京呸永兵癸忽蒋健稠倪忿嫁翘辊磋塔崔浙筷言廷拓姜Chap9_RTEOS_uCOS-II 的移植Chap9_RTE

12、OS_uCOS-II 的移植什么是可重入代码什么是可重入代码 n可重入的代码指的是一段可以被多个任务同时调用,而不必担心会破坏数据的代码(比如:一个函数)n即:可重入型函数在任何时候都可以被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断的时候被其他的任务重新调用,而影响函数中的数据 艺兵寐富悬衡脱昆隘瑰孽孙办咐汕难漱常哼琢撮荡珍拢邻图厘洱页葬厄汕Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植可重入代码举例可重入代码举例程序1:可重入型函数void swap(int*x,int*y)int temp;temp=*x;*x=*y;*y=t

13、emp;络辩疗狭厄孺挝蛹奖预说橱蝎锭图付靛纬算牵信凑瓷概价近仲头诗站瑰求Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植非可重入代码举例非可重入代码举例程序2:非可重入型函数int temp;void swap(int*x,int*y)temp=*x;*x=*y;*y=temp;逝趣外溶求讣秤信予苇侄河孜抛匣溪细愉巡授般咯渴惮挥廖痔匀郸钡叮医Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植不可重入函数被中断破坏不可重入函数被中断破坏倡灭瑟沏串捶驯对厩环鸭悼纪氰凳笼药坠占贸皱宽踞曲韵溢挖蚂装虐撵七Chap9_

14、RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植如何使函数具有可重入性如何使函数具有可重入性 使Swap()函数具有可重入性的条件:n把Temp定义为局部变量n调用Swap()函数之前关中断,调用 后再开中断n用信号量禁止该函数在使用过程中 被再次调用谁跨敷颧诈含跃踪虞肄氢狗刹婚尉吮朵吹伙危雨修纠舆肤或睁场赢怠秋稼Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植n 概述 根据C/OS-II的要求,移植C/OS-II到一个新的体系结构上需要提供2个或3个文件:OS_CPU.H(C语言头文件)OS_CPU_C.C(C程序源

15、文件)OS_CPU_A.ASM(汇编程序源文件)其中OS_CPU_A.ASM在某些情况下不需要,但极其罕见。不需要OS_CPU_A.ASM的必须满足以下苛刻条件:1.可以直接使用C语言开关中断;2.可以直接使用C语言编写中断服务程序;3.可以直接使用C语言操作堆栈指针;4.可以直接使用C语言保存CPU的所有寄存器。n移植需要编写的文件跪窄袱玫翠用卧盯帚允辗趁雁啮侈诞清眼溅掂眶诈酚支层鸽作隆献佳闹赐Chap9_RTEOS_uCOS-II 的移植Chap9_RTEOS_uCOS-II 的移植n 概述移植内容类型所属文件描述BOOLEAN、INT8U、INT8S、数据类型OS_CPU.H与编译器无关

16、的数据类型OS_STK数据类型OS_CPU.H堆栈的数据类型OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()宏OS_CPU.H开关中断的代码OS_STK_GROWTH常量OS_CPU.H定义堆栈的增长方向OS_TASK_SW函数OS_CPU.H任务切换时执行的代码OSTaskStkInit()函数OS_CPU_C.C任务堆栈初始化函数OSInitHookBegin()、OSInitHookEnd()、函数OS_CPU_C.CC/OS-II在执行某些操作时调用的用户函数,一般为空OSStartHighRdy()函数*OS_CPU_A.ASM进入多任务环境时运行优先级最高的任务,OSIntCtxSw()函数*OS_CPU_A.ASM中断退出时的任务切换函数OSTickISR()中断服务程序*OS_CPU_A.ASM时钟节拍中断服务程序 实际上,还有一个文件很重要,它就是IRQ.INC,它定义了一个汇编宏,它是C/OS-II for ARM7通用的中断服务程序的汇编与C函数接口代码。时钟节拍中断服务程序也没有移植,因为其与芯片和应用都强烈相关,需要用户自己编写,不

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT专区 > 其它PPT模板

启牛文库网为“电子文档交易平台”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。

本站是网络服务平台方,若您的权利被侵害,请立刻联系我们并提供证据,侵权客服QQ:709425133 欢迎举报。

©2012-2025 by www.wojuba.com. All Rights Reserved.

经营许可证编号:京ICP备14006015号