实时嵌入式操作系统μC/OS—Ⅲ在STM32F429IGT6上的移植技术和实现

2018-03-31 12:22穆向阳杨晓东
电脑知识与技术 2018年6期
关键词:信号量内核低功耗

穆向阳 杨晓东

摘要:该文介绍了第三代嵌入式实时操作系统μC/OS-Ⅲ相比之前版本,在性能上提升的地方,以及通过对搭载STM32F429IGT6微处理器的ARM Cortex-M4内核平台的技术分析,详细阐述了μC/OS-Ⅲ嵌入式系统在此平台上移植过程中的关键技术理论,最后通过设计多任务处理应用来验证系统移植的可靠性。

关键词:嵌入式系统;μC/OS-Ⅲ;Cortex-M4;STM32F429IGT6

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)06-0204-02

1引言

STM32系列基于研发高性能、低功耗、低成本的嵌入式应用设备而著称,随着半导体技术的快速发展,承载于嵌入式平台的实时操作系统也越来越被人们所关注,μC/OS-Ⅲ作为新一代具有高度可移植性的嵌入式操作系统,无论是在性能表现上还是在实际移植运用中都体现出了前所未有的工程价值,其在工程项目领域的迅猛发展也足够证明开放源码软件的巨大生命力。

2μC/OS Ⅲ基于性能上的提升

μC/OS作为可裁剪、抢占式、可固化、实时多任务内核,在搭载微控制器的ROM平台上具有高度的可移植性,2009年诞生的第三代μC/OS系统内核对比之前版本在性能上有很大的提升。首先,最大任务数和每个优先级的任务数比起上一代没有了限制,取消了消息邮箱,增加了时间片轮转功能,不再通过信号量标记一个任务,不通过消息列发消息给任务,其次,加入了运行中实时配置功能,以及大量的嵌入式测量功能。这就使得μC/OS-Ⅲ裁剪性移植在STM32F429IGT6平台任务处理工作中发挥巨大作用。

3 STM32F429IGT6技术指标分析

低电量的STM32F429IGT6微处理器是基于高性能ARMCortex-M4的32位RISC内核,可以在高达180兆赫的频率工作。ARM Cortex-M4内核具有浮点单元(FPU)单精度,支持当下所有ARM平台的单精度数据处理指令和数据类型。它能够实现一整套DSP指令和一个增强应用程序安全性的内存保护单元(MPU)。集成了高速嵌入式存储器(高达2 MB的闪存,高达256 KB的SRAM),高达4 KB的备份SRAM以及连接到两个APB的各种增强型I/O和外设总线,两条AHB总线和一个32位多AHB总线矩阵。所有器件均提供12位ADC三个,DAC两个,16位通用定时器十二个,低功耗实时时钟RTC一个,包括支持电机控制的PWM定时器两个,32位通用定时器两个,并涵盖了多样化的当下流行的标准通信接口。

4μC/OS Ⅲ系统移植过程中的关键技术理论和实践

4.1 μC/OS-Ⅲ系统内核移植过程概述

(1)txcos官网下载最新版本内核,ST官网下载STM32F429IGT6标准库文件

(2)用MDK新建本次移植平台STM32F429IGT6的工程目

(3)拷贝μC/OS-Ⅲ相关文件夹到新建的工程目录下

(4)对平台相关文件进行修改

(5)根据所工程需要,设置好相关参数

(6)编写BSP目录下对应的工程驱动文件

(7)编译、下载,测试系统可靠性

4.2修改STM32启动文件代码

在μC/OS-Ⅲ系统移植中,除去将系统中的相关文件直接复制移植到工程文件中,最重要的就是修改STM32的启动文件代码,从而把μC/OS-Ⅲ系统的神经跟已经复制移植好的STM32工程文件联系起来,可挂起系统中断PendSVHandler和滴答定时器中断SysTickHandler则承担了这部分工作。Sys-TickHandler为操作系统提供时钟节拍,PendSVHandler则是使μC/OS-Ⅲ能够成功的进人到STM32系统中。在整个项目文档的移植过程中,将可挂起系统中断PendSVHmldler替换移植为OS_CPU_PendSVHandler,将系统滴答时钟SysTickHandler替换为OS_CPU_SysTickHandler。

4.3修改os_cpu_a.asm文件

由于不同的编译器,要将μC/OS-Ⅲ移植到stm32上,C語言中用来定义全局变量的关键字PUBLIC要全部更改为汇编语言中的EXPORT,并将代码段

RSEG CODE:CODE:NOROOT(2)

THUMB

替换移植为

PRESERVE8

THUMB

AREA CODE,CODE,READONLY

这部分修改是为了兼容STM32里面的一些指令集

4.4修改cpu_a.asm文件

修改处理器相关的汇编函数,主要是任务切换函数,同上,将C语言中用来定义全局变量的关键字PUBLIC要全部更改为汇编语言中的EXPORT,并将代码段

通过OSTaskSemPend使任务挂在一个信号量上,通过OSTasks-emPost使任务发出一个信号量,由此实现信号量开关对两个任务进行交互。

6结语

本文选用了ST公司的低功耗STM32F429IGT6嵌入式开发平台,从技术理论到项目实践经验,结合Cortex-M4内核的系统架构模式,通过对整体μC/OS-Ⅲ系统的裁剪以及源码的按需性修改,完成了μC/OS-Ⅲ操作系统在STM32F429IGT6嵌入式开发平台的移植工作,无论是对提高产品工作效率、降低多模块工艺成本,还是缩短相关任务系统开发,都有一定意义上的实际工程应用价值。

猜你喜欢
信号量内核低功耗
基于STM32的mbedOS信号量调度机制剖析
强化『高新』内核 打造农业『硅谷』
一种高速低功耗比较器设计
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
Nucleus PLUS操作系统信号量机制的研究与测试
ADI推出三款超低功耗多通道ADC
IDT针对下一代无线通信推出低功耗IQ调制器
低功耗加权cache替换策略
μC/OS- -III对信号量的改进