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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述' @! J' o* p! Z
& F+ [3 z" }* h/ g6 i+ B# w6 E& i1 Z
该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:# A) g% S$ c( [$ N% H. q

1 V. l# @& }3 h  u  k5 }系统平台:µC/OS-II  (最新V2.92版)# C( ~. u  x0 v3 Z7 o! \

# K& y  F, x$ p8 [. T& ^" i硬件平台:STM32F1   (适合F1所以系列)
# L# j) \) K9 J' }+ X) W/ P6 l) z) ^$ ?. t! w
开发平台:Keil(MDK-ARM) V5
+ i* }# w5 S1 b& O0 {: d4 G' ~/ k% p7 s+ o% F* k8 W, w' }; E0 _& {
1.为什么是µC/OS-II?
) g3 z0 D$ j2 l
, U  ]! W& }( K! h% Z' P原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。
" U5 `9 \9 T" l0 h9 Q- N# m7 @: r0 `: L: K
2.为什么是STM32F1?2 m! f9 f* A' ^/ Z6 A" i7 S; f
7 T! F2 t, ~" G2 O
硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。
  m( N  [: G# @) Z
; I8 L- x) \( F$ ~6 }但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。' d% r0 n) F' o
3 h* ]) S& h9 ?; `0 r8 }
还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。
. f) s) y  i4 @; s  N9 M5 P+ y: ?3 N4 y+ r; w
3.为什么是MDK-ARM V5?/ G. ^' p) ?! P9 T( `

! b; i1 {0 t+ h4 a+ n1 |; P这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。( z# w$ X+ P8 z! S

4 i7 }% v9 s1 T4 c: v" ~. j3 ?+ LⅡ、关于µC/OS' k$ s4 }+ M2 A* I$ E
2 ?2 T: j& E+ ?  ?; g' w0 o
µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。% ]# {: |6 R; m1 o- U5 [/ z6 P
0 j; g" V2 k( }0 z9 b
µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。
% t+ b) w6 b" D: u
! a" G. p: f" _' z, ~4 r6 @
20160626091101687.png
3 B# _& B+ T8 d$ t" G

- b- `$ m+ x* P; Q6 _Ⅲ、准备工作
* D3 `# o, M# h5 W. |8 |6 L& J( Q5 D' ]
1.µC/OS软件工程包下载+ U) o- b2 A. J# E) C0 o% ]
Micrium官网下载流程图:
4 G, b! p7 {& S
" ~4 J* B3 s1 M
20160626091127515.gif

1 J( x1 X1 G# _
. V$ c% `8 `! x  P/ p
2 \% I0 @# ~, j, }3 \! c4 N2.ST标准外设库
7 T" |9 c2 I. L
$ h) Y( W# s& B2 E* C$ ~9 zMicrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。
  _$ r7 \9 J9 rST官网下载流程图:& U  b: P+ f. Y% d) F9 r
, i8 T; s8 U, b6 X* r
20160626091146781.gif
$ t* w7 G  D; S
$ E  }% R/ g% K1 D, `, Z/ S* h

/ R- V0 `: l/ R2 d/ R3 O, i3.MDK-ARM下载与安装' e+ I' c! F) L4 a# f! A6 i9 M

1 n$ G' D+ L* AⅣ、移植过程(文件描述与提取): B- ?" S5 K0 g5 }) q0 h3 r8 L

7 F+ t( i! b$ R0 d! H4 V1.软件工程文件夹描述
4 B1 z$ o$ ?3 _3 U* r" g' x
! t, i/ b. N# Y5 p& r: \: j3 b# X( o从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。
! S% ]6 |+ N4 U' e" L! s# g- h
" f0 a- O- M, X1 v7 I8 M( A
20160626091235889.png
$ u& h8 L& ^2 s% I5 W; s
EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。
$ f* ?- V( h! j; k* d/ }, ]" x2 O& \( z# E3 K  a. y' A  Z
uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。3 n' \, k: a5 u0 q
; Y% w* Z6 U% e
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。& J9 \9 Z2 p' t, ?( s1 Z

