你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】UCOS2_STM32F1移植详细过程(一)

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述
  E6 L1 ~% n7 h1 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版)
. L2 G  \* u' X2 U3 J2 V: ]* W1 ~/ Y* t2 T
硬件平台:STM32F1   (适合F1所以系列)' b: R, |5 e) Y( E7 D7 `# z8 w

3 g% c& _5 g9 x) Q开发平台:Keil(MDK-ARM) V5
- y1 U- \% ^' l8 N
- E) Z9 z0 c+ j" w1.为什么是µC/OS-II?  H  `7 _+ j$ r

6 [  v+ B& Z4 a3 `! Z原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。
3 V+ ?/ S" u; S, \% \- b
! w7 ~2 B5 o) k2.为什么是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

. R  o/ f7 A$ g4 F3.为什么是MDK-ARM V5?
+ \4 b3 a4 [% i: C& m+ }' g3 N% P$ O- ]
这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。
2 r( r6 R. W! Y0 r+ k6 D3 J4 d: M3 N/ [/ M# ?
Ⅱ、关于µC/OS
2 A! V' g; z! j9 t5 D4 \7 _. v$ {) i4 @  {3 B5 R0 F0 E
µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。' t& Y3 b3 k9 f7 k# _

' P; O' i0 A5 f% TµC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。3 |. w+ M% c/ ~( J
4 e) w2 u& Y! m0 e
20160626091101687.png

4 f$ k" v5 i) t  w. b  O9 n; O- h5 P# K+ R
Ⅲ、准备工作
1 @+ I0 J9 E7 i" @$ k( O( b6 j/ k& e; I6 n% g
1.µC/OS软件工程包下载8 K# A8 D( S' t1 ?, A. s/ Y! j
Micrium官网下载流程图:
. S  A8 T3 U, s8 n& a$ w5 Q1 a8 Z7 y$ [- Z; `3 o4 u" v
20160626091127515.gif

  J; x- {+ w" u: t
1 c  E" X8 p" T4 A* k& N* t* B
$ n$ T( _, ?' i) c( Y; t2.ST标准外设库1 Z" T! w& Q- U5 M

% t8 ?, y. {& c- y6 GMicrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。2 i& x" _% J. e. u
ST官网下载流程图:
& g9 }/ Z5 ], W" d
/ ^& V- V* R. k: c
20160626091146781.gif
" \6 m& J0 J8 `+ @  r' q/ x6 F
4 b" w; a. F4 l  U' v% c

3 D: d$ A* Y( @( y" B3.MDK-ARM下载与安装. _/ k( ?* F$ B, e
8 l0 ^$ T- _2 m# v8 h! w
Ⅳ、移植过程(文件描述与提取)
' V. i% @8 D( \: G7 P/ K3 {2 p
- @( q5 W  C  M+ D1.软件工程文件夹描述: z+ k/ p. I$ E4 g0 m% Y

! F# B* g) h, e- l+ U3 _; o9 ]. @& @从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。
4 P) ?& q# b# `' s* t! l: {3 K' {+ m$ `, F
20160626091235889.png
1 A/ h1 \% A9 h
EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。9 j' {( ~1 k1 `4 ~

4 C# k# }+ i. [uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。- _  p" G  J3 ^' b% i4 h
3 q# I% r% D. b1 E" X
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。
- ]5 i4 W7 E" T2 W% {
! W6 u7 i" [( n$ ?uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。* M5 ^) T0 }7 Q9 ]8 G
0 P9 t  q* u& m' b
2.提取工程中有用的文件
+ ~/ Z/ D3 j( f# R: t
# F3 P+ N# M" ~6 |* F4 Z我们主要提取EvalBoards和uCOS-II下文件。
% K9 T$ [! q- u" ?- Q
( k6 L6 T' L5 i( h( E
20160626091245156.png

6 j* t* T9 L  N, g1 v% ?app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。: y8 M- u5 k, P5 K. c3 i0 K# w/ H

( z% {; ~7 N8 ~: G! h5 W# Xos_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
20160626091256735.png

% H2 b: j0 ?% p8 PPorts是与系统息息相关的端口配置文件。" p( U, F' T) u$ Q# L+ k) ~

2 @- b+ D- Z! ]* S5 xSource这个不用说了,就是OS全部文件。
) F3 }. p, I. y4 |
* D/ {) F; F* X1 W4 F拷贝整个uCOS-II文件夹(里面)到我们工程。
0 L% f; f5 J5 c# c! ~& ~$ ~" j" N+ d8 O% |( @# |
3.提取ST标准外设库有用的文件  A) O$ w) d( I8 [* i% Q

$ a8 [0 [# d. w2 Z4 aMicrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。
7 i3 f- K7 c. i, B2 Q# S
! D' O+ k, @- a2 G/ y提取的文件过程我不在描述,最后我会提供下载链接供大家下载。
' Q; l) W* B' R7 r) `
8 j6 y$ C: _* e* Y# G3 B. R; n
20160626091356469.png
  O4 K" K/ i* B
4.整合提取的文件& @+ R" y+ l$ o1 ~
, H, Y+ o0 Y& \7 T0 u
Micrium官网下载的文件 + ST下载标准外设库 + 提取整合
8 A$ m+ ?; H3 P! o* a8 I: d5 s/ P& C' I: b" d4 \) ?4 |+ {
= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:! q* ?6 {2 \$ o) O6 w

7 x6 g  j! Y$ U: Y& r& `
2 B! m) ?7 m; `1 Q) 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

3 U: a: Q$ L' u- m  i4 G$ [如下动画:2 Q$ U2 b: h( v! j7 m  |( a

5 |7 c2 o2 z8 s' v3 n2.新建、修改文件
* ~- `+ |% ?9 @- |1 V
5 Q* V( _1 v- o  R+ _工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。
' ~2 j+ G0 K" |( Y1 e, f; \' 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云盘下载(新建工程、文件):
% h3 y2 J: N. Y% J! v) s
& t  i5 y; E" p+ _# r: r7 Thttps://yunpan.cn/cRpHh6CTYQavV  访问密码 cc34$ s* V$ ^  d+ J. F# G: e
8 o9 o9 g* J$ \1 G4 ^# z
Ⅵ、说明
/ f1 Z" N8 q/ ~4 K
, V. o8 `( R! R3 ?当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。$ V7 c/ v2 Q1 A
7 b! n2 V, T' l9 L

3 _0 h/ V* M3 W4 x3 J+ l
+ |0 M3 ^; j+ X4 C
20160626091419641.gif
收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版