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

安富莱F429之RTX系统及其所有中间件性能展示,效果杠杠的

[复制链接]
baiyongbin2009 发布时间:2017-3-23 14:15
本帖最后由 baiyongbin2009 于 2017-3-23 14:34 编辑
/ ]: T; o1 H; l5 Y! o
2 X- ~: b, E, h0 P2 i+ N
安富莱F429之RTX系统及其所有中间件性能展示,效果杠杠的

& Z5 W0 S- v( l" ^7 `' E2 h# Z7 E
说明:
: W# d; L0 ~% u0.  首先感谢大家对我们安富莱电子的支持。* t5 i/ C+ [. v( }
1.  制作这个综合Demo的意义在哪里:
  {; d$ o4 m, D" i+ P我们之前做的几百个例子中很少有突出娱乐性的,这次来一发,突出娱乐性,实战性为辅,什么视频播放器,音频播放器,收音机,录音机,文本阅读等,全部整上,增加板子的可玩性。虽然是娱乐性项目,但是很多地方极具参考价值,希望能够在实际项目中帮到大家(后面新版数字信号处理教程,还会发布一个以数字信号处理和示波器为框架的实战性工程)。
1 G2 {$ ~' k, V4 \& ~( J(1) 本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件命名,程序框架,注释等都比较规范,大家阅读或者移植都会比较方便。另外,阅读代码时,务必将编辑器的缩进参数和TAB设置为4来阅读本文件,否则显示不整齐。, c7 U* ~4 |, o2 n0 U% c
(2). 总共创建了15个任务,这15个任务的框架设计是整个项目最重要的,因为你的框架设计直接决定了你的工程稳定性。这次在RTOS的多任务架构设计上花了很多的心思,我们要充分发挥多任务的特性和实时性,并不是加上了OS,设计的代码还跟裸机一样,程序中N多标志变量,N多等待标志完成,N多全局变量。这次的综合Demo在这方面还是极具参考价值的,当前这个框架已经测试相对比较稳定。
% }; x$ B' L+ }, a* Y; R(3). GUI的框架设计也比较清晰,GUI任务的大循环while里面仅有一个GUI_Delay函数,所有的应用都是基于对话框或者窗口实现,无论是工程以后的升级维护,错误排查还是实现复杂的GUI综合,这种方式都极其方便管理,实际项目中强烈推荐这种方式。
: Y( M1 a( l; [3 m+ H(4). TCPnet网络协议栈,采用的事件触发方式,有效降低CPU利用率,实际项目中推荐这种方式。基于这种框架做的网络综合测试,已经连续稳定运行快6个月。另外,底层已经做了专门处理,网线可以随意插拔,都可以正确获取新的IP地址。
3 s* z9 u5 b# p- P9 y! }' j9 j5 x6 j- m(5). 这次Web网页提供的功能还是极具项目实用价值的,提供了文件的远程下载和上传功能,实际项目远程代码升级,数据采集文件的上传全靠他了。远程的设备控制,设备数据的显示更新,都做了支持,而且是通过Ajax实现网页的局部刷新,保证页面刷新的流畅,都是极具参考价值的。如果你有固定IP或者使用花生壳之类的DDNS,还可以实现外网的访问控制。总的来讲,对于我们嵌入式应用,能上传和下载文件,能够上传数据并实时更新,且可以实现远程控制就足够了。
4 e( i' g$ v( W8 F* Y% m(6). 文件系统RL-FlashFS在多任务性能的表现极佳,详情看Web部分视频演示和视频播放器,都是RL-FlashFS的多任务实时操作。
' \* N2 q# e( v7 E: R(7). 为SD卡插拔和网线插拔的底层增加中断检测方式,效率更高。8 L1 Z) G- Z! e/ ~
(8). Modbus是采用我们自己制作的主站和从站,这次是为其增加了OS的支持。: E: C# ~5 E8 X5 |3 b# X& d1 N; v8 N
(9). 如何通过GUI做控制类界面,有时候为了图省事,我们直接把外设功能的实现丢在emWin的回调消息里面,这样设计是极其不合理的,非常影响重要功能的实时性,比如这次的播放器设计就改变了这种方式,为音乐播放开启一个高优先级任务,DMA中断给这个任务发消息,emWin任务也给这个任务发消息来实现音乐播放控制。% i. `8 @1 {# `3 _% X: \. a' H
(10). GUI界面的快速刷新和切换方法。
  i+ R/ O5 A" P6 [* F( _(11). Modbus或者CAN的总线采集到数据后,GUI界面实时更新数据的方式。
8 z! {, P6 a* Y+ s" M: J% A2 X(12). 当前这个综合Demo的框架已经测试的相对比较稳定,如果大家要在这个框架上面制作其它功能,仅需把我们实现的APP替换掉即可,框架还可以继续使用。即使切换到uCOS-III,FreeRTOS或者其它RTOS上面,框架还是这个框架,框架这个东西是通用的。
3 a; a# l. r% G9 C0 u, W7 I, c, }1 k! b4 o! O6 W
4 N% W' }# f# A5 g3 P5 ~
总之,还是那句话,我们要充分发挥RTOS的多任务特性和实时性,并特别注重框架设计。7 N4 ^4 j' ?, G/ \3 `0 A
/ H% ~. }1 N5 v, d( W. [; r

. J' D4 b( r& }6 R8 @4 a6 c0 o  V) R2.  注意事项(重要,必读):
4 I" l4 c, U4 x9 ~(1). 综合demo的RTX源码以及所有中间都是来自MDK4.74,所以这个综合程序仅支持MDK4.74,其余版本不支持。
: E$ ~- D0 k  C# |- \- L(2). 测试此例子前,务必将我们提供的文件夹“SD卡根目录存放的四个测试文件夹”里面的四个文件夹复制粘贴到SD卡根目录下。另外,使用的文件系统RL-FlashFS仅支持ASCII文件名,切不要使用中文。/ N/ C' F. j  Y8 C/ c
(3). 首次将程序下载到板子上,将板子断电10秒以上,然后重新上电使用,防止立即下载进去就运行的时候RTC时钟不走和屏幕闪烁两个问题,以后使用没有此限制,可以随意开关电源。9 e. U0 Q+ y4 L. c: _- ^
(4). 板子左下角J12和J13的跳线帽设置,切不可将PA11和PA12导通,否则USB通信不正常,直接拔掉跳线帽即可,或者短接到另外两个引脚都是可以的。
0 @8 Z0 I( B- q(5). 如果测试网络的话,务必将网线插到能够联网的路由器或者交换机上,否则好些功能无法展示。
7 g2 P! I. \' I" ](6). 网口用的是DM9161,不是DM9000,USB口用的是MicroUSB接口,即小口。
+ h  d, I  x) ]" r1 G(7). CAN总线是用的CAN2,由于CAN2的一个引脚跟网络PHY芯片的一个引脚有复用,所有不做CAN2的功能展示了,但是功能还在。如果大家要测试的话,将源代码里面网络任务AppTaskTCPTimer的创建注释掉即可。; O& [" N( o* m( p! H7 `; ~+ x
(8). 由于PHY芯片要初始化一段时间,为了防止其占用时间过长,上电后网络任务的优先级仅比统计任务高,所以上电后,有一段时间内的CPU利用率是0.0%,PHY初始化完成后就正常了。另外,上电前未插入网线的话,这个时间比较插入网线的时间稍长。
! y7 v, @9 c& a, `/ M/ T" k(9). 此综合Demo仅支持800*480分辨率,其余分辨率的显示屏不再制作了。
* Z5 W9 V! ^( V5 k( ?1 W6 S% A(10). 电容屏无需校准,电阻屏的校准看新版emWin教程的第66章说明。
9 U9 T6 ?* v5 K2 l; k(11). 主界面滑动操作的时候,最好滑动图标以外的区域,图标的区域也可以滑动,但是效果不够完美。
) r0 T0 @2 T: |2 K% \$ d(12). 当前仅做了RTX操作系统版本,后续如果有精力的话,会推出uCOS-III和FreeRTOS版本。
- a8 y- N. t" z! r0 _1 V8 z4 `  c9 R% N6 N. G
$ D( r) V8 r* s$ c9 S+ M7 R
3.  版本信息:3 f' R9 L0 n: g) X
RTOS:           RL-RTX       V4.741 ^9 F, ~! U& o; w" Y- V) H
File System:   RL-FlashFS   V4.74& z: j- s4 Y+ a# ?; t% C: R
TCP/IP:         RL-TCPnet   V4.74
) o! d& L) j2 l7 KUSB:             RL-USB       V4.749 c+ U; P0 }0 O0 p
CAN:             RL-CAN       V4.74" I: j  g2 w9 ~" S9 U% `
GUI:             emWin        V5.363 v! X8 x6 h% y" h
Modbus:     Designed by armfly3 A( o; J/ W& d' k9 h( _# p; V
, R7 e7 I( h7 ]( b( [
! _! z7 M/ v$ r8 `% ^8 j- t: S% w
4.  15个任务优先级配置& z4 t0 j1 }- C% e
(1). os_idle_demon,      优先级0:系统空闲任务。' P1 s0 Q! U% @/ E0 w; [
(2). AppTaskStatistic        优先级1:CPU利用率检测。0 K1 H3 Z% A6 K9 w4 E
(3). AppTaskGUI,          优先级3:GUI主任务。% \/ A# H7 T, o
(4). AppTaskTCPMain,    优先级4:TCPnet网络任务。
9 j1 @, p* W; @8 x- w( e6 U2 A8 E(5). AppTaskUserIF,       优先级5:按键消息处理任务。
' l: X7 {5 O/ ]# {(6). AppTaskMsgPro,      优先级6:主要用于截图任务。( O) J! n: L7 \( N( t) {% }
(7). AppTaskStart,         优先级7:启动任务。. Z0 C% ^4 H- y% R0 w* q- [% g
(8). AppTaskCAN,          优先级8:CAN总线任务。% N! a3 @" m. C) a3 G
(9). AppTaskModbus,     优先级9:Modbus任务。4 e/ D$ j2 ^, ]4 r
(10). AppTaskUSB,        优先级10:USB任务,
/ l# @9 y5 q; Q# v0 G" w' \(11). AppTaskMusic,      优先级11:音乐任务,用于音乐播放器,视频播放器,录音机和收音机处理。0 A% Y$ [) x+ j$ M- w
(12). AppTaskPinDetect, 优先级12:SD卡插拔检测任务。' Z5 a. j0 p' r" I$ ~- G5 ^
(13). AppTaskTCPTimer, 优先级13:TCPnet网络定时更新任务。
4 k/ d# _5 ]2 }! P: [; V, f1 T* g  USB在运行的过程中会创建2两个任务. r3 k3 A0 h6 K9 j. y3 m' z
(14). USBD_RTX_EndPoint0                   优先级2:USB设备端点0任务。# ~, G  p) N8 e8 d. G, w
(15). USBD_RTX_MSC_EP_BULK_Event    优先级2:USB BULK数据传输任务。& J# R* U) K6 H% C
2 b: ^( R! S2 s, t4 N  r
% D3 C: y& f9 I# Q$ P
5.  15个中断安排  F0 r+ ]; E' @9 y  p
NVIC优先级分组采用4,仅抢占优先级,范围0-15。* M7 d% d0 W6 O( U8 m( T  W) r
LTDC中断,                 抢占优先级 01 `* k$ m" K# V+ A, z3 P1 N
ETH以太网中断,         抢占优先级 0' A% S+ _/ D2 |9 p9 ]
USB FS中断,              抢占优先级 0& G9 S8 q/ B- ~: n( @6 B/ r! O- z
CAN2 TX中断,            抢占优先级 1
  H5 F/ `1 G- L" P; S* f2 a# y! TCAN2 RX0中断,          抢占优先级 14 m/ S+ O; h4 u3 H6 I' N
DMA2_Steam5中断,    抢占优先级 1  ~2 X) j* L9 f1 V
DMA2_Steam1中断,    抢占优先级 1
  x6 |" n6 G! U8 p0 bEXTI6中断,               抢占优先级 1) g. {. }) C  W+ t+ v
USART3中断,            抢占优先级 2
7 q4 \7 @1 A8 E+ E/ c* xEXTI2中断,               抢占优先级 2: Q4 _" g5 C8 y
TIM2中断,                抢占优先级 4; T$ H* c  L" i  ]4 }
USART1中断,            抢占优先级 135 Q; B6 H& ?1 x$ [/ g: V
RTC Alarm中断,         抢占优先级 13- A3 }1 e3 j( i5 q/ }
SVC中断,                  抢占优先级 145 I. u  o2 P% U8 j& \
Systick中断,              抢占优先级 15/ I0 G1 b+ A( c
PendSV中断,            抢占优先级 15
; k0 `/ l( g% {5 R
  x/ i$ ]  {3 @1 Y$ ~6 H' `& m

' }; G1 R( K# d6.  内存安排+ {8 C/ I  D# I( S! e
内部SRAM , CCM SRAM和SDRAM安排。2 e8 }( H8 q- [3 p
内部192KB SRAM       :80KB用于动态内存分配,其余用于任务堆栈,系统堆栈,文件系统,网络协议栈等。
. h8 H' V  i: J, w+ |: p0 M/ ^6 I内部64KB CCM SRAM  :用于视频播放器时,JPEG解码。
: ]. _, \0 i/ {% J! O外部16MB SDRAM      :前4MB用于TFT显存。
$ [! P6 T) O& O4 T外部16MB SDRAM      :后12MB用于emWin动态内存。
3 B# @; ?, V# w! F+ p5 D
8 Q  P  C$ o1 ^0 ^+ n
* ~/ U( u" l% Q& @; t" k
7. RTX调试组件效果展示
5 T2 H( ], ^. B, ~8 {
0.jpg

, u% d- a8 o, y* ]: o$ |
8. 开启MDK4.74最高的3级优化,同时开启相当给力的时间优化
8 S. B: B& k7 x7 j3 O+ p' h7 x/ E( [
00.jpg

$ I0 I+ w$ U! X2 x% K ' P9 F7 Y8 _' z1 \) o- H
*************************************************************************************: Z9 l+ d* f5 w! I7 {8 i
程序下载:. B( Z  J6 G4 ~. b8 x6 A
百度云下载链接:  https://pan.baidu.com/s/1eR16mbw  密码: ufkd
$ K* J* x  g! k  x) P6 F

% q4 h; j* j7 f, `论坛下载: 基于RTX emWin FlashFS USB TCPnet CAN Modbus的综合Demo.rar (13.91 MB, 下载次数: 277)
赞 1 收藏 3 评论6 发布时间:2017-3-23 14:15

举报

6个回答
Stm32McuLover 回答时间:2017-3-23 20:21:27
支持
斜阳 回答时间:2017-3-23 20:32:14
斜阳前来占座
Paderboy 回答时间:2017-3-23 21:43:44
学习。。。
翱翔云端的鸟 回答时间:2017-3-23 22:10:23
顶!硬汉厉害了!
hpdell 回答时间:2017-3-24 10:00:49

! N. z& X( r/ m8 U7 G4 K* [顶!硬汉厉害了!
1235555555 回答时间:2018-3-2 17:31:21
厉害了!!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版