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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述, N$ d- z/ [4 ~9 q- g) J' r2 R
9 u2 B# z/ m( n3 K) T
该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:( _& j9 @$ M" `/ I6 y0 {

" w; k& ?; ?- Q: `4 e2 [系统平台:µC/OS-II  (最新V2.92版)
4 N; Z& N* T8 Z8 i! V
) Z4 X& }, {, v# J2 B6 l: \5 t# c硬件平台:STM32F1   (适合F1所以系列)
9 T! h  n+ p4 d; Z( `, S
5 x/ b5 }: L" @) }$ Q) c$ _开发平台:Keil(MDK-ARM) V5 ' Z/ _! N8 e8 ~6 C* Y! E4 P

6 Q& c" |5 R. K" c& L; t1.为什么是µC/OS-II?
$ r8 e9 a1 m8 J8 z# p1 {8 h3 u& V% ]+ P4 Y
原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。
' ?' i& n6 {8 O8 q- J% T# q2 X
2.为什么是STM32F1?
2 Z- X# C: e; L/ q" K3 ]
" m0 O  @( z$ C8 ]" c硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。
1 Z. y* M1 S4 X& L6 \, ]# u2 U* B7 k, r# ~. ]. @
但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。
# H( K/ D: W& k
8 G7 U' J: ~9 `1 W$ t$ a% M  E还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。
% C1 W3 g8 V7 ]4 x5 a, z
/ W7 z& h4 k% [& f7 M1 H3.为什么是MDK-ARM V5?7 C) ~4 g4 @6 Y5 w

: K  }, {5 v$ r. ]8 d& F这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。: t$ o1 E/ ?1 S# _" k: m
1 ?* P; R8 g1 s- o; \# h
Ⅱ、关于µC/OS/ m" S  q/ e# D: r5 }" i

* v: _/ S; m: d3 rµC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。
/ }& |) @8 Z+ ]# F. e7 g' q1 f, d/ H. ^3 Q  T/ G; o6 v. J
µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。  e  z2 X; v' U" n* {7 U" L

! `$ ~$ H8 [8 `: `
20160626091101687.png

) P" u7 S# C2 m, e8 {+ f; L% P& u# g9 z4 W2 e
Ⅲ、准备工作# f6 i3 H, s# ~  x+ M. C

+ B, n. I5 `. c' y6 X/ i- W1.µC/OS软件工程包下载
% l4 F6 K8 s+ k3 H: wMicrium官网下载流程图:
7 W. G3 b6 Y9 `1 p/ @" t. H
6 ]% I+ V, l) |+ l4 P8 ?2 \4 X
20160626091127515.gif
2 j& r8 m, K. U1 Z2 q

1 D# B( }- K. D4 C
+ m& w3 h. P# Y2.ST标准外设库
0 `! ~$ d4 o* {1 I+ c, V$ ^
- `5 A, Z9 p6 Q9 |! ]Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。' H5 V' s/ j) l) g
ST官网下载流程图:, m- t" _% L( `
8 r1 a  ]8 O* Z0 a
20160626091146781.gif
" E/ C* m7 |% x% U% S" v! t! H

# J" J& B+ ?& p# U/ H1 o8 X
! Q" v% l% O- e, Y" L3.MDK-ARM下载与安装) ~) l$ U9 c: @) V) q& b

