μCOS-Ⅱ在 STM32 中的移植
摘 要
近些年来,数字化技术高速发展,嵌入式产品已经出现在我们生活中 的方方面面。嵌入式操作系统又作为嵌入产品的基石,在产业发展过程中 扮演了越来越不可替代的角色。本文主要研究了嵌入式操作系统中应用较 为广泛的、源代码开放的μC/OS-II 在 STM32 芯片上的移植。
本文首先分析了μC/OS-II 实时系统的内核结构,介绍了μC/OS-II 的 中的任务、事件等基本概念以及μC/OS-II 对任务和事件的基本操作。随后 介绍了本次移植用到的 STM32F103 系列微处理器并简要描述了该微处理器 内核 Cortex-M3 的结构和编程模型以及部分本次移植用到的 STM32F013 系 列微处理器的外设。然后在此基础上分析了μC/OS-II 在 STM32F103 系列 芯片上的移植,并详细地介绍了μC/OS-II 需要移植的各个部分代码的结构 及其编写。最后,在 IAR 编译环境下,应用 STM32F103 微处理器芯片上的 部分外设,实现串口通信、CAN 总线回环测试、流水灯、LCD 显示任务, 这些任务在系统的调度下自动切换、不断地运行。这些代码都在万利 EK- STM32 和 DK-STM32 开发板上完成了测试工作。测试所得到的现象就是串 口在不断发送和接收、LED 在不停地闪烁、CAN 回环测试时刻在运行、 LCD 上显示的内容则根据这些任务运行的信息一直在更新。这些也就反应 了μC/OS-II 的多任务特性,因而也证明了此次移植是成功的。 关键词:μC/OS-II 移植;STM32;串行通讯;CAN 总线
目 录
摘 要..................................................................................................................... I Abstract ..................................................................................................................II
1. 绪论 ................................................................................................................. 1
1.1. 引言 ....................................................................................................... 1
1.2. 课题背景,研究目的和意义 ............................................................... 1
1.2.1. 课题背景.................................................................................... 1
1.2.2. 研究目的和意义........................................................................ 2
1.3. μC/OS-II 的移植概述 ........................................................................... 2
1.3.1. μC/OS-II 的内核结构................................................................ 2
1.3.2. STM32 系列微处理器简单介绍............................................... 4
1.4. 国内外在该方向的研究现状及分析 ................................................... 4
1.5. 本文主要研究的内容 ........................................................................... 5
1.6. 本论文结构 ........................................................................................... 6
1.7. 本章小结 ............................................................................................... 6
2. RTOS 概念和 μC/OS-II 内核结构简要分析 ................................................ 7
2.1. RTOS ..................................................................................................... 7
2.1.1. 实时系统的特点........................................................................ 7
2.1.2. 实时任务一般都是由外部事件激活的.................................... 7
2.2. 实时操作系统的特点 ........................................................................... 7
2.3. 实时系统 μC/OS-II 的分析 .................................................................. 8
2.3.1. μC/OS-II 的任务结构................................................................ 8
2.3.2. μC/OS-II 任务的管理.............................................................. 12
2.3.3. 任务的调度.............................................................................. 13
2.3.4. 任务的初始化和启动.............................................................. 13
2.3.5. 中断和时钟.............................................................................. 13
2.3.6. 任务间的通信.......................................................................... 13
2.3.7. μC/OS-II 对内存的管理.......................................................... 14
2.4. 本章小结 ............................................................................................. 14
3. STM32F103 系列微处理器简介 .................................................................... 15
3.1. Cortex-M3 内核简介 .......................................................................... 15
3.2. Cortex-M3 内核编程模型 .................................................................. 15
3.3. STM32F103 系列处理器介绍............................................................ 16
3.4. 本章小结 ............................................................................................. 17
4. 在 STM32F103 系列处理器上的移植 ........................................................... 18
4.1. 内核头文件(OS_CPU.H) .............................................................. 18
4.1.1. 定义与处理器无关的数据类型.............................................. 18
4.1.2. 临界代码段.............................................................................. 18
4.1.3. 栈的增长方向.......................................................................... 19
4.1.4. 任务级任务切换...................................................................... 19
4.1.5. 其他函数声明.......................................................................... 19
4.2. 与处理器相关的汇编代码(OS_CPU_A.ASM)............................ 19
4.2.1. 关中断函数(OS_CPU_SR_Save()).................................... 20
4.2.2. 恢复中断函数(OS_CPU_SR_Restore()) ........................... 20
4.2.3. 启动最高优先级任务运行(OSStartHighRdy())................ 20
4.2.4. 任务级和中断级任务切换...................................................... 20
4.3. 与 CPU 相关的 C 函数和钩子函数(OS_CPU_C.C).................... 21
4.4. 本章小结 ............................................................................................. 22
5. 在万利 EK-STM32 开发板上实现 ................................................................. 23
5.1. 万利 EK-STM32 开发板概述 ............................................................ 23
5.2. STM32F103 系列微处理器串行通信接口配置介绍........................ 25
5.3. 在万利开发板上实现串口通信及其他任务 ..................................... 26
5.4. 本章小结 ............................................................................................. 31
6. 在万利 DK-STM32 开发板上实现 ................................................................. 32
6.1. 万利 DK-STM32 介绍........................................................................ 32
6.2. bxCAN 单元介绍................................................................................ 33
6.3. 在万利 DK-STM32 开发板上实现.................................................... 33
6.4. 本章小结 ............................................................................................. 35 结论...................................................................................................................... 36 致谢...................................................................................................................... 37 参考文献.............................................................................................................. 38
参考文献
1 罗蕾,《嵌入式实时系统及其应用开发》,第 2 版,北京航空航天大学 出版社,2007。
2 任哲,《嵌入式实时操作系统原理及其应用》,北京航空航天大学出版 社,2006。
3 ST ,Welcome to the world of STM32 ,2007:1-8。
4 刘丙成,“μC/OS-II 内核分析及其平台的构建”,内蒙古工业大学硕 士学位论文,2005。
5 任哲、潘树林、房红 ,《嵌入式实时操作系统基础μ C/OS-II 和
uClinux》,北京航空航天大学出版社,2006。
6 百度百科——实时操作系统,http://baike.baidu.com/view/18308.htm
7 Jean J Labrosse,《嵌入式实时操作系统μCOS-II》,邵贝贝译,第 2
版,北京航空航天大学大学出版社,2003。
8 周立功单片机公司翻译,《Cortex-M3 技术参考手册》,2007。
9 宋岩译,《Cortex-M3 权威指南》,2008:25-35。
http://www.bysj360.com/
http://www.bylw520.net/html/4408.html http://www.bylw520.net/html/4416.html http://www.bylw520.net/html/4406.html http://www.bylw520.net/html/4398.html