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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述
% p: i' S/ f5 i" Z  x( Q' |, c4 v( w6 E: \- T* s; D" e
该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:
. g" @/ E3 E2 f/ A6 [7 i' N$ D+ @7 B9 z0 ^0 T
系统平台:µC/OS-II  (最新V2.92版)
7 {2 u2 F4 h  c; m: c) {( A9 C# n% C8 O2 v  L
硬件平台:STM32F1   (适合F1所以系列). ?9 {3 C7 ?) B% u2 _) r
& T: l2 o+ m( l/ l( ^
开发平台:Keil(MDK-ARM) V5
) |5 j' }. o" q/ c$ t- {1 \+ k. m
& m% p% R7 {* h0 \. t7 k1.为什么是µC/OS-II?. k" _; f& Y& f7 C% z& a0 ~" I

( K0 Y4 I' U) Q% l6 ]1 B原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。. x* ]/ l$ J+ m' L
4 O0 s) E! z8 {- m" U! n
2.为什么是STM32F1?
/ B; K/ T+ {9 g! s( X' i/ E4 }" u8 T; H$ O2 M; A) ]1 K# U! J. S
硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。
8 u- q  u$ q# W& d0 I/ j: N/ r: j1 E0 x+ E* A9 H
但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。
9 A7 ^1 d! e9 k1 r* V
7 D1 [' H5 A4 b! k& }- T还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。
& \( m+ `3 P2 E, q; [; @: H1 |" \( E' m! h. y# r9 m# n6 j0 H& X
3.为什么是MDK-ARM V5?5 ?& v' z+ q3 ?* k. k

9 L7 Y% z# o4 T  k这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。3 k1 s5 i  {+ P1 P: x, i. h$ I; m

' e; A4 N$ ^7 C; A$ r+ S( K' s$ [Ⅱ、关于µC/OS+ _1 L- G. p: m2 u2 X7 w
4 G1 _" e1 W9 j) q( o5 F7 P; ^& x# |
µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。
1 R4 Z- B# E5 W( J* z, S% L8 J: }( G, s' M+ i$ O+ M
µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。
+ g4 c: c$ P/ y9 m8 Q: z$ @9 ~' ^( q/ }
20160626091101687.png

' {, f: L% r; D+ f6 Y5 ]  W- v$ B3 z& A, ~# U$ t
Ⅲ、准备工作) r+ H6 r, f2 i9 g* J7 Z- N

7 v% v8 K% l5 f5 W, k% [. ^. j1.µC/OS软件工程包下载+ u# r* o7 V# S$ q6 p  n& ], ]
Micrium官网下载流程图:4 K: A7 C( J" Z. b6 I% O
/ K+ [$ Y5 G$ E3 h
20160626091127515.gif
! g2 n" c: T  {/ W0 X
* ~# n6 y( l  D# g

  \# Q  Y4 m3 J; z( G& g3 M* T1 I& ]2.ST标准外设库
& D- v' X" o7 r6 |( W; E9 N% [2 W, d' F$ C2 V" Z) _
Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。6 B" l* `9 K! a% ?# E5 t
ST官网下载流程图:
. q+ U4 I5 x5 {9 o$ o/ ]. {: i- s' o: _2 e) D9 V
20160626091146781.gif
* b8 w% ?% Z1 h0 v& d5 r6 O

% w2 l* T2 j& `( T1 q. b, E+ ]' ?6 ~+ B, ]: S$ E4 }, l0 u
3.MDK-ARM下载与安装! v1 ?1 }- R5 G6 R; D

1 U; _0 |9 f/ Z* X4 qⅣ、移植过程(文件描述与提取)9 Q3 E" h3 ^; m% Y+ |4 |9 D: d! W% h% B
( w; L$ \2 s( z( q3 }" h# G9 Y
1.软件工程文件夹描述( i) a6 O* V# O6 W! O4 _" \
4 V# T7 Y! [  i7 |! d# b
从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。1 r9 d' }$ C1 c$ \( Z/ d; n
, D0 U1 w% P; p9 m4 q
20160626091235889.png

! _( k1 H& t/ ?1 N! H2 N7 CEvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。3 i8 y' q( t! R
0 [5 f& }4 E3 K6 P# c( r
uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。" C7 `5 [" m* M; X" l9 h& }! a
, C1 x  Q) n. w2 p6 _  v2 M
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。" p# V8 U' D7 e0 U! L# x/ C  F

2 V: H9 n- f0 R9 |7 g3 H* p3 OuCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。
& v' ^' p: N" t1 z$ c
' H! x  ?8 k+ d+ @$ X3 ?2.提取工程中有用的文件
# \9 |3 B: _- |& w/ d0 e' X! }0 V3 P/ Y# ?. h* n, `* S3 d
我们主要提取EvalBoards和uCOS-II下文件。
: }4 y! A5 y- d% l. M  A+ S3 n+ E' r: t3 {; H
20160626091245156.png
5 A" Y& ]- e8 C. @
app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。  |6 X, m' e) G) j: C) ]# J8 _( ]: C
# K( Y2 E7 Z/ P4 x  {7 {4 f0 P* u' v
os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。' D2 _! b4 A' a. ?
# m  [* P, C( u/ G. G$ Z$ u
将这两个文件提取至我们自己新建工程app文件夹下。; a& ^( I5 L6 t, R
; w8 v+ e. _5 }
20160626091256735.png

* h7 H4 y0 }; N; z; l; g0 r2 PPorts是与系统息息相关的端口配置文件。$ z" S7 R2 q) L# B+ e8 ?: p
" \) k  J; t4 Z7 }
Source这个不用说了,就是OS全部文件。
/ j/ h' D+ Y! ?& ?
, ]. ^# [, J% u3 n- s/ @拷贝整个uCOS-II文件夹(里面)到我们工程。2 M, V/ c$ s$ l( K* N& m

# g9 m. |4 W' l" R6 c3.提取ST标准外设库有用的文件
  I1 ^0 p8 |  L, Q+ {( h) L3 _- h  P! U0 I4 F  s7 Y5 ~
Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。
: y. V. L3 x$ z- B$ m
* F& [1 w7 X. Y) U' J9 H- `  L7 g提取的文件过程我不在描述,最后我会提供下载链接供大家下载。& n8 s1 W1 z' z/ l& X. h! f

5 h& l, `1 X; [9 @5 _% L9 a  j
20160626091356469.png

& M$ H2 c% r) C& H' H4.整合提取的文件
6 g- l$ h6 p4 Z3 y( A1 F; z
0 I& {# c- L' f- B7 kMicrium官网下载的文件 + ST下载标准外设库 + 提取整合
# X, r( P( L- W/ y( n' l2 o7 {+ a# @* `/ D. q; q, c5 G' r
= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:. E7 b; a/ i! V
8 L) U* l7 e! w: T& y( P4 W
, N# C6 V! [5 ^$ q
Ⅴ、移植过程(新建工程及文件)& |1 j6 d: ^3 @" i9 L6 Z, G! i

. O( q7 R) b; ?- R2 @1 k7 u1.新建工程
4 H7 R+ W( L7 T
3 c9 N* \/ T. Q6 |7 i" v配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。& w- Q) `4 K2 s! e( g6 V( L

7 T* _$ G. K$ C3 ]4 A) [3 I7 o如下动画:
  E" q, ^, n- X" l# T: |9 q+ M4 C! n0 O* p- S
2.新建、修改文件5 F9 Y# d% u9 C
/ I' P& i; O6 K/ [! r2 s' c  s1 j: l
工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。
* W# o9 F# X9 y  f* `$ P6 j1 I9 Y6 h/ I5 {' G& N
我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。
3 G* j0 N1 ]" |' g0 k
# v3 K! X4 h6 N! y  [1 F360云盘下载(新建工程、文件):, v1 a3 B1 l1 G
/ c+ H- N4 Z5 `$ p" C2 {9 r" K9 C
https://yunpan.cn/cRpHh6CTYQavV  访问密码 cc347 n9 ?' v$ A: T- r0 c  x* H* M

) Y; Z7 I: f, q0 kⅥ、说明
( w' \# r  \2 L
, h: a, I: E; j( N8 O当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。
& \* \$ @0 k+ A6 w: E) W- J7 ?" s+ A; m* a  b

2 P) T4 ?$ |1 U! [
5 K1 p3 T( S3 J+ U  H. Z
20160626091419641.gif
赞 收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版