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

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

[复制链接]
STMCU小助手 发布时间:2021-11-29 22:30
Ⅰ、概述# d, Y4 M6 l7 ]- a  N( U" B

* D7 D6 q$ X) ?5 h% t9 |该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC/OS嵌入式操作系统。UCOS移植相关平台:  G8 a7 S1 I4 m. _+ Z: a" G+ c

/ U0 E* l2 [% U系统平台:µC/OS-II  (最新V2.92版)
. P1 @* F/ S3 L
7 w+ }4 d$ g: D+ l2 Z. f; A8 F硬件平台:STM32F1   (适合F1所以系列)
, a: Q, {# e2 v  I: u8 m( b/ D! D; E/ k" @
开发平台:Keil(MDK-ARM) V5
  H# T) s' }( B
7 L' [' H3 S& Z+ u+ W* v: X7 Z% E1.为什么是µC/OS-II?
0 _4 l/ F( J; w- H
! V9 `; E) O, d, Y$ a9 W原因在于µC/OS-II是一个比较成熟、稳定的系统,与µC/OS-III比较有些机制相对简单很多。但你掌握了µC/OS-II,µC/OS-III很容易就理解了。
& }9 l& i, s( q0 f1 D6 \* g0 b( Q4 J0 r1 V- `/ d  i3 L
2.为什么是STM32F1?
  N% I9 _8 P) ?) R. P
4 `+ A2 F) r5 ]( z$ x/ ]" d硬件平台是在移植的过程中比较重要的一点,也就是说,不同的硬件平台,移植过程中的端口(uCOS-II\Ports下源文件)存在一定的差异性。2 _$ F8 l) p8 U8 ]2 T( L+ x+ X
9 z% A1 _. m& W, S0 h) }) J
但是同一内核的芯片,在系统移植的过程中基本上类似,也就是说,你掌握这一种内核(如:Cortex-M3),你移植相关的芯片就很容易了。7 J8 v$ Y. z0 v$ y
0 f+ o2 j0 t1 S
还有就是,你掌握了移植的原理,不管在什么芯片上移植你都会觉得不是那么难,笔者在51、430、ST等众多芯片上移植过µC/OS,问题都不是很大,只要用心,相信都会没问题。
1 o9 O1 ~0 ~6 O7 n7 c) w8 A1 y3 N0 T8 P" [4 o
3.为什么是MDK-ARM V5?- C; @& {3 a' G* L2 X/ Y. c: `
3 O7 I2 A1 L1 t% ]# x) s
这里没什么好说的,个人爱好,喜欢使用最新的开发平台。其他平台(如:IAR)与系统软件关联性不是很大,你也可以试着用其他平台进行移植。0 d1 q4 d4 x* w. J" A) ~5 n
4 J2 Z0 _6 Q; l0 n, a
Ⅱ、关于µC/OS$ u0 H) V3 z4 ?8 O8 Q* |* J

