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

[复制链接]
3720|21
 楼主| Eric2013 发表于 2017-3-23 14:56 | 显示全部楼层 |阅读模式
本帖最后由 Eric2013 于 2017-3-23 15:18 编辑


说明:
0.  首先感谢大家对我们安富莱电子的支持。
1.  制作这个综合Demo的意义在哪里:

我们之前做的几百个例子中很少有突出娱乐性的,这次来一发,突出娱乐性,实战性为辅,什么视频播放器,音频播放器,收音机,录音机,文本阅读等,全部整上,增加板子的可玩性。虽然是娱乐性项目,但是很多地方极具参考价值,希望能够在实际项目中帮到大家(后面新版数字信号处理教程,还会发布一个以数字信号处理和示波器为框架的实战性工程)。
(1) 本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件命名,程序框架,注释等都比较规范,大家阅读或者移植都会比较方便。另外,阅读代码时,务必将编辑器的缩进参数和TAB设置为4来阅读本文件,否则显示不整齐。
(2). 总共创建了15个任务,这15个任务的框架设计是整个项目最重要的,因为你的框架设计直接决定了你的工程稳定性。这次在RTOS的多任务架构设计上花了很多的心思,我们要充分发挥多任务的特性和实时性,并不是加上了OS,设计的代码还跟裸机一样,程序中N多标志变量,N多等待标志完成,N多全局变量。这次的综合Demo在这方面还是极具参考价值的,当前这个框架已经测试相对比较稳定。
(3). GUI的框架设计也比较清晰,GUI任务的大循环while里面仅有一个GUI_Delay函数,所有的应用都是基于对话框或者窗口实现,无论是工程以后的升级维护,错误排查还是实现复杂的GUI综合,这种方式都极其方便管理,实际项目中强烈推荐这种方式。
(4). TCPnet网络协议栈,采用的事件触发方式,有效降低CPU利用率,实际项目中推荐这种方式。基于这种框架做的网络综合测试,已经连续稳定运行快6个月。另外,底层已经做了专门处理,网线可以随意插拔,都可以正确获取新的IP地址。
(5). 这次Web网页提供的功能还是极具项目实用价值的,提供了文件的远程下载和上传功能,实际项目远程代码升级,数据采集文件的上传全靠他了。远程的设备控制,设备数据的显示更新,都做了支持,而且是通过Ajax实现网页的局部刷新,保证页面刷新的流畅,都是极具参考价值的。如果你有固定IP或者使用花生壳之类的DDNS,还可以实现外网的访问控制。总的来讲,对于我们嵌入式应用,能上传和下载文件,能够上传数据并实时更新,且可以实现远程控制就足够了。
(6). 文件系统RL-FlashFS在多任务性能的表现极佳,详情看Web部分视频演示和视频播放器,都是RL-FlashFS的多任务实时操作。
(7). 为SD卡插拔和网线插拔的底层增加中断检测方式,效率更高。
(8). Modbus是采用我们自己制作的主站和从站,这次是为其增加了OS的支持。
(9). 如何通过GUI做控制类界面,有时候为了图省事,我们直接把外设功能的实现丢在emWin的回调消息里面,这样设计是极其不合理的,非常影响重要功能的实时性,比如这次的播放器设计就改变了这种方式,为音乐播放开启一个高优先级任务,DMA中断给这个任务发消息,emWin任务也给这个任务发消息来实现音乐播放控制。
(10). GUI界面的快速刷新和切换方法。
(11). Modbus或者CAN的总线采集到数据后,GUI界面实时更新数据的方式。
(12). 当前这个综合Demo的框架已经测试的相对比较稳定,如果大家要在这个框架上面制作其它功能,仅需把我们实现的APP替换掉即可,框架还可以继续使用。即使切换到uCOS-III,FreeRTOS或者其它RTOS上面,框架还是这个框架,框架这个东西是通用的。

总之,还是那句话,我们要充分发挥RTOS的多任务特性和实时性,并特别注重框架设计。


