新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 在CodeWarrior编译环境下运行μC/OS―III

在CodeWarrior编译环境下运行μC/OS―III

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

摘要:;;II是面向8/16位及低端32位单片机应用的RTOS,而新近推出的;;Ⅲ则面向高性能32位单片机,如ARM Cortex等。以Cortex—M4为内核的Kinetis系列单片机,不仅用于全国大学生飞思卡尔杯智能车竞赛,也用于诸多大学的嵌入式系统教学,官方提供的开发环境是CodeWarrior。本文介绍如何利用CodeWarrior开发环境,将;;在Kinetis单片机上运行起来,以便将μC/OS—引入教学、科研与应用。
关键词:μC/OS—

引言
Kinetis系列是飞思卡尔公司基于ARM Cortex—M4和Cortex—M0+内核的单片机,和Cortex—M3相比,M4内核主要增加了DSP运算指令和可选的浮点运算单元,同时保持了与Cortex—M3的兼容性,因此被寄予希望能逐步替代Cortex—M3。Kinetis也成为飞恿卡尔杯全国大学生智能车竞赛新的硬件平台之一。
μC/OS—Ⅲ是Micrium公司推出的全新RTOS,特别适用于那些有计算前导零(CLZ)硬件指令的高端32位CPU,可大大加速就绪表查找速度μC/OS—II的主要精华在于其巧妙的优先级软件查表算法,而对于有CLZ硬件算法指令的CPU,如MIPS、PowerPC、ARM11及以上系列,仍使用μC/OS一Ⅱ就不那么合理了。μC/OS—III源代码公开,官方已提供对目前主流单片机的移植支持,并且针对几大主流单片机都提供相应的教材,Kinetis就是其中之一。Micrium官方提供的基于Kinetis平台的范例都是使用IAR作为集成开发环境的,考虑到飞思卡尔官方的Code Warrior开发环境有着广泛的用户群,尤其是使用过S08/S12等单片机的用户,大多熟悉CodeWarrior。因此,本文将以Kinetis平台为例,讲述如何使用CodeWarrior集成开发环境将μOS—III运行起来,作为应用开发的基础,也便于那些教学中使用CodeWarrior编译器的师生,将μC/OS—Ⅲ引入嵌入式系统教学。

1 CodeWarrior集成开发环境
Kinetis包括K,X、L三大系列,K和X系列是基于Cortex—M4内核,而L系列是基于Cortex—M0+内核。K系列又包括K10~K70多个子系列,不同系列侧重点不同,如K10是基准系列,K20带USB,K60带以太网。因为内核一样,只是外设不同,因此μC/OS—III的移植都是通用的。本文以清华大学飞恩卡尔培训中心为全国大学生智能车竞赛提供的K10开发套件为例进行说明。
针对Kinetis的CodeWarrior软件版本为V10.x,可从官方网站下载免费教学版本。新版的CodeWarrior基予Eclipse开发环境,支持S08/S12/ColdFire/Kinetis等系列单片机。本文使用的CodeWarrior版本为V10.2Special Edition。
最新版本的μC/OS—III源代码可从Micrium公司官方网站下载,网站上的“Source code”栏目提供的只是内核的源代码,不包括移植部分,也没有相关的范例,而“μC/OS—III Books”栏目里可下载针对不同单片机的电子版教材及配套的范例工程。本文使用官方为Kinetis提供的IAR环境下的工程范例为参考。

2 μC/OS-Ⅲ的目录结构
μC/OS—III的代码组织中,除了内核相关的代码文件外,还有两个独立的组件——μC/CPU和μC/LIB。μC/CPU用来封装一个CPU的属性,定义了与编译器和CPU相关的数据类型、寄存器的位宽、大小端格式、堆栈的增长方式、开关中断的函数等等。换句话说,也就是把原来
μC/OS里的一些CPU硬件相关的定义和函数独立成为一个组件,这样,代码的结构就更加清晰。而μC/LIB是一个基础的函数库,不依赖于任何的处理器和编译器,主要包括一些字符串处理函数、数学相关函数,以及内存管理相关的函数。μC/OS—III依赖于μC/CPU和μC/LIB,
因此工程中必须包括μC/CPU和μC/LIB的相关文件才能完成编译。
图1展示了一个典型工程的文件结构。其中,μC/OS—III、μC/CPU、μC/LIB和配置文件部分都是必须的,加粗斜体的文件表示是需要移植的。lib_mem_a.asm文件是用汇编语言编写的优化的内存分配函数,可以不要(lib_cfg.h里的宏LIB_MEM_CFG_OPTIMIZE_ASM_EN要设置为0)。配置相关的头文件必需的有4个,其中,μC/OS—III、μC/CPU和μC/LIB三个组件各有一个对应的配置文件,还有一个是os_cfg_ app.h。os_cfg.h和os_cfg_app.h都是μC/OS—Ⅲ相关的配置文件,前者主要是功能的配置,如是否使用信号量、是否使用时间片轮转调度、是否进行参数检查等等;后者主要是内核资源的配置,如空闲任务、时钟节拍任务的堆栈大小、信号量、消息队列等内核资源的数量等。“板级支持包”和“用户程序”里列出的文件并不是必需的,只是一个范例。板级支持包用来定义与开发板硬件相关的功能函数,如硬件韧始化函数、I/O操作函数、串口服务函数等等。使用板级支持包可以使代码结构更清晰,方便代码共享。

本文引用地址:http://www.eepw.com.cn/article/170659.htm

a.JPG


从Micrium网站下载针对Kinetis的教材配套的范例工程压缩包,解压后目录结构如图2所示。Micrium公司的代码组织结构非常清晰,对于程序开发人员来说是一个很好的参考。其中,uCOS-III、uC—CPU、uC—LIB三个文件夹下分别包含了该模块对应的代码,底下各有一个Cfg文件夹,里面包括了该模块配置头文件的模板。而移植相关的部分代码文件都是按“CPU\编译器”的目录结构来组织,如uC—CPU下的ARM—Cortex—M4\IAR。EvalBoards文件夹是范例工程所在,按照“开发板\编译器”的结构组织。

51单片机相关文章:51单片机教程



上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