8 O8 K; c7 [# w# @4 KuCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。0 ^" M  C  |, @0 Y8 N, W
, |' N+ P0 H9 W+ f  I6 D5 B5 }
2.提取工程中有用的文件5 x4 p. Q$ S! }8 o  k# ~
0 Y, l1 @9 Q0 X2 d5 v
我们主要提取EvalBoards和uCOS-II下文件。& W8 c, j' F9 f2 `
" v9 F- W( b4 ~" Z( K9 Q
20160626091245156.png
8 |3 U& E$ Y9 ^/ M# V/ T  Q
app_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。5 b7 r+ J4 E: r/ |5 U' f9 C" h

' J4 H6 [' U4 ?os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。
$ f* E+ W! H0 _( m0 j0 F) |* w# J( n; `7 N
将这两个文件提取至我们自己新建工程app文件夹下。
$ b! Q; |, K5 ~, g9 ^$ M, s9 ]% W" _5 `/ G6 J
20160626091256735.png
* U& ?! U5 ?* ]+ q, G
Ports是与系统息息相关的端口配置文件。
" u1 n% Y! b# ^# r  K5 w+ E" D# h# p+ W9 N9 v( m
Source这个不用说了,就是OS全部文件。
+ E% G  L; x) Z9 P$ b
' c9 G, P& H  s+ f拷贝整个uCOS-II文件夹(里面)到我们工程。8 M) m8 r! J: u$ g% v

; {1 c. N2 R/ H2 {" Q3.提取ST标准外设库有用的文件) {& u% _4 Q  G

' R$ Q& @5 e) B) F: mMicrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。/ I+ P( f: r) |9 \2 P
, _) C2 ]- z6 \% g
提取的文件过程我不在描述,最后我会提供下载链接供大家下载。/ M) H3 D! f5 ~$ |
# Z& \5 i" Q) J& _  a: M( J# J
20160626091356469.png
- N" L+ Z. n3 g
4.整合提取的文件1 ^5 t. H5 q8 e( X9 Y3 m0 S

  H4 I6 M) M/ D7 pMicrium官网下载的文件 + ST下载标准外设库 + 提取整合
+ w" [( n" d  O3 ^: x6 y
) G* b3 w& ^# P# H$ o= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:4 D4 r+ D- Q3 z: t) g3 W
) g2 T( [0 T+ v6 L/ z5 E# L- v

9 ]' m8 f! v8 v. f- NⅤ、移植过程(新建工程及文件)
8 m8 r0 J' C* N* G" w5 R$ X- s4 V, O- \5 n# d" R
1.新建工程) v  f0 f' Q2 y/ X/ v6 H
) D8 N4 j" \6 l8 T6 ^
配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。
0 F4 ^( t' O" w4 f
' }. f% A* X, c/ W, r如下动画:  N0 L7 f! |6 r* U' G

# f: P. |+ s) a+ v$ B. S4 h2 I; M) q; i- k2.新建、修改文件$ \  N$ O0 J2 J( ?( K- t
- ^6 O: V6 O/ h" ?3 Y1 ~2 F5 I
工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。
9 N* A# \: o. W: ]# ^9 R6 p( g4 v6 a; v
我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。" @+ y  s( P7 C- [: |4 }
" s, L. R1 r. ?+ U$ g3 o3 t
360云盘下载(新建工程、文件):
: a/ D2 a5 \8 Q, z8 O
6 t; G) V1 y1 ^3 X- y& Bhttps://yunpan.cn/cRpHh6CTYQavV  访问密码 cc34
8 X9 c3 O4 T9 B" C- B$ I0 n
+ s. |7 F- J- K, P+ m. V' D: MⅥ、说明
$ b: g8 A, {; F9 p' k% r4 L; _: _1 W3 |; v0 D
当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。% e/ `9 R/ D# G. ]4 ?; Z) Y
3 s8 w; ^, N; t% ?9 t$ C

' v2 Q& ^  Z( f$ D7 T- A8 ]' ~, s+ Y9 Y" `( N) J
20160626091419641.gif
收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版