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

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

[复制链接]
baiyongbin2009 发布时间:2017-3-23 14:15
本帖最后由 baiyongbin2009 于 2017-3-23 14:34 编辑 ( k" n. ?5 W. W& S
  {# S( V9 r0 B% ~7 w
安富莱F429之RTX系统及其所有中间件性能展示,效果杠杠的

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

0 U0 U4 R/ l4 i6 V2.  注意事项(重要,必读):7 o% ]  M7 y2 U& }8 I! z
(1). 综合demo的RTX源码以及所有中间都是来自MDK4.74,所以这个综合程序仅支持MDK4.74,其余版本不支持。/ Z( S- w8 I: o
(2). 测试此例子前,务必将我们提供的文件夹“SD卡根目录存放的四个测试文件夹”里面的四个文件夹复制粘贴到SD卡根目录下。另外,使用的文件系统RL-FlashFS仅支持ASCII文件名,切不要使用中文。- g5 |# v9 ~! E  o
(3). 首次将程序下载到板子上,将板子断电10秒以上,然后重新上电使用,防止立即下载进去就运行的时候RTC时钟不走和屏幕闪烁两个问题,以后使用没有此限制,可以随意开关电源。
! v" x, U5 U! r- \(4). 板子左下角J12和J13的跳线帽设置,切不可将PA11和PA12导通,否则USB通信不正常,直接拔掉跳线帽即可,或者短接到另外两个引脚都是可以的。
, C- a# ^5 [2 b8 e' c) m4 @. E(5). 如果测试网络的话,务必将网线插到能够联网的路由器或者交换机上,否则好些功能无法展示。
) p$ _/ o6 n. Z8 T6 C(6). 网口用的是DM9161,不是DM9000,USB口用的是MicroUSB接口,即小口。
5 P0 t6 b! G7 T! j! D3 D(7). CAN总线是用的CAN2,由于CAN2的一个引脚跟网络PHY芯片的一个引脚有复用,所有不做CAN2的功能展示了,但是功能还在。如果大家要测试的话,将源代码里面网络任务AppTaskTCPTimer的创建注释掉即可。
( |; k0 @. |4 A3 Y; A( h(8). 由于PHY芯片要初始化一段时间,为了防止其占用时间过长,上电后网络任务的优先级仅比统计任务高,所以上电后,有一段时间内的CPU利用率是0.0%,PHY初始化完成后就正常了。另外,上电前未插入网线的话,这个时间比较插入网线的时间稍长。
+ ~! S. P/ D" d: t! q* `! [- {(9). 此综合Demo仅支持800*480分辨率,其余分辨率的显示屏不再制作了。
; v8 L* s; j% Q) g/ w! d% v3 a8 S(10). 电容屏无需校准,电阻屏的校准看新版emWin教程的第66章说明。
: \" x' i& O5 L( }- T* L(11). 主界面滑动操作的时候,最好滑动图标以外的区域,图标的区域也可以滑动,但是效果不够完美。
+ `. y# y& \. O' ~(12). 当前仅做了RTX操作系统版本,后续如果有精力的话,会推出uCOS-III和FreeRTOS版本。
- a8 w3 n- n; s/ ]5 A' P
! j" E9 H% R* a* v1 {3 ]3 x5 X0 a8 a

. ~, Z0 R5 N- X# ]/ K5 E% H$ O$ g) M: {3.  版本信息:; Y, h/ @# K( M7 V& }1 Z
RTOS:           RL-RTX       V4.74
3 Z+ Y- W8 l- N, C; ~# SFile System:   RL-FlashFS   V4.74
. @4 g% `% N  Y9 D, BTCP/IP:         RL-TCPnet   V4.74
1 e! r- q, }2 @( [+ N; [" aUSB:             RL-USB       V4.74
1 `6 f) w" |, n. aCAN:             RL-CAN       V4.74' ?& [1 R6 [6 y2 J4 O( e. ?
GUI:             emWin        V5.36
  Y: s6 h2 J; DModbus:     Designed by armfly
- E" g5 H& |/ [$ S6 p4 |1 a1 Z& V

+ R( V7 B3 h1 _  P$ N, z4.  15个任务优先级配置
8 I4 \0 t: c6 R6 ](1). os_idle_demon,      优先级0:系统空闲任务。, m' a( y; a4 g# w2 T/ n% Q& E
(2). AppTaskStatistic        优先级1:CPU利用率检测。
% X( p  O- [& [  A  p+ ](3). AppTaskGUI,          优先级3:GUI主任务。
: E! f& p( |3 F4 N0 g. o(4). AppTaskTCPMain,    优先级4:TCPnet网络任务。
& e& Z: U+ R7 y: ](5). AppTaskUserIF,       优先级5:按键消息处理任务。, h3 c# \( j  b  a" U1 ]2 U
(6). AppTaskMsgPro,      优先级6:主要用于截图任务。
( [- g2 F5 `/ K* o(7). AppTaskStart,         优先级7:启动任务。$ |6 S. y9 j6 v5 P) n
(8). AppTaskCAN,          优先级8:CAN总线任务。: P) p0 Q: d! ]4 a" r  v+ y' M* j( Y
(9). AppTaskModbus,     优先级9:Modbus任务。$ r  L+ P8 n" m6 Z7 c& a
(10). AppTaskUSB,        优先级10:USB任务,+ W+ X( n* w3 X1 A$ Z* S* v
(11). AppTaskMusic,      优先级11:音乐任务,用于音乐播放器,视频播放器,录音机和收音机处理。
1 G% u( h7 q8 ^(12). AppTaskPinDetect, 优先级12:SD卡插拔检测任务。
# B5 H# w/ P' q" b2 \: w. [0 |: p" {(13). AppTaskTCPTimer, 优先级13:TCPnet网络定时更新任务。. B. d( I4 _( z2 F
  USB在运行的过程中会创建2两个任务
' ^5 O0 n3 x$ t1 X(14). USBD_RTX_EndPoint0                   优先级2:USB设备端点0任务。
- a, D! X) d. m4 |(15). USBD_RTX_MSC_EP_BULK_Event    优先级2:USB BULK数据传输任务。' o7 o6 {' Z; W
  [9 ?- d" Y4 D

- F) Q6 J  L  y/ p" L# I! H) r2 R5.  15个中断安排
& G) Y9 {5 B$ B' J3 pNVIC优先级分组采用4,仅抢占优先级,范围0-15。
# B  V6 M3 u: o) n* `: ~LTDC中断,                 抢占优先级 08 A6 G! E% L9 M- q
ETH以太网中断,         抢占优先级 0" D+ o! x. d" q# k0 U1 e
USB FS中断,              抢占优先级 00 u3 m2 {9 f4 \8 y+ O6 z, m! |; P
CAN2 TX中断,            抢占优先级 1. P7 P9 d5 Q/ e& O9 ]" M: o; }
CAN2 RX0中断,          抢占优先级 1
, E& m  ^, h6 Y5 H- Y; t/ t8 \DMA2_Steam5中断,    抢占优先级 18 R5 N0 i1 H4 A% E1 M, {* w& }
DMA2_Steam1中断,    抢占优先级 1
) g+ b5 B3 [; @! S% B8 `EXTI6中断,               抢占优先级 1* @/ x0 W, Z1 G' ^9 [8 K
USART3中断,            抢占优先级 2
8 \3 c/ o9 Q/ A& D' aEXTI2中断,               抢占优先级 2# c2 N/ y, s5 v+ B! A3 j6 \
TIM2中断,                抢占优先级 48 l9 M; A) v% {8 M4 x! \" ^
USART1中断,            抢占优先级 13( ]$ h- g) |# y& g) v0 g. @
RTC Alarm中断,         抢占优先级 13( X" j+ S5 v. y9 r
SVC中断,                  抢占优先级 14# I# @( h$ }& M& @6 g
Systick中断,              抢占优先级 15: a  v8 e% I, m6 \4 b. y
PendSV中断,            抢占优先级 15
! D5 |6 q9 f" a0 K" F6 _
6 q% u: H" h$ O: ^, M, H) ]
7 M3 U( W# b+ f0 n. b
6.  内存安排+ H; }; _; U+ R+ Y5 {) V
内部SRAM , CCM SRAM和SDRAM安排。3 X$ h8 e$ P, m
内部192KB SRAM       :80KB用于动态内存分配,其余用于任务堆栈,系统堆栈,文件系统,网络协议栈等。" x' ~, a3 M& Z! e+ Q: C
内部64KB CCM SRAM  :用于视频播放器时,JPEG解码。1 d% m% r; @+ Z# l3 v
外部16MB SDRAM      :前4MB用于TFT显存。
( a  A# D2 F4 S. u外部16MB SDRAM      :后12MB用于emWin动态内存。
0 \" n3 |+ G0 h5 H( ~! h) R+ a  x# y" U% X1 o( c
% q8 M3 P) X/ u: Z$ ~
7. RTX调试组件效果展示1 c2 Z! k  t' y0 H; ~
0.jpg

8 B1 s( h+ y& N
8. 开启MDK4.74最高的3级优化,同时开启相当给力的时间优化
: z' Q* {$ P1 Z7 q6 ~, |) w
00.jpg
8 _$ p7 R2 P( h) q: v+ z0 I6 K0 r
+ `" ^8 V+ K( R# ~! J
*************************************************************************************
* E7 ?( G* \  q' R. x% x程序下载:8 d! y6 Q, L9 h3 O
百度云下载链接:  https://pan.baidu.com/s/1eR16mbw  密码: ufkd

! f0 v3 E. c7 S2 l2 k* p/ A' E

) [8 D% N/ n9 d1 p4 L& P0 X6 f论坛下载: 基于RTX emWin FlashFS USB TCPnet CAN Modbus的综合Demo.rar (13.91 MB, 下载次数: 275)
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
4 o  w2 p$ p. m1 b2 \" t2 L& c) K
顶!硬汉厉害了!
1235555555 回答时间:2018-3-2 17:31:21
厉害了!!

所属标签

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