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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述3 a% ?0 R! F  Z3 J0 Q- l" e1 ~

, o$ [5 D. d$ S+ S1 a9 r8 M+ Z该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:
6 p. t5 \, q& R/ T4 `# n: u8 g) X/ k$ J' b
系统平台:µC/OS-II  (最新V2.92版)
) |6 \% I. a  q$ T
# @+ f5 d: \  t- Z6 K3 p硬件平台:STM32F1   (适合F1所以系列)0 P& Q6 K& V. S$ H" _0 [+ }
3 H' w# p# l* O' p  Y! U/ V! _
开发平台:Keil(MDK-ARM) V5
  h: U4 j+ ]  q( K4 P0 F/ I/ p( x0 \, L- U/ i
1.为什么是µC/OS-II?  w! `9 d6 n: s

1 g! |; }1 a( W# t/ z! P; N原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。
7 n3 }" @7 @3 N) A/ h2 ^/ `0 H
' L" c3 _9 g1 z2.为什么是STM32F1?4 r5 v. |4 L% [: s) v8 l

7 P% f! p9 Z/ a! h硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。) Z% `$ B9 D' k& ?4 n* P
# s/ p1 D4 v' F7 B# E' x
但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。1 i$ c& q9 b/ y. P
; n# u- b6 B9 }
还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。, p3 a+ L' u" J& \; [8 N" @2 l
4 d0 T  W& J$ W9 n# o8 ?) o
3.为什么是MDK-ARM V5?
* w1 _  P& o& Q/ `* Q# V# s: I% @, R+ L
这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。
. L3 ^& g5 }* a; |2 q/ O% v* m1 L* k7 }) q8 m- M, u
Ⅱ、关于µC/OS5 f/ y7 b. y! i1 A2 j' g

) U, H$ A  }9 }* P' L  |µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。
! W! N9 Q  n* i' \
) ?4 B0 D& K3 P; }. Y. t3 Z0 K0 x$ UµC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。
. D: E: p+ {, F* k( a% C1 c5 [& I6 {9 q
20160626091101687.png

7 h0 v# @4 a: I, b$ r1 c) S8 f  B$ b6 }. C  ^
Ⅲ、准备工作
( x# f0 a; V/ l( O# s$ G) j8 n
% r3 p# u$ i/ y5 ?9 k8 `1 z1.µC/OS软件工程包下载
  V) x: C& D! Y* aMicrium官网下载流程图:
8 {/ X# u$ \! J, m& p0 z/ ]9 Y3 A/ C0 g* C3 i
20160626091127515.gif
8 N9 q' L1 x4 G
/ O( F$ I' w* R9 q
6 h( f3 v/ w; |4 s0 E- a; @9 L8 r5 X4 X
2.ST标准外设库- f# H8 p* Q& x5 g7 z+ N& Z, \
  w7 s+ G' M6 v/ a* o" O/ c
Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。
- n# f7 N8 f4 I0 V+ t4 qST官网下载流程图:
: w$ @/ [5 G7 W7 V" ?
' u# d, p7 S0 a$ K* u1 L
20160626091146781.gif

8 N0 _; E+ n; d3 Y; S$ N" }, N: A! ~- z
, S. A, Q) a0 K# q/ e" B$ c
3.MDK-ARM下载与安装
1 \6 d; ~+ l1 e5 A( L- d
+ }0 Q) ?& A1 i, p& Q/ vⅣ、移植过程(文件描述与提取)/ S$ p6 J! q! ?. D3 v! T
( a; F0 o  H; T0 V5 g
1.软件工程文件夹描述
! H* {, d% R% r- C2 o. O; A; B
: N) F, i; R2 x从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。
) L# C# l; m( `* {8 X; t* E% p2 d
% s' [; C1 U& L0 w  s) [
20160626091235889.png
/ z( Z; f( }+ S% ]
EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。; H2 e1 {, [" E# {# H

, N' Y! R* h+ GuC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。
+ H& t. P9 K4 e, s
" L0 D3 [5 q9 f4 A" juC-LIB:这个是Micrium官方的库,初学者这里也不使用。
" L3 H% u" V3 p$ E- X& Y% ]" p+ [9 r; K( S# f
uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。5 O4 f. s0 q4 O: z3 C2 e; k

9 B6 H7 j# W1 X2.提取工程中有用的文件
; P7 q; g1 a0 k; |, @2 v1 ?9 v+ o. V" z/ Z
我们主要提取EvalBoards和uCOS-II下文件。, a: e  E! g# u8 i
1 r0 T4 Q3 H, b6 s1 G$ Z; _& P
20160626091245156.png

' F4 b9 O  `2 zapp_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。
) r7 H8 M0 L0 e! Y  c/ U' p2 V
# ^2 v+ e/ k! E+ H2 uos_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。
! I* o" `5 b2 m- T' m2 c( N, E; o  t" ?' d8 T
将这两个文件提取至我们自己新建工程app文件夹下。  X6 c5 T# G! H: @& r* `" e, C2 H
7 d, r8 C2 [. L2 w) v6 D9 p
20160626091256735.png
7 {6 c( B# _7 }
Ports是与系统息息相关的端口配置文件。
( w" W! F0 o4 w3 x: [3 A7 `) H( M5 K5 ]5 O2 f+ `9 e
Source这个不用说了,就是OS全部文件。
2 [& Y( b# |: m! _' X2 A2 X( u- ?6 O
拷贝整个uCOS-II文件夹(里面)到我们工程。
2 ?4 V8 w3 O9 F9 `0 d; j$ W. @1 A& M: t- s6 H* B. r0 k8 g
3.提取ST标准外设库有用的文件
/ J" x+ i! H$ e) E
; ^0 O8 N) \3 V0 A7 s( a! rMicrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。3 {5 U; n+ n& Z' W. M$ s. q* V. y

0 O5 ~% k8 s% v  G3 ^4 H提取的文件过程我不在描述,最后我会提供下载链接供大家下载。" ~0 V, P  D& m$ u

4 y6 C7 r; |5 A' l+ Q$ b1 g( q+ Y
20160626091356469.png
: p( y3 q0 u1 f; B( F5 R, m
4.整合提取的文件
# i' ?4 `! N" E2 L5 {) l/ {0 ~, ]4 m, A  x
Micrium官网下载的文件 + ST下载标准外设库 + 提取整合8 [) h4 c4 j/ W6 G+ b
/ i' O) Q% ]  m/ ~
= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:
1 q6 V1 e4 T9 U/ ?' d  n1 f7 R' i) N
' R6 [9 Z! `% f- e2 l! `
Ⅴ、移植过程(新建工程及文件): T! @) `1 i; W2 d  Z  m+ g1 ~
4 {$ N7 v' ~9 S- P
1.新建工程2 n! u* D0 e  y- O: n& u- \: M; r

, v0 S) i: l3 }# h配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。
& ?" ~- K- q' J- D
% r/ v4 @! s! r" S1 X& H如下动画:/ d8 n2 W. w, E

" N6 \3 ]& c+ T8 o+ B  o2.新建、修改文件& v( q9 H: S5 h3 [5 w
! F) a8 c: t3 r. z' L- X/ Q* u
工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。: O9 v, T- _) g; L7 f+ |  A

8 Q3 [; m" g& X2 d% t3 J; r3 A8 c. Z我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。
* I* X( \5 E. b' P, {6 @4 ^( m- x0 ^6 \* b, L
360云盘下载(新建工程、文件):
& s6 g9 O% S0 \+ F/ |! a0 d$ }
1 C7 o# G3 A- T+ @1 d2 ahttps://yunpan.cn/cRpHh6CTYQavV  访问密码 cc344 b" j* ^# A  i6 q

- m- |. P$ B9 Q1 o' LⅥ、说明
2 U6 h5 J6 ?( g1 W8 P8 K9 U3 Y  k! b  Y/ l3 O  R0 ~
当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。
& F1 l! W! Q- H
* K7 E% }+ H* K4 A! ~
( ]4 H7 [! D4 ~. n, A/ ]/ O. r  N9 i. u/ P5 s3 [
20160626091419641.gif
收藏 评论0 发布时间:2021-11-29 22:30

举报

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