Ⅰ、概述# d, Y4 M6 l7 ]- a N( U" B 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台: G8 a7 S1 I4 m. _+ Z: a" G+ c 系统平台:µC/OS-II (最新V2.92版) 硬件平台:STM32F1 (适合F1所以系列) ( b/ D! D; E/ k" @ 开发平台:Keil(MDK-ARM) V5 1.为什么是µC/OS-II? 原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。 0 b( Q4 J0 r1 V- `/ d i3 L 2.为什么是STM32F1? 硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。2 _$ F8 l) p8 U8 ]2 T( L+ x+ X 9 z% A1 _. m& W, S0 h) }) J 但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。7 J8 v$ Y. z0 v$ y 0 f+ o2 j0 t1 S 还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。 8 A1 y3 N0 T8 P" [4 o 3.为什么是MDK-ARM V5?- C; @& {3 a' G* L2 X/ Y. c: ` 3 O7 I2 A1 L1 t% ]# x) s 这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。0 d1 q4 d4 x* w. J" A) ~5 n 4 J2 Z0 _6 Q; l0 n, a Ⅱ、关于µC/OS$ u0 H) V3 z4 ?8 O8 Q* |* J µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。 - N" | g0 N1 f: V$ U$ ]9 c µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。 # I( u$ E. c" `# a- c! u* }4 C Ⅲ、准备工作 1.µC/OS软件工程包下载7 v2 o. m* z N* `% j8 o Micrium官网下载流程图: $ N0 q$ A& U( W- f# Z9 f 9 s; k$ P" j. k6 l5 q1 B) C 2.ST标准外设库3 r4 c/ v% T% y a, T ' P) t& ~1 o5 v Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。 ST官网下载流程图: 4 p7 e' F; ~7 |' U x/ d% D& A 3.MDK-ARM下载与安装 Ⅳ、移植过程(文件描述与提取) / p. C3 z6 K9 D1 \ 1.软件工程文件夹描述( K6 L' u# P; v' d 从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。 EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。1 v4 Z$ g* B2 Z uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。 $ Z) X! M% N6 ~' r4 m! E2 T: e uC-LIB:这个是Micrium官方的库,初学者这里也不使用。 8 T; f! q( m! X2 t uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。5 H( T+ W% E9 R 2.提取工程中有用的文件 + s* p0 J0 X* B- g 我们主要提取EvalBoards和uCOS-II下文件。 app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。2 {& O# ?- c/ {8 p4 W os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。0 W2 p6 J' @" _( } " \7 j: b) l: c" E 将这两个文件提取至我们自己新建工程app文件夹下。+ M/ w8 v- Y* f* h/ f Ports是与系统息息相关的端口配置文件。 1 t* B* J* Q: I8 `9 X Source这个不用说了,就是OS全部文件。 拷贝整个uCOS-II文件夹(里面)到我们工程。 % \9 C- Y7 d" G; ]) }5 v 3.提取ST标准外设库有用的文件( G, V# j0 Z+ K: {- `- O2 K( _8 F6 [0 V Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。 提取的文件过程我不在描述,最后我会提供下载链接供大家下载。 4.整合提取的文件3 N1 r" \% Q9 q1 B5 {9 a1 } Micrium官网下载的文件 + ST下载标准外设库 + 提取整合 $ W! O5 Q! E6 s- u = UCOS2_STM32F1_ProjectTemplate(提取文件),如下图: Ⅴ、移植过程(新建工程及文件)! l- J B2 \) \" ]- T ' q& h; s- h; g* I9 z 1.新建工程 配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。 如下动画:1 O8 |) b- v! @1 @4 t& h: Y 2.新建、修改文件* l5 u0 J# T& t/ v P. L- o 工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。- F5 `& G. R7 K, ` 我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。 9 ^2 h0 ~- I- N, g7 y. f# n 360云盘下载(新建工程、文件):& N( [, l4 K" Q- f$ \9 |5 G; ~& s% R https://yunpan.cn/cRpHh6CTYQavV 访问密码 cc34 Ⅵ、说明 e7 K/ M5 N" v/ `5 |% B* X# F 当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。: b* v$ F' w- l! u2 y " |3 C8 G, t& h3 V( \6 y: ^ % v0 d( I |9 c$ a! R: N |
STM32F103移植LittlevGUI代码
【MCU实战经验】+自制MP3使用STM32F103ZET6和ch375读取u盘,vs1003解码,音质超棒
串口通信波特率异常的解决办法
小马哥STM32F103开源小四轴RoboFly全部资料大放送
【MCU实战经验】+STM32F103的uCOSII详细移植
游名科技:STM32F103+TMC2160:86步进电机和驱动一体原理图/PCB...
在高容量 STM32F103xx 微控制器中实现 ADPCM 算法
STM32F103标准库开发---SPI实验---读写 W25Q128 外部 Flash
RT-Thread在STM32F103RC上移植
STM32固件库分享,超全系列整理