8 y# X" ?4 f# YⅣ、移植过程(文件描述与提取)
" W5 b; U( N9 x& {+ R% K* k. q3 q9 l+ E  v8 ]# ^: r
1.软件工程文件夹描述
0 u3 t$ p# z/ A# f; s" B; \+ W/ J( t5 I/ E8 K; g: E2 @9 f
从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。1 I1 z) F' D1 d8 y
" G8 {/ y9 c) L' n0 Y0 y* V
20160626091235889.png
8 N3 \) `- q8 }7 ]7 X) p6 T# q1 p+ F1 {
EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。; n+ _4 f- n" F1 \/ Z7 ^% A/ H( E8 |: Q

2 m( Z2 G' l7 u" }: }8 LuC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。
: Q) A( j# A- @, F7 N* W* M! R. d$ U" Y  j$ P/ Y! M
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。: L8 l9 S1 s; j7 b8 K8 Y

0 G9 Y; k7 X, V# k# J4 I+ uuCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。
0 W  I3 x) W; {* E0 N) u, }0 P5 l
2.提取工程中有用的文件
- }5 l1 z2 p9 z
3 f4 n+ W' G, o' q我们主要提取EvalBoards和uCOS-II下文件。
" K2 d, b1 \& R7 Y# G% n* s" z/ \& U; U9 d6 |7 S
20160626091245156.png
, P( c5 Y9 L( P0 b9 `* s2 v
app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。
3 y$ s; r7 B& N3 M
% L4 H( j2 t( ?os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。! N" C" j8 a* k$ |

' j! L' h2 r+ f将这两个文件提取至我们自己新建工程app文件夹下。
2 a- R8 V6 V: e0 m0 @; \& B/ }& A9 X9 L5 c3 k" ]+ R
20160626091256735.png

% }% Q9 V" a0 ^, O. E1 d4 H6 H$ kPorts是与系统息息相关的端口配置文件。
; p  {; b- l( L/ O+ C' B6 {* M4 y/ X0 Y" Y, N, H
Source这个不用说了,就是OS全部文件。3 Y) O, g$ m6 E, g4 {+ ]

* Z& ~6 d: z! Z7 }  c拷贝整个uCOS-II文件夹(里面)到我们工程。5 E* v* w. t+ S" L+ F$ {
9 h& R. |/ [8 D3 ^1 f
3.提取ST标准外设库有用的文件) _( f+ P, H6 q- Z- x- \4 d' l9 A/ e0 t
: e4 P2 ~. D' o
Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。" n( l3 p) b8 {  y3 F+ m1 z

( h" ~* V  `0 p, w/ ?提取的文件过程我不在描述,最后我会提供下载链接供大家下载。
7 @$ W9 Q7 D: O- ~5 d/ Z& F. P2 X; g- K- A7 x
20160626091356469.png

* e2 a- u3 u' r5 ]  `4.整合提取的文件, B* l/ I. i+ b7 q1 s
5 V4 H5 W- p! j* p
Micrium官网下载的文件 + ST下载标准外设库 + 提取整合
; h% H4 P! ]3 j* Z, W
# C7 X+ [6 }) P: K= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:
; b$ ]' Z) x1 G% o9 F4 `# m: P4 o, \

& F9 o. Z4 e1 j6 D3 c! j$ u; L) L% WⅤ、移植过程(新建工程及文件)
: Z# o5 t3 P& E7 Q; D' Z. s
) F+ i& T- ^  z! m/ {% }8 c% C1.新建工程
: R  c  V9 Y: k. a& c# E
+ t- P* J" k% k; v" X! |8 |- v, j4 B配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。6 X, [8 r9 l- U5 [2 O

0 c$ N. N9 n* G0 N9 P6 N/ g; W" G如下动画:
+ V3 i6 p- V! k1 o7 [
- x4 H7 l( I/ p' m( @0 r2.新建、修改文件' X* b% u2 ^- `& J  Q

- \0 Y. H2 ?' {! f3 N工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。" S! W/ X. Y9 q

9 _) ^' ?% R( P9 y我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。
2 d, ~& n7 E* d2 [  r# b- ^2 ~5 q
360云盘下载(新建工程、文件):
, d% L- F6 a2 ?+ v" n5 J, q3 F; x  F" t5 k  |2 S1 w
https://yunpan.cn/cRpHh6CTYQavV  访问密码 cc34
* X+ Z) a$ ~/ |+ c
7 t' |4 H0 L" E: tⅥ、说明1 g: Z( s9 |" q) F

# q$ m0 e# L# h( }8 Q当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。$ i) d. X( j" v) ~
6 Z/ t& e6 [- q  y5 C" S

! O* M* \! b) U+ v2 [* W
. l; Z7 p' T1 F( m( b
20160626091419641.gif
赞 收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答

所属标签

相似技术帖

官网相关资源

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