2.  注意事项(重要,必读):
(1). 综合demo的RTX源码以及所有中间都是来自MDK4.74,所以这个综合程序仅支持MDK4.74,其余版本不支持。
(2). 测试此例子前,务必将我们提供的文件夹“SD卡根目录存放的四个测试文件夹”里面的四个文件夹复制粘贴到SD卡根目录下。另外,使用的文件系统RL-FlashFS仅支持ASCII文件名,切不要使用中文。
(3). 首次将程序下载到板子上,将板子断电10秒以上,然后重新上电使用,防止立即下载进去就运行的时候RTC时钟不走和屏幕闪烁两个问题,以后使用没有此限制,可以随意开关电源。
(4). 板子左下角J12和J13的跳线帽设置,切不可将PA11和PA12导通,否则USB通信不正常,直接拔掉跳线帽即可,或者短接到另外两个引脚都是可以的。
(5). 如果测试网络的话,务必将网线插到能够联网的路由器或者交换机上,否则好些功能无法展示。
(6). 网口用的是DM9161,不是DM9000,USB口用的是MicroUSB接口,即小口。
(7). CAN总线是用的CAN2,由于CAN2的一个引脚跟网络PHY芯片的一个引脚有复用,所有不做CAN2的功能展示了,但是功能还在。如果大家要测试的话,将源代码里面网络任务AppTaskTCPTimer的创建注释掉即可。
(8). 由于PHY芯片要初始化一段时间,为了防止其占用时间过长,上电后网络任务的优先级仅比统计任务高,所以上电后,有一段时间内的CPU利用率是0.0%,PHY初始化完成后就正常了。另外,上电前未插入网线的话,这个时间比较插入网线的时间稍长。
(9). 此综合Demo仅支持800*480分辨率,其余分辨率的显示屏不再制作了。
(10). 电容屏无需校准,电阻屏的校准看新版emWin教程的第66章说明。
(11). 主界面滑动操作的时候,最好滑动图标以外的区域,图标的区域也可以滑动,但是效果不够完美。
(12). 当前仅做了RTX操作系统版本,后续如果有精力的话,会推出uCOS-III和FreeRTOS版本。


3.  版本信息:
RTOS:           RL-RTX       V4.74
File System:   RL-FlashFS   V4.74
TCP/IP:         RL-TCPnet   V4.74
USB:             RL-USB       V4.74
CAN:             RL-CAN       V4.74
GUI:             emWin        V5.36
Modbus:     Designed by armfly


4.  15个任务优先级配置
(1). os_idle_demon,      优先级0:系统空闲任务。
(2). AppTaskStatistic        优先级1:CPU利用率检测。
(3). AppTaskGUI,          优先级3:GUI主任务。
(4). AppTaskTCPMain,    优先级4:TCPnet网络任务。
(5). AppTaskUserIF,       优先级5:按键消息处理任务。
(6). AppTaskMsgPro,      优先级6:主要用于截图任务。
(7). AppTaskStart,         优先级7:启动任务。
(8). AppTaskCAN,          优先级8:CAN总线任务。
(9). AppTaskModbus,     优先级9:Modbus任务。
(10). AppTaskUSB,        优先级10:USB任务,
(11). AppTaskMusic,      优先级11:音乐任务,用于音乐播放器,视频播放器,录音机和收音机处理。
(12). AppTaskPinDetect, 优先级12:SD卡插拔检测任务。
(13). AppTaskTCPTimer, 优先级13:TCPnet网络定时更新任务。
  USB在运行的过程中会创建2两个任务
(14). USBD_RTX_EndPoint0                   优先级2:USB设备端点0任务。
(15). USBD_RTX_MSC_EP_BULK_Event    优先级2:USB BULK数据传输任务。


5.  15个中断安排
NVIC优先级分组采用4,仅抢占优先级,范围0-15。
LTDC中断,                 抢占优先级 0
ETH以太网中断,         抢占优先级 0
USB FS中断,              抢占优先级 0
CAN2 TX中断,            抢占优先级 1
CAN2 RX0中断,          抢占优先级 1
DMA2_Steam5中断,    抢占优先级 1
DMA2_Steam1中断,    抢占优先级 1
EXTI6中断,               抢占优先级 1
USART3中断,            抢占优先级 2
EXTI2中断,               抢占优先级 2
TIM2中断,                抢占优先级 4
USART1中断,            抢占优先级 13
RTC Alarm中断,         抢占优先级 13
SVC中断,                  抢占优先级 14
Systick中断,              抢占优先级 15
PendSV中断,            抢占优先级 15


6.  内存安排
内部SRAM , CCM SRAM和SDRAM安排。
内部192KB SRAM       :80KB用于动态内存分配,其余用于任务堆栈,系统堆栈,文件系统,网络协议栈等。
内部64KB CCM SRAM  :用于视频播放器时,JPEG解码。
外部16MB SDRAM      :前4MB用于TFT显存。
外部16MB SDRAM      :后12MB用于emWin动态内存。


