Ⅰ、概述 1 D4 y' r6 F* Y+ N/ `- o) x0 ? 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:9 d! Q/ N6 b+ Y1 i5 `1 p) \0 w" q, E # Q# @( k9 X8 ` 系统平台:µC/OS-II (最新V2.92版) : ]* W1 ~/ Y* t2 T 硬件平台:STM32F1 (适合F1所以系列)' b: R, |5 e) Y( E7 D7 `# z8 w 开发平台:Keil(MDK-ARM) V5 1.为什么是µC/OS-II? H `7 _+ j$ r 原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。 2.为什么是STM32F1?$ s5 C" a& I& E* J5 ` 9 D% t* Q# b! U6 t 硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。' Q: V+ p0 z+ {( m$ h' q1 j . W0 s7 S3 x G+ @, Z3 D8 T T 但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。6 ]! \* _9 ? D0 X! \, E 3 a0 X: p) O' T 还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。+ c" P/ _& H* c, q; g5 G' X$ \' G 3.为什么是MDK-ARM V5? & m+ }' g3 N% P$ O- ] 这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。 6 D3 J4 d: M3 N/ [/ M# ? Ⅱ、关于µC/OS $ {) i4 @ {3 B5 R0 F0 E µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。' t& Y3 b3 k9 f7 k# _ µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。3 |. w+ M% c/ ~( J 4 e) w2 u& Y! m0 e w. b O9 n; O- h5 P# K+ R Ⅲ、准备工作 $ k( O( b6 j/ k& e; I6 n% g 1.µC/OS软件工程包下载8 K# A8 D( S' t1 ?, A. s/ Y! j Micrium官网下载流程图: 8 Z7 y$ [- Z; `3 o4 u" v 2.ST标准外设库1 Z" T! w& Q- U5 M Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。2 i& x" _% J. e. u ST官网下载流程图: 4 b" w; a. F4 l U' v% c 3.MDK-ARM下载与安装. _/ k( ?* F$ B, e 8 l0 ^$ T- _2 m# v8 h! w Ⅳ、移植过程(文件描述与提取) 1.软件工程文件夹描述: z+ k/ p. I$ E4 g0 m% Y 从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。 * t! l: {3 K' {+ m$ `, F EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。9 j' {( ~1 k1 `4 ~ uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。- _ p" G J3 ^' b% i4 h 3 q# I% r% D. b1 E" X uC-LIB:这个是Micrium官方的库,初学者这里也不使用。 uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。* M5 ^) T0 }7 Q9 ]8 G 0 P9 t q* u& m' b 2.提取工程中有用的文件 我们主要提取EvalBoards和uCOS-II下文件。 app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。: y8 M- u5 k, P5 K. c3 i0 K# w/ H os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。$ b; D d3 m) J ? + A G" N8 {) w4 u, v# s& n 将这两个文件提取至我们自己新建工程app文件夹下。; q8 c# w5 i5 [. {! ` 8 N' d8 U Z+ N6 u5 ?9 Q# H Ports是与系统息息相关的端口配置文件。" p( U, F' T) u$ Q# L+ k) ~ Source这个不用说了,就是OS全部文件。 拷贝整个uCOS-II文件夹(里面)到我们工程。 & ~$ ~" j" N+ d8 O% |( @# | 3.提取ST标准外设库有用的文件 A) O$ w) d( I8 [* i% Q Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。 提取的文件过程我不在描述,最后我会提供下载链接供大家下载。 4.整合提取的文件& @+ R" y+ l$ o1 ~ , H, Y+ o0 Y& \7 T0 u Micrium官网下载的文件 + ST下载标准外设库 + 提取整合 8 I: d5 s/ P& C' I: b" d4 \) ?4 |+ { = UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:! q* ?6 {2 \$ o) O6 w Ⅴ、移植过程(新建工程及文件)6 J- i: x) S$ K, Z # t5 g4 E3 _4 K 1.新建工程3 `! T' R, Q" t( t6 H8 x1 y/ @( n7 { / M @" i9 ^" \% @ 配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。; q2 J* e; d Q {4 e4 E 如下动画:2 Q$ U2 b: h( v! j7 m |( a 2.新建、修改文件 工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。 ; \' y/ ]+ B3 ^+ Y) f4 r4 \ 我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。" L/ O, n1 p. ?: G: F% i. A, h * n2 o# T$ Q, c+ D: g3 p( {8 T% P' w 360云盘下载(新建工程、文件): https://yunpan.cn/cRpHh6CTYQavV 访问密码 cc34$ s* V$ ^ d+ J. F# G: e 8 o9 o9 g* J$ \1 G4 ^# z Ⅵ、说明 当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。$ V7 c/ v2 Q1 A 7 b! n2 V, T' l9 L |
小马哥STM32F103开源小四轴RoboFly全部资料大放送
STM32固件库分享,超全系列整理
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP