|
本帖最后由 baiyongbin2009 于 2017-3-23 14:34 编辑 安富莱F429之RTX系统及其所有中间件性能展示,效果杠杠的 说明: 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调试组件效果展示
8. 开启MDK4.74最高的3级优化,同时开启相当给力的时间优化
************************************************************************************* 程序下载: 百度云下载链接: https://pan.baidu.com/s/1eR16mbw 密码: ufkd 论坛下载:
基于RTX emWin FlashFS USB TCPnet CAN Modbus的综合Demo.rar
(13.91 MB, 下载次数: 273)
|
微信公众号
手机版
顶!硬汉厉害了!