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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述
& V1 ^; ?7 W4 b! n5 u
. e" V, R3 h0 }该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:
0 g! Q  V9 A6 |, i6 X% f: t" ?
1 i2 _$ l& Z3 A系统平台:µC/OS-II  (最新V2.92版)
  G3 \( A3 l6 V5 h6 D4 E. O2 n9 Y6 k" F0 H8 G$ W1 m
硬件平台:STM32F1   (适合F1所以系列)
0 H/ R6 L/ l7 C4 u* @+ b
- ^6 f7 `0 A" Y  z! o开发平台:Keil(MDK-ARM) V5
" }+ B7 @" b! _% Q* v6 n
( K  {3 Z/ Z/ n: _1.为什么是µC/OS-II?
- S( I8 O: Y! y
& u; @/ t; k8 f) y# \) r原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。0 k' l! C( D+ X' B
$ M- q! u& Z7 _7 J- j( \1 H
2.为什么是STM32F1?
4 a; r: g  ]5 k2 W  T: k; h% U8 O) F4 `- ]
硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。7 \$ m/ e' @& @1 a; t
" Y: Y! G, M5 {& B7 o$ B6 X5 k
但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。0 A- i. |) @- @" f; _/ p8 M% o6 i
6 f8 ^2 G" c) M# g+ H! `# |/ Y9 V
还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。
9 C8 `$ H& n! h  o7 @& [) g  w3 J
3.为什么是MDK-ARM V5?
3 g1 X( b# v, L; I& T# A/ [5 e) y4 o$ E! j3 D
这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。
1 a' V6 H, s" }$ L2 E9 d  K5 o1 d/ ?4 S: O+ c! ^
Ⅱ、关于µC/OS
! u/ ]; U' D: [# }+ @$ u. p4 v; c0 m; l  g3 j3 H# c" W5 _
µC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。
! q% i3 ^7 Q4 c: `6 |. v# |4 ?  Z" L- V) ]- i
µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。
! m$ e" d: k, w3 m6 Y$ E2 |4 t5 g4 I9 ?" Q
20160626091101687.png

5 `9 K3 |- |: i: N/ A! D" U- S: \2 ^7 r
Ⅲ、准备工作
; d9 _( w* x+ I  n: G7 @+ D2 x/ d2 H- ?9 R
1.µC/OS软件工程包下载
$ ?  r/ T% {0 I3 m+ }* }Micrium官网下载流程图:" s+ [" ]  e& j4 o
; W0 p( v! a6 q6 S
20160626091127515.gif

  n1 ^& o1 j' u# Z
3 l5 ^8 ~7 D1 {6 E5 U2 A6 a/ Q8 q* k
2.ST标准外设库- J# N) H3 u6 T8 r0 N
9 Z* `6 m" h2 D1 D9 T5 H* x; t4 x
Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。* b1 V2 t) H# l- M3 ^( u
ST官网下载流程图:
* S4 b( D) V: Y# d8 D/ q  K2 f, H+ p
20160626091146781.gif
& R' O0 }& h* ~! M/ P4 q

