Ⅰ、概述# ~2 ^9 s5 H. z" O 该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:) H1 p' b8 G8 E6 ~* u4 L : i1 V& E5 t0 w& {0 K 系统平台:µC/OS-II (最新V2.92版): P, A1 p& i" r8 u3 K7 h ) a4 ]# Z% z& J- Y" R# ^ 硬件平台:STM32F1 (适合F1所以系列) 开发平台:Keil(MDK-ARM) V5 1.为什么是µC/OS-II? * n$ A$ D! b1 \- ?4 ] 原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。% N$ A+ C0 F, p5 r! K 9 |3 K+ w/ n3 W# Y1 U2 e7 [ 2.为什么是STM32F1?! H- p% s' }' C6 z2 ^- Y; I / `3 k3 n# ~: f' h 硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。 但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。$ w% Z/ r- k$ \- H1 [1 W 还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。 3.为什么是MDK-ARM V5? ! j+ C$ T, A( o/ R# @; ~1 _ 这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。/ m5 }2 ~2 s/ S* S3 X- a; a Ⅱ、关于µC/OS5 H* e8 y5 a! E! ^, O; E µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。% v. u3 |) X9 g, {+ I5 | µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。 " _' l) l7 n/ y( Z: I' T" Y4 I, C Ⅲ、准备工作 / e' q0 U% V& W v 1.µC/OS软件工程包下载 Micrium官网下载流程图: 2 M9 R' [' B2 d% H2 g7 o3 B8 K 2.ST标准外设库# R/ n% A, w6 ]% T0 Z2 F! q Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。 ST官网下载流程图: ( Q7 u$ }' V$ N4 }* l/ q 9 i2 g9 r" S W1 \ 3.MDK-ARM下载与安装 Ⅳ、移植过程(文件描述与提取) ! \+ [/ r4 \0 c% A! x0 N/ m) _1 E 1.软件工程文件夹描述 0 B* o# z0 x% V0 r2 e- o4 e 从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。 EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。 r6 [$ m& _3 H ; c! e2 I( I3 e+ `# ^. t* H5 H& W uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。 5 a0 F! G! K2 U. h3 I. a9 |) w! Q; D uC-LIB:这个是Micrium官方的库,初学者这里也不使用。 V. i. W9 w9 B$ o* [$ O: \+ y uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。 2.提取工程中有用的文件 9 ?5 W6 E* g7 K% b 我们主要提取EvalBoards和uCOS-II下文件。 9 d( X |2 d. C3 f2 f7 S' s app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。8 ?, X4 r- `: _) x( k os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。- p, r+ W' k3 Q$ I& \ Q 将这两个文件提取至我们自己新建工程app文件夹下。) g$ c b) v. W 3 Z# w6 I7 M0 a$ m& H; h4 w Ports是与系统息息相关的端口配置文件。' _+ Z S* O- Y+ s6 {" Z 0 q, g6 F* A, x$ I Source这个不用说了,就是OS全部文件。 拷贝整个uCOS-II文件夹(里面)到我们工程。* L, e* S( G: ]) J x& } 3.提取ST标准外设库有用的文件( X; \* j: X) I1 A+ v ; q( t5 |# ?2 o2 }& B Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。# o2 I0 `; k& M! P4 a& o + l$ q8 I! {# j3 R2 w% I* i 提取的文件过程我不在描述,最后我会提供下载链接供大家下载。6 O, b7 C9 a! T0 f3 F 4.整合提取的文件 2 D0 z3 j* F0 t1 C/ T/ ~' B6 H# t Micrium官网下载的文件 + ST下载标准外设库 + 提取整合7 @! D/ v) R, y& a1 p! E ' k3 {0 A- y$ w0 S5 g4 t = UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:. T* ~, S& C5 {4 U6 M2 h6 s& [ 2 X3 L2 u# `4 { Ⅴ、移植过程(新建工程及文件) 1.新建工程 配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。 如下动画: 2.新建、修改文件 工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。6 {: O( I8 g6 h) X0 b6 s 我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。 360云盘下载(新建工程、文件): ) K! O; ]6 B, `1 }- _( p https://yunpan.cn/cRpHh6CTYQavV 访问密码 cc34 4 {8 ]. `# j- |# l9 y$ Q; O Ⅵ、说明1 n' ]/ z1 d' `* d7 @+ E 当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。/ {+ G( W" \. k4 b, x- ` : s' [! Y' x1 ?& q / V- G# d) s0 l. ?5 ], Q; R |
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固件库分享,超全系列整理