哈尔滨工业大学本科毕业设计(论文)
- -
I
μC/OS-Ⅱ在 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 总线
哈尔滨工业大学本科毕业设计(论文)
- -
II
μC/OS-Ⅱ PORTED TO STM32
Abstract
Nowadays with the rapid development of digital technology, embedded
products have appeared in every aspect of our lives. Embedded operating system,
which is the basis of embedded products, plays an increasingly irreplaceable role.
In this paper, an embedded operating system,μC/OS-II, which is open
source and widely used will be introduced, and then the presentation of the port
of μC/OS-II to chip STM32F103 will be shown.
This paper at first analyzes the structure of the kernel of the real-time system,
μC/OS-II and then introduces some basic concept of μ C/OS-II such as
task ,event etc.,and the operation of them . After this, the microprocessor
STM 32F103 serials, and its peripherals, which are used in the port experiment,
will be described, and the structure and programmer‘s model of its Cortex–M3
kernel will be introduced briefly too. Then on this basis, introduce the port of
μC/OS-II in STM32F103 serial chips; the part of CPU-related code which needs
to be modified will be described at length. Finally, in IAR environment and with
the application of parts of STM32F103 peripherals, the tasks of UART, CAN
loopback, led flicker and LCD display will be realized. These tasks are scheduled
by the OS automatically and running all the time .what’s more, the code has
passed test on Manley’s ED(DK)-STM32 board. From the phenomena we can see
that UART transferring and receiving uninterruptedly, the LEDs are flickering
without stop, the task of CAN loopback running all the time and LCD display
updating all the while. All of these reflects the feature of multi-task aboutμ
C/OS-II, and they also prove that the port is successful.
Keywords:μC/OS–II port, STM32, UART, CAN bus
哈尔滨工业大学本科毕业设计(论文)
- -
III
目 录
摘 要..................................................................................................................... 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
哈尔滨工业大学本科毕业设计(论文)
- -
IV
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
1. 绪论
1.1. 引言
电子计算机,毫无疑问是人类目前最伟大的发明之一。从 1946 年宾夕
法尼亚大学研制成第一台电子计算机开始,计算机就从未停止向前发展的
步伐。而现在所处的 21 世纪,也就是“后 PC”时代,计算机信息技术已
经无处不在。而这无处不在的计算机产品就是嵌入式计算机。据统计,包
括传统的通用计算机和嵌入式计算机在内 95%的计算机为嵌入式计算机。
信息大爆炸时代的到来,给我们带来越来多的便利和享受。同时,我们也
面临越来越多的挑战,其中之一就是嵌入式产品正变得越来越复杂,并且
其复杂程度依然在增加,面临难以控制的局面。因此对嵌入式系统的研究
非常迫切也很有必要
[1]
。
1.2. 课题背景,研究目的和意义
1.2.1. 课题背景
嵌入式技术产业是各种嵌入式系统产品的技术基础。它包括嵌入式IC
设计产业(含嵌入式微处理器和SOC设计)、嵌入式操作系统及嵌入式软件
中间件行业,MEMS技术和智能传感器技术行业、嵌入式IP咨询服务和开发
行业等。嵌入式系统产业是建立在行业需求基础上的,基于系统结构设
计、功能设计和工程设计的产业。嵌入式系统产业分散到各个具体应用行
业,嵌入式系统产品是以该行业系统和标准为基础,以适用的嵌入式技术
为核心并结合应用软件和系统集成开发为特征。与传统的通用计算机系统
不同,嵌入式系统针对特定应用领域,根据应用需求定制开发,并随着智
能化(数字化)产品的普遍需求渗透到日常生活中的各行各业。嵌入式软
件已成为产品的数字化改造、智能化增值的关键性、带动性技术。而嵌入
式软件又是以嵌入式操作系统为基础的。
近十年来嵌入式操作系统(RTOS)得到了飞速发展,各种流行的微
处理器(MCU)8位、16位和32位均可以很容易的得到多种嵌入式实时系统
(专业化公司有美国WinCE,WindRiver等,自由软件有μC/OS-II及uClinux
等等)的支持。8位、16位MCU以面向硬实时控制为主,32位以面向手机和
信息处理和多媒体处理为主,在这些方面Linux正逐渐成为嵌入式操作系统
的主流。嵌入式实时操作系统不仅具有微型化、高实时性等基本特征,而
且还将向高可靠性、自适应性、支持多CPU核、构件组件化的方向发展。
客观世界对嵌入式智能化、装置轻、低功耗、高可靠性的永无止境的要
求,使得近千种嵌入式微处理体系结构和几十种实时多任务操作系统并存
于世。嵌入式技术也将与时俱进,不断创新。