7. RTX调试组件效果展示
0.jpg

8. 开启MDK4.74最高的3级优化,同时开启相当给力的时间优化
00.jpg



*************************************************************************************
程序下载:
百度云下载链接:  http://pan.baidu.com/s/1eR16mbw  密码: ufkd


*************************************************************************************
视频展示:
板子的拍摄和电脑端嵌入式Web页面是分别录制的。手机拍摄的,效果不够艳丽,不过不影响性能展示。
板子视频效果展示:
https://v.qq.com/x/page/p0385v2rao0.html


嵌入式Web服务器效果展示:
https://v.qq.com/x/page/t0385fbycbr.html


*************************************************************************************

 楼主| Eric2013 发表于 2017-3-23 15:02 | 显示全部楼层
本帖最后由 Eric2013 于 2017-3-23 15:06 编辑

13个已经实现APP的功能说明
1.  主界面说明
桌面窗口上面建立JPG背景图片,创建一个支持三个屏大小的motion窗口,用于实现三个屏界面的切换,每个屏
大小的位置创建一个ICONVIEW控件,创建了三个。
(1). 共创建了21个应用图标,实际做了13个,其余7个暂时未做,第三屏上面的7个图标与第一屏的前7个图标是
          一样的,仅用于测试目的。
(2). 滑动的时候最好在图标以外的区域滑动,虽然可以点击图标的区域进行滑动,但是做的还不够好。
(3). 状态栏看文件App_StatusDlg.c开头的说明,系统信息栏看文件App_SysInfoDlg.c开头的说明。
(4). 未制作的功能的图标显示emWin支持的二维码。
显示效果:
第一个界面
1.jpg
第二个界面
2.jpg
第三个界面,仅用于三个界面滑动演示效果,跟第一个界面的前7个图标一样
3.jpg
2.  主界面系统信息说明
(1).  显示当前IP地址,未插入网线时显示192.168.X.X
(2).  显示emWin动态内存的剩余,总共是分配了12MB。
(3).  显示CPU利用率,上电后有段时间是显示的0.0%,因为网络初始化占用了一段时间CPU,不插网线的话时间稍长,过会就正常了。
(4).  电压和电流的测试功能未加上。

3.  主界面状态栏说明
(1).  日期和时间的更新。
(2).  网线插拔标志显示。
(3).  SD卡插拔标志显示。
(4).  闹钟是默认支持的,所以一直显示闹钟标志。
(5).  用于模拟U盘功能的存储设备不需要更新图标,因为已经设置仅在USB界面里面才可以设置。
(6).  其余的暂不使用。

4.  我的电脑APP说明
(1). 当前仅作了SD卡的支持。
(2). 文件浏览是用的CHOOSEFILE对话框,此控件点开后会有一个网格调整的过程,这个属正常现象,此控件就是这样的。
4.jpg
5.jpg

6.jpg


5.  系统信息APP说明
(1).  仅显示下系统配置
7.jpg


6. 音乐播放器APP说明
重要提示

(1)首次使用先点击歌曲列表,歌曲名会被记录到listview控件里面,然后就可以任意操作了。如果文件夹中歌曲较多,首次打开会稍慢些,主要是因为要获取每首歌曲的播放时间。以后打开就比较快了,主要是对歌曲列表对话框做了隐藏和显示处理,而不是重复的创建和删除。
功能说明
(1)支持上一曲,下一曲,快进和快退,常用的采样率和码率都支持,单声道和立体声也都支持。
(2)音频频谱方面,支持幅值谱和对数谱切换。
(3)emWin任务是低优先级任务,音乐解码任务是高优先级任务,两个任务之间通过任务消息队列和事件标志进行通信。
(4)歌曲列表对话框做了模态处理,这样用户打开此对话框后只能操作这个对话框,而不能操作主界面。
8.jpg
9.jpg

10.jpg

11.jpg

12.jpg

13.jpg

 楼主| Eric2013 发表于 2017-3-23 15:03 | 显示全部楼层
本帖最后由 Eric2013 于 2017-3-23 15:16 编辑