6 m" ?) q$ v! ?2 qµC/OS-II是Micrium公司开发的一套嵌入式实时操作系统,应用非常广泛(工业、医疗、航天等)。µC/OS-II具有裁剪性(配置资源多少)和高度的移植性,所以很受嵌入式开发工程师的追捧。
* o' D& a0 ^" H9 P# k  }- N" |  g0 N1 f: V$ U$ ]9 c
µC/OS总共有三大版本(μCOS、μCOS-II和μCOS-III),这三个版本也存在很多差异,该文主要针对初学者,因此围绕µC/OS-II来讲解。它们之间的差异对比可以参看相关文档(uCOS-III用户指导手册)。
2 j3 h; X* X( Z2 O
7 k( O" ?2 R* M
20160626091101687.png
6 Z/ s0 t3 O$ m6 G
# I( u$ E. c" `# a- c! u* }4 C
Ⅲ、准备工作
# k; z( @  x+ c$ O- w
4 r; H3 ^# l5 S* p6 C1.µC/OS软件工程包下载7 v2 o. m* z  N* `% j8 o
Micrium官网下载流程图:
( r2 k" O4 c) z5 q$ N0 q$ A& U( W- f# Z9 f
20160626091127515.gif
/ A! n! ^& D! Q/ @! X

* T2 Q, y# o4 i- q! t9 s; k$ P" j. k6 l5 q1 B) C
2.ST标准外设库3 r4 c/ v% T% y  a, T
' P) t& ~1 o5 v
Micrium官网下载的软件是使用比较老的ST标准外设库,这里我们下载最新的外设库。
3 u5 |2 V$ O* G, Y+ V/ fST官网下载流程图:
. b& |" J, b/ e! ~4 p7 e' F; ~7 |' U  x/ d% D& A
20160626091146781.gif

& L6 D5 [- k; _
" E0 i/ M* E" z, n1 D4 B. m. [3 w
; J! B9 j1 q! t. Z3.MDK-ARM下载与安装
+ q4 L$ L) t, l% M; W
6 Z6 X/ \: K, R$ c3 T; R9 ~- g" AⅣ、移植过程(文件描述与提取)
) P4 N% b5 N! @: h+ M/ c/ p. C3 z6 K9 D1 \
1.软件工程文件夹描述( K6 L' u# P; v' d

$ t+ z" b- D/ P. c1 L& l% O+ [: l, |从Micrium官网下载的软件工程包解压之后会发现里面有许多源程序文件,其实对于初学者来说,里面有很多文件都不会使用的。这里我们以下载的软件包“Micrium_uC-Eval-STM32F107_uCOS-II.zip”解压来说明一下里面的文件。
3 s7 a$ |- H! d. C
4 v4 u* h' W& A7 O7 r' P
20160626091235889.png
3 d. p' u" n9 @0 n$ C1 {- i
EvalBoards:评估(开发)板相关文件;主要是配置底层和系统,我们会提取部分有效文件。1 v4 Z$ g* B2 Z

: ~1 |: Z0 p1 nuC-CPU:CPU相关文件;我们使用ST标准外设库配置一些模块,不使用该文件夹下文件。
3 }1 \& o* l# q" y4 j$ Z) X! M% N6 ~' r4 m! E2 T: e
uC-LIB:这个是Micrium官方的库,初学者这里也不使用。
# f) r: ]6 o0 q5 Z8 T; f! q( m! X2 t
uCOS-II:这个文件夹才是关键,我们移植的内容基本上就是这里的文件。5 H( T+ W% E9 R

1 s# k/ L4 Q) I/ L  ~2.提取工程中有用的文件
" F) o% y2 W! B; ^4 l6 D( a+ s* p0 J0 X* B- g
我们主要提取EvalBoards和uCOS-II下文件。
& G! z1 ~  h" m: Z* s8 r5 Z
( W5 C" I' `* r; `/ z- t
20160626091245156.png

9 y* C$ y8 N( F* L9 o# Napp_cfg.h是应用配置的文件(如:任务优先级、堆栈大小等)。2 {& O# ?- c/ {8 p4 W

( {* x/ A4 I6 ]7 d8 M. oos_cfg.h是系统配置的文件(使能相应功能函数,也就是所谓的裁剪系统)。0 W2 p6 J' @" _( }
" \7 j: b) l: c" E
将这两个文件提取至我们自己新建工程app文件夹下。+ M/ w8 v- Y* f* h/ f

- y* C& v3 N4 }3 W" L; u- d: L7 v
20160626091256735.png

- l* S( q6 b2 `' h$ E0 n2 c: M4 wPorts是与系统息息相关的端口配置文件。
! N# K3 _3 Y$ k6 y1 t* B* J* Q: I8 `9 X
Source这个不用说了,就是OS全部文件。
' W# _+ a( Z: _: m
, T: G, c# g( G0 ^3 y" e, f# M# g拷贝整个uCOS-II文件夹(里面)到我们工程。
8 Z+ u7 \- ^# Q8 ]- z+ D; N% \9 C- Y7 d" G; ]) }5 v
3.提取ST标准外设库有用的文件( G, V# j0 Z+ K: {- `- O2 K( _8 F6 [0 V

1 w( D4 f/ o6 C+ W  L$ JMicrium官网下载的软件工程包也是使用标准外设库建立的工程,但那是老版本的标准外设库,因此,我们需要使用ST官网最新的标准外设库。
2 f' y* `* a; O! e
/ C% `. C* g1 d% i7 K6 b' L提取的文件过程我不在描述,最后我会提供下载链接供大家下载。
# [( r7 y) f9 m$ y% N) c& D
* K% g. q  [) o1 q& R  {  T, t- h
20160626091356469.png

: p. k' A4 g! p: N( a4.整合提取的文件3 N1 r" \% Q9 q1 B5 {9 a1 }

9 ?- n/ |- S! |  fMicrium官网下载的文件 + ST下载标准外设库 + 提取整合
8 V2 Y" y+ ~3 c$ B6 ^$ W! O5 Q! E6 s- u
= UCOS2_STM32F1_ProjectTemplate(提取文件),如下图:
% x$ d; q% }1 \. V. n! ~. {
- I5 F$ q% s, ?) r5 x
/ Q" J4 G% u6 H% N6 q( cⅤ、移植过程(新建工程及文件)! l- J  B2 \) \" ]- T
' q& h; s- h; g* I9 z
1.新建工程
* S8 ?; ?; z5 L3 W9 x/ G" S
; l  f2 R) k0 {0 \; [配置的时候需要将uCOS-II下的文件添加到工程,同时也需要将他们的路径配置好。
" h; Z' b7 G- O) q, D0 o
% Z* b2 A0 Q0 F9 y& z, e如下动画:1 O8 |) b- v! @1 @4 t& h: Y

# j5 y: r/ g* ~2.新建、修改文件* l5 u0 J# T& t/ v  P. L- o

. h7 y: _$ z4 B$ f2 v1 _- D3 ?工程建好之后,还需要新建一些文件(main.c、 bsp.c、 bsp.h、 app_cfg.c、 app_task.c、 app_task.h等)。同时,还需要修改某些文件,修改的这些文件是移植过程的重点,我将在下一篇文章进行总结。- F5 `& G. R7 K, `

% c0 m/ x9 t6 ~  b  W  c* l+ P我将新建好的工程和源代码整理打包供大家下载(注意:没有修改源代码,暂时编译通不过)。
9 S, h, B) b, p# R' s9 ^2 h0 ~- I- N, g7 y. f# n
360云盘下载(新建工程、文件):& N( [, l4 K" Q- f$ \9 |5 G; ~& s% R

, O- Q, T9 A4 O& O* G* i0 ^https://yunpan.cn/cRpHh6CTYQavV  访问密码 cc34
3 W  v# p. j0 H
7 w/ Q) D8 R& b" e7 _" y( {% ?; jⅥ、说明  e7 K/ M5 N" v/ `5 |% B* X# F

- x5 @, M9 j5 h! e8 ^! I# [; Q当你掌握UCOS在一种平台上的移植,其他平台移植原理类似,请不要局限某一平台。: b* v$ F' w- l! u2 y

+ T& `8 F* X2 v* B3 L" f9 ?' B" |3 C8 G, t& h3 V( \6 y: ^
% v0 d( I  |9 c$ a! R: N
20160626091419641.gif
收藏 评论0 发布时间:2021-11-29 22:30

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版