实时操作系统μc-os

实时操作系统μc-os

ID:10694236

大小:60.00 KB

页数:5页

时间:2018-07-07

实时操作系统μc-os_第1页
实时操作系统μc-os_第2页
实时操作系统μc-os_第3页
实时操作系统μc-os_第4页
实时操作系统μc-os_第5页
资源描述:

《实时操作系统μc-os》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、实时操作系统μC/OS作为一个实时内核,μC/OS从1992年开始为人们熟悉,到现在已经发展为μC/OS-II。ΜC/OS-II最多支持56个任务,其内核为占先式,总是执行就绪态的优先级最高的任务,并支持Semaphore(信号量)、Mailbox(邮箱)、MessageQueue(消息队列)等多种常用的进程间通信机制。与大多商用RTOS不同的是,μC/OS-II公开所有的源代码,并可以获得,对商业应用收取少量License费用。一般商用操作系统如VxCF5272是Motorola公司一款集成度最高的ColdFire处理器,采用ColdFire

2、V2可变长RISC处理器核心和DigitalDNA技术,在66MHz时钟下能够达到63Dhrystone2.1MIPS。其内部SIM(SystemIntegratedModule)单元集成了丰富的通用模块,如10/100MHz快速以太网控制器,USB1.1接口等,并且能够与常用的外围设备(如SDRAM、ISDN收发器)实现无缝连接,从而简化了外围电路设计,降低了产品成本、体积和功耗。使用GNU工具链(包括交*编译器GCC、汇编器AS等)进行μC/OS-II内核的编译,Host(宿主机)环境为16MBSDRAM。在宿主机上编译出MCF5272处理

3、器的可执行代码,通过MCF5272的BDM调试工具下载到目标板调试运行。1μC/OS-II系统结构图1说明了μC/OS-II的软硬件体系结构。应用程序处于整个系统的顶层,每个任务都可以认为自己独占了CPU,因而可以设计成为一个无限循环。μC/OS-II处理器无关的代码提供μC/OS-II的系统服务,应用程序可以使用这些API函数进行内存管理、任务间通信以及创建、删除任务等。大部分的μC/OS-II代码是使用ANSIC语言书写的,因此μC/OS-II的可移植性较好。尽管如此,仍然需要使用C和汇编语言写一些处理器相关的代码。μC/OS-II的移植需

4、要满足以下要求:(1)处理器的C编译器可以产生可重入代码;(2)可以使用C调用进入和退出CriticalCode(临界区代码);(3)处理器必须支持硬件中断,并且需要一个定时中断源;(4)处理器需要能够容纳一定数据的硬件堆栈;(5)处理器需要有能够在CPU寄存器与内存和堆栈交换数据的指令。移值μC/OS-II的主要工作就是处理器和编译器相关代码以及BSP的编写。2μC/OS-IIDSP编写BSP(板级支持包)是介于底层硬件和操作系统之间的软件层次,它完成系统上电后最初的硬件和软件初始化,并对底层硬件进行封装,使得操作系统不再面对具体的操作。为μ

5、C/OS-II编写一个简单的BSP。它首先设置CPU内部寄存器和系统堆栈,并初始化堆栈指针,建立程序的运行和调用环境;然后可以方便地使用C语言设置MCF5272片选地址(CS0~CS7)、GPIO以及SDRAM控制器,初始化串口(UART0)作为默认打印口,并向操作系统提供一些硬件相关例程和函数如dprintf(),以方便调试;在CPU、板级和程序自身初始化完成后,就可以把CPU的控制权交给操作系统了。MCF5272处理器将系统上电作为2号异常,因此需要在异常矢量表中相应位置填写第一条命令的物理地址,这可以在编译时自动完成。该矢量表必须存放在C

6、S0对应的FLASH中供CPU上电时自动读取。如:_vectors://矢量表起始地址.long0x0,_start,_fault,_fault,…//初始化1K字节矢量表……_start:nop//第一条指令move.ove.1#_vectors,%d0move.c%d0,%VBR//#vectors->VBRmove.1#0x10000001,%d0move.c%d0,%MBAR//SIM单元基地址0x10000000move.1#0x20000001,%a0//SRAM起始地址0x20000000move.c%a0,%RAMBAR0

7、//初始化内部SRAMmove.1#0x20001001,%a7//设置堆栈指针……jsrcpu_init//调用cpu_init初始化SIM单元jsrucos_start//启动μC/OS-II……其中,cpu_init函数用于初始化CPU内部SIM单元、SDRAM控制器、UART串口。值得注意的是SDRAM初始化,不同生产商的SDRAM的初始化时序有一定差异。BSP在完成片级和板级初始化后,还负责初始化程序自身,如将.data段的内容从只读的ROM复制到SDRAM中,建立运行时环境。以下是建立程序数据段的代码:memcpy(_sdata,_

8、etext,(_edata-_sdata));//拷贝.data段memset(_sbss,0,(_ebss-_sbss));//将.bss段清零还需

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。