CortexM4上应用freeRTOSusb Host StackFat32,附带新特性和BugFix!

2019-12-30 19:28发布

最近发现STM出了一块非常便宜的CortexM4开发板STM32F4-Discovery 1.jpg (157.12 KB, 下载次数: 1) 下载附件 2013-4-30 22:03 上传 ,才100元。遂搞了一块评估一下:

就STM这款STM32F407VG芯片来说
1、最高168MHz的core频率、接近210DMIPS的理论性能、单精度浮点FPU决定了它的性能作为一款MCU来说已经足够
2、存储方面,共112KB的SRAM+64KB的CCM、1M的内部高速flash,还可以外扩SRAM。虽然不能说弱,不过DMA不能访问CCM还是有点遗憾。
   同时根据N MHz的CPU要搭配N MB的内存的最优理论,似乎SRAM对于成本和性能都不利。
3、IO方面常用的CANUSBETH都齐全了,还是够用的。不过STM的库一向不是那么可靠,这点很让人烦。

再来说这块开发板:
1、100块的东西也别奢求什么4层PCB了,就一双面板,不过从另一方面来说2层就能跑的欢也是件好事
2、带的外设包括一个3轴加速度计、一个音频IC、一个USB。然后就是一堆IO了,可以验证的东西不多
3、跳几根线就可以当ST-LINK用,和以前的M3 Discovery差不多

原装带ETH网口和串口芯片的底板太贵,淘宝上只有一家做的还很粗糙……坛子里哪位兄弟要是肯合作打几片底板我肯定出力,奈何我自己没有焊接设备

好了废话很多,接下来说说软件:

1.很多人不习惯用RTOS,不过我的感觉是为啥不用呢?虽然无论RT-Thread、uC OS、freeRTOS的功能都很弱,不过有总比没有好。
这次我选择了4.19才发布的7.4.1版本 freeRTOS,这个kernel的性能一般,胜在还算可靠,最重要的是不要钱!uC OS的授权费相对它的功能来说实在是有点黑
2.USB Host Stack是在ST库的基础上改的。
3.FAT文件系统是用的fatFS,据说EFLS?(名字记不得了)也很好,以后试试。

由于这个是个Demo而已,所以没有什么花哨的功能。起了LED、USBHOST、还有一个文件读取的任务,在我的金士顿U盘和华为G330D手机上验证都OK。IDE用的是MDK 4.6,但是我平时写代码都是用的sourceInsight,工程就在根目录下 freeRTOS.rar (6.68 MB, 下载次数: 466) 2013-4-30 22:44 上传 点击文件名下载附件

相对于官方版本的库,有以下一些修改:
1.freeRTOS 创建二进制信号量函数增加了一个参数,可以选择创建后是否立刻放出这个信号量
2.USB Host stack支持多个LUN的设备。这个改动相对多些,比如我的G330D手机插在电脑上有三个盘符,内部存储卡、SD卡、虚拟光盘,一共三个LUN。ST官方的Host Stack只支持1个LUN,这样读卡器或者手机什么的就不能用了
3.USB Host stack修复小Bug,比如disconnect的处理原来的有些小问题
4.fatFS的bugfix,调试我手机的时候发现死活读不出microSD卡上的东西,但内部eMMC上的就OK。搞了整整一下午没招了最后用Bus hound抓PC上的报文。最后发现是G330D在挂载microSD卡时会虚拟一个MBR出来,而且结构还有点小问题;挂载内部2GB的eMMC就直接读出一个FAT boot sector。针对这个对fatFS的bug做了修正。
5.USB Host stack在freeRTOS上初始化的一些修改。原版基于各种回调函数,修改之后Host任务只在挂载设备时运行,平时就是挂起态

其它的不多说了有兴趣的可以自己看或者email我,cfqxd@163.com。能在这个帖子里回更好!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。