Ⅰ、概述3 a% ?0 R! F Z3 J0 Q- l" e1 ~ 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台: 4 `# n: u8 g) X/ k$ J' b 系统平台:µC/OS-II (最新V2.92版) 硬件平台:STM32F1 (适合F1所以系列)0 P& Q6 K& V. S$ H" _0 [+ } 3 H' w# p# l* O' p Y! U/ V! _ 开发平台:Keil(MDK-ARM) V5 0 F/ I/ p( x0 \, L- U/ i 1.为什么是µC/OS-II? w! `9 d6 n: s 原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。 2.为什么是STM32F1?4 r5 v. |4 L% [: s) v8 l 硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。) Z% `$ B9 D' k& ?4 n* P # s/ p1 D4 v' F7 B# E' x 但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。1 i$ c& q9 b/ y. P ; n# u- b6 B9 } 还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。, p3 a+ L' u" J& \; [8 N" @2 l 4 d0 T W& J$ W9 n# o8 ?) o 3.为什么是MDK-ARM V5? # V# s: I% @, R+ L 这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。 % v* m1 L* k7 }) q8 m- M, u Ⅱ、关于µC/OS5 f/ y7 b. y! i1 A2 j' g µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。 µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。 ( a% C1 c5 [& I6 {9 q B$ b6 }. C ^ Ⅲ、准备工作 1.µC/OS软件工程包下载 Micrium官网下载流程图: 0 z/ ]9 Y3 A/ C0 g* C3 i / O( F$ I' w* R9 q 6 h( f3 v/ w; |4 s0 E- a; @9 L8 r5 X4 X 2.ST标准外设库- f# H8 p* Q& x5 g7 z+ N& Z, \ w7 s+ G' M6 v/ a* o" O/ c Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。 ST官网下载流程图: 3 Y; S$ N" }, N: A! ~- z , S. A, Q) a0 K# q/ e" B$ c 3.MDK-ARM下载与安装 Ⅳ、移植过程(文件描述与提取)/ S$ p6 J! q! ?. D3 v! T ( a; F0 o H; T0 V5 g 1.软件工程文件夹描述 从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。 EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。; H2 e1 {, [" E# {# H uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。 uC-LIB:这个是Micrium官方的库,初学者这里也不使用。 & Y% ]" p+ [9 r; K( S# f uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。5 O4 f. s0 q4 O: z3 C2 e; k 2.提取工程中有用的文件 , @2 v1 ?9 v+ o. V" z/ Z 我们主要提取EvalBoards和uCOS-II下文件。, a: e E! g# u8 i 1 r0 T4 Q3 H, b6 s1 G$ Z; _& P app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。 os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。 - T' m2 c( N, E; o t" ?' d8 T 将这两个文件提取至我们自己新建工程app文件夹下。 X6 c5 T# G! H: @& r* `" e, C2 H 7 d, r8 C2 [. L2 w) v6 D9 p Ports是与系统息息相关的端口配置文件。 5 ]5 O2 f+ `9 e Source这个不用说了,就是OS全部文件。 2 A2 X( u- ?6 O 拷贝整个uCOS-II文件夹(里面)到我们工程。 0 d; j$ W. @1 A& M: t- s6 H* B. r0 k8 g 3.提取ST标准外设库有用的文件 Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。3 {5 U; n+ n& Z' W. M$ s. q* V. y 提取的文件过程我不在描述,最后我会提供下载链接供大家下载。" ~0 V, P D& m$ u 4.整合提取的文件 ) l/ {0 ~, ]4 m, A x Micrium官网下载的文件 + ST下载标准外设库 + 提取整合8 [) h4 c4 j/ W6 G+ b / i' O) Q% ] m/ ~ = UCOS2_STM32F1_ProjectTemplate(提取文件),如下图: n1 f7 R' i) N ' R6 [9 Z! `% f- e2 l! ` Ⅴ、移植过程(新建工程及文件): T! @) `1 i; W2 d Z m+ g1 ~ 4 {$ N7 v' ~9 S- P 1.新建工程2 n! u* D0 e y- O: n& u- \: M; r 配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。 如下动画:/ d8 n2 W. w, E 2.新建、修改文件& v( q9 H: S5 h3 [5 w ! F) a8 c: t3 r. z' L- X/ Q* u 工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。: O9 v, T- _) g; L7 f+ | A 我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。 6 @4 ^( m- x0 ^6 \* b, L 360云盘下载(新建工程、文件): https://yunpan.cn/cRpHh6CTYQavV 访问密码 cc344 b" j* ^# A i6 q Ⅵ、说明 k! b Y/ l3 O R0 ~ 当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。 . r N9 i. u/ P5 s3 [ |
STM32固件库分享,超全系列整理
小马哥STM32F103开源小四轴RoboFly全部资料大放送
【MCU实战经验】+STM32F107的USB使用
基于STM32F103两轮平衡小车设计(开源)
STM32F107VCT6官方原理图和PCB
【福利】用STM32库的朋友有福了:STM32F10x_StdPeriph_Lib_V3.5.0chm...
基于STM32F10xx存储器和系统架构经验分享
基于STM32F1的CAN通信之BH1750
基于STM32F1的CAN通信之OLED
基于STM32F1的CAN通信之之串口IAP