$ E& v9 D5 h6 e( a/ X
+ [. V+ N( Y/ y- t9 Y3.MDK-ARM下载与安装
* @% X* V- {% N" q2 [
' m9 c7 e3 D: }% o3 jⅣ、移植过程(文件描述与提取)
4 D1 B. ?7 y; L2 v! g- L( I+ x2 P4 ^" B# z3 t5 B* w( T5 Z
1.软件工程文件夹描述$ Y9 W: c. y$ P# `

# p$ A1 V( X; E: J7 `从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。
, Y( W" \6 B* h) v: o% p" P  `) T; w8 \
20160626091235889.png

* _# s1 a$ @6 p) E0 sEvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。& u+ G, K* I7 R: M( U  E$ m& T
, D- H1 e$ Z* U1 W8 ]# r
uC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。/ M# I1 r6 }" W+ p5 w* `4 Q; `
5 f/ Z$ O; P6 Z
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。
. _8 p$ ^. `9 r% M3 s
5 n# P) y" G# z! i+ wuCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。
, a1 Q/ x9 d6 f- |7 Y6 P. i' v# r- f1 Y3 w
2.提取工程中有用的文件7 l! N9 n& X4 B

0 n- O7 c' ^% x3 B我们主要提取EvalBoards和uCOS-II下文件。" `/ c+ @/ n1 w: g
$ M1 a$ G! `& f+ A+ P& n0 o6 L
20160626091245156.png

% C6 p/ |- k7 B" uapp_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。
  b- L0 S9 D3 X3 `3 H/ c7 V& c  d/ t0 |+ `- E- ^2 f
os_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。; k1 u% ?+ r, B+ J/ e( S
3 Y; @& K5 p+ o, d
将这两个文件提取至我们自己新建工程app文件夹下。
9 l1 I7 j! ?2 P) e; u
; F  G+ p4 S0 h, O/ o) ^& u
20160626091256735.png
* G. \6 D. H0 y& p
Ports是与系统息息相关的端口配置文件。
. S) p8 \! U; I' R' i% S
+ x  w8 n; L+ q8 O' o& ESource这个不用说了,就是OS全部文件。! u: _7 F& T! s# x& b, m3 I- c6 O

& K0 _& d$ X' f* t% c' C拷贝整个uCOS-II文件夹(里面)到我们工程。% I# q. m+ V& s  ^' t" b+ L
. Z1 h" I( X# Y6 i$ l% n' q
3.提取ST标准外设库有用的文件% }; M1 R$ |$ K+ E
7 O0 s% I& y5 t) @9 d& m  }
Micrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。
' g7 y& b; q6 U6 G- _5 R" G) Z% H, D/ R7 u7 R5 w
提取的文件过程我不在描述,最后我会提供下载链接供大家下载。
  R) Y$ Y) Q% ]; {" I/ x
7 d; y5 }1 e+ \3 w" K6 J; r+ s5 n3 K, ~
20160626091356469.png
' H2 ^( c  }6 |: L6 G! o5 A5 d! E
4.整合提取的文件" P1 M! K$ W) U) V3 N  U
; |3 p2 q* x6 w- S4 H. v; S( M
Micrium官网下载的文件 + ST下载标准外设库 + 提取整合
' w7 F3 }( ?! h; F* ^# j2 h7 d% S" Y  y" K' U# ^& a
= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:
7 \6 p" w5 d! ^1 [/ I" P5 O! e8 k# K
& t4 k+ Y8 L8 ]0 J. L# p3 n4 ?  k* Z/ t3 u
Ⅴ、移植过程(新建工程及文件)  @5 Z! ]: v2 y' K# s, R( ~

+ F1 S2 @  }! z" U$ ~* y" x1.新建工程
% P8 o' t+ I1 N7 Y1 }
* [& f* m. C, b( p配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。
  l! G* G" G( `
0 r! ]- ~( ?8 j3 @0 }  \  B如下动画:6 R; k1 R8 V4 Z! t( `

% V' R3 f. }( _2.新建、修改文件
2 P; _) x9 `7 y1 C5 N9 M5 c' W2 V! S; e9 K9 G
工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。
* S$ E  m3 g7 m5 V( g) x
, {* ?5 t9 q5 A2 q; Q0 z( p我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。4 ]/ F9 k! c, d# J

5 Y/ ^2 p# @8 t360云盘下载(新建工程、文件):
8 s% P5 u- Y% [* a6 ^% x
; q0 p! o; y! A3 S8 O) @# Z' d% whttps://yunpan.cn/cRpHh6CTYQavV  访问密码 cc342 s. v+ N, D! F  u! F/ y3 g
2 e" q8 j# x& N5 {4 w* w
Ⅵ、说明
2 h! K+ j+ u% k1 Q" j/ Y4 Y
% \! r5 F8 J5 k- G- @9 c7 u6 C当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。
8 j) h* ?3 f: D/ B3 h5 v5 u0 }8 u: q) I3 @8 T

6 V- ~5 }" B" n; r/ o# W. {. v; x4 s
  P2 J# W6 H4 G: I0 {% u
20160626091419641.gif
收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答

所属标签

相似技术帖

官网相关资源

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