7. 视频播放器APP说明
重要提示:
(1)由于使用的文件系统RL-FlashFS的限制,文件名仅支持ascii字符。
(2)首次使用先点击视频列表,视频名会被记录到listview控件里面,然后就可以任意操作了。如果文件夹中视频较多,首次打开会稍慢些,主要是因为要获取每个视频的播放时间。以后打开就比较快了,主要是对视频列表对话框做了隐藏和显示处理,而不是重复的创建和删除。
(3)创建两个任务,一个GUI任务,用来刷emWin本身支持的emf格式视频,另一个是音频播放任务,用来播放视频中的声音,音频文件是从原始视频中提取出来的,使用MP3格式。由于两个任务都要操作文件系统,分别读取emf视频文件和MP3格式的音频文件,所以文件系统就需要互斥访问,也就是得支持重入。
(4)优化:重新添加uCGUI3.98里面的JPEG解码文件,覆盖emWin原有的解码,并做DMA2D优化,emWin自带的卡死,基本300ms左右一帧480*272图片,而优化后,差不多80ms左右就一帧。缺点就是跟emWin原有的机制兼容有些问题,不过程序设计中已经将其避免。emWin支持的三缓冲可以继续使用。
功能说明:
(1) 支持上一个,下一个,快进和快退。
(2)emWin任务是低优先级任务,音频解码任务是高优先级任务,两个任务之间通过消息邮箱和事件标志进行通信。
(3)视频列表对话框做了模态处理,这样用户打开此对话框后只能操作这个对话框,而不能操作主界面。
显示效果:
14.jpg
15.jpg

16.jpg

17.jpg

18.jpg


8. 录音机APP说明 (1). 录音机的功能做的比较简单,左上角和右上角的两个按钮未用到。
(2). 采样率固定为32KHz,16bit,单通道。
(3). 点击开始按钮,开始录音,录音30秒,务必保证录音结束后才可以播放。
(4). 显示的频谱是对数谱,即对FFT变化后幅值取对数。
19.jpg
20.jpg

21.jpg


22.jpg




9. 收音机APP说明
(1). 为了更好搜索电台,务必给耳机接口插上耳机当做收音机天线用。
(2). 开机上电后,要先点击界面上的开启键,默认是自动搜索模式。开启后点击左下角的搜索键,可以自动搜索电台。
           通过左键和右键实现搜到的电台切换。界面上面的6个颜色块是搜索到电台显示,也可以点击切换。
(3). 界面左上角的按钮是切换到手动搜索,然后通过左键和右键分别实现每次递减0.1MHz和递增0.1MHz。要切换回自
           动搜索,点击左下角按钮即可。作为两种模式的区分,手动搜索模式下,滚动条上面的文本会显示Manual;自动搜
           索模式下,滚动条上面的文本会显示Auto。
(4). 调整滚动条也可以选择电台,范围87.5MHz到108.0MHz。
23.jpg
24.jpg



10. 文本阅读APP说明
(1). 支持浏览的最大文本数是50个, 通过宏定义TextMaxNum进行设置。
25.jpg
26.jpg

27.jpg

28.jpg


11. 图片浏览APP说明
(1). 默认已经限制可显示的JPEG,GIF图片都是10张。
(2). 图片的显示区默认显示为480*320,GIF图片不受限制,但不要太大,因为未做处理。
(3). 删除了JPEG图片的显示,因为视频播放要做优化,优化后不支持函数GUI_JPEG_DrawScaled。
29.jpg
30.jpg

31.jpg

32.jpg


12. 万年历APP说明
(1). GUI主界面左上角的按钮用于弹出时间,日期和闹钟设置界面,右上角的按钮未用到。用户移植这个例子的话,
          此按钮用于返回系统主界面。此万年历例子都是在对话框上面实现的,移植很方便。
(2). 闹钟时间到后,蜂鸣器鸣叫5声。
33.jpg
34.jpg


13. USB APP说明
(1). 移植了RL-USB,板子使用的MicroUSB接口,即小口,实现SD卡模拟U盘,所以SD卡务必插上。
(2). 设置了240s的时间进行连接,如果240s内无法连接上,自动退出连接,一般情况下,500ms左右就连接上了。
(3). 拔掉USB线前,务必点击断开连接按钮。
(4). 为了防止点击了连接USB按钮后用户重复点击,此按钮被设置了禁能,点击断开USB按钮可恢复。
(5). 操作不可太快,要不反应不过来。
(6). 首次在新的电脑上面连接时,电脑端会有一个自动安装驱动的过程,这个时间稍长。所以将连接时间设置为120秒。
(7). 板子左下角J12和J13的跳线帽设置,切不可将PA11和PA12导通,否则USB通信不正常,直接拔掉跳线帽即可。
35.jpg
36.jpg

37.jpg



14. CAN总线 APP说明
(1). 移植了RL-CAN,板子使用的CAN2,速度500Kbps,标准ID
(2). 测试时至少要使用两块板子,手拉手式连接
(3). CAN的标识符过滤器采用标识符列表模式,配置每个板子仅接收标准ID为33的数据帧或者遥控帧
(4). 周期发送的默认时间是500ms。
38.jpg
39.jpg

40.jpg



15. RS485 Modbus APP说明
(1). 移植了Modbus RTU主站,测试时需要连接预装了从站程序的板子,从站地址为0x01
(2). ListView控件上的命令是供用户选择的,选择后点击发送命令按键即可,系统上电后默认选择命令二
41.jpg
42.jpg


16. 所有未制作APP显示界面
(1). 所有未制作APP显示如下界面
43.jpg


17. TCPnet网络协议栈 APP说明
(1). 移植了RL-TCPnet网络协议栈,网口对应DM9161,务必将其连接到能联网的路由或交换机上,否则很多功能无**常运行,网线可以随意插拔,支持自动重连。网络信息和SNTP客户端都是每秒更新一次。
(2). DHCP已经使能,如果插上网线8秒内无法从路由器/交换机获得IP地址,将使用固定IP:192.168.1.200。
(3). 国内免费稳定的SNTP服务器很少了,当前使用的这个时好时坏,如果大家测试不成功的话也是正常的。
44.jpg


18. 嵌入式Web界面效果
对于我们嵌入式应用来说,能上传和下载文件,能够上传数据并实时更新,且可以实现远程控制就足够了
45.jpg

46.jpg
47.jpg
48.jpg
49.jpg
50.jpg
51.jpg
52.jpg
53.jpg
54.jpg


lnhaing 发表于 2017-3-23 15:47 | 显示全部楼层
大神!顶你!
whtwhtw 发表于 2017-3-23 16:19 | 显示全部楼层
强啊word哥
limale 发表于 2017-3-23 18:32 | 显示全部楼层
强大如斯           
戈卫东 发表于 2017-3-23 19:22 | 显示全部楼层
搞个送板子活动吧
天奕 发表于 2017-3-23 20:32 | 显示全部楼层
dawei360 发表于 2017-3-23 20:33 | 显示全部楼层
很是强大
liugqing 发表于 2017-3-23 22:45 | 显示全部楼层
cornrn 发表于 2017-3-24 08:46 | 显示全部楼层
牛的一塌糊涂,,要是MDK5就好了,我直接用了,要是再出个FREERTOS+HAL库的就棒棒哒
Harvard 发表于 2017-3-24 10:41 | 显示全部楼层
好厉害 做gui的同学有福.
xiaozhuzhuzhj 发表于 2017-3-24 10:52 | 显示全部楼层
功能还是蛮强的的 !!!!支持!!!
小曾1220 发表于 2017-3-24 10:59 | 显示全部楼层
Eric2013 发表于 2017-3-23 15:02
13个已经实现APP的功能说明
1.  主界面说明
桌面窗口上面建立JPG背景图片,创建一个支持三个屏大小的motion ...

小曾1220 发表于 2017-3-24 11:02 | 显示全部楼层
Eric2013 发表于 2017-3-23 15:02
13个已经实现APP的功能说明
1.  主界面说明
桌面窗口上面建立JPG背景图片,创建一个支持三个屏大小的motion ...

yzqok 发表于 2017-3-24 13:32 | 显示全部楼层
万能的板,顶一下
小曾1220 发表于 2017-3-24 13:40 | 显示全部楼层
Eric2013 发表于 2017-3-23 15:03
7. 视频播放器APP说明
重要提示:
(1)由于使用的文件系统RL-FlashFS的限制,文件名仅支持ascii字符。

小曾1220 发表于 2017-3-24 15:11 | 显示全部楼层
Eric2013 发表于 2017-3-23 15:03
7. 视频播放器APP说明
重要提示:
(1)由于使用的文件系统RL-FlashFS的限制,文件名仅支持ascii字符。

xiaoyaodz 发表于 2017-3-24 16:33 | 显示全部楼层
xiaoyaodz 发表于 2017-3-24 16:34 | 显示全部楼层
这个系统集成了多少实例代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:RTX->μCOS-II->FreeRTOS->embOS->μCOS-III μCGUI->emWin->FatFs->DSP 淘宝:armfly.taobao.com

115

主题

639

帖子

34

粉丝
快速回复 在线客服 返回列表 返回顶部