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。能在这个帖子里回更好!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
hhxb
1楼-- · 2019-12-30 20:11
 精彩回答 2  元偷偷看……
湛无双
2楼-- · 2019-12-30 21:17
支持楼主  感谢分享
gaojunchen
3楼-- · 2019-12-30 22:33
同想弄几片底板的飘过  奈何画板子的功底基本为0
adce
4楼-- · 2019-12-31 04:24
本帖最后由 adce 于 2013-5-1 11:51 编辑

168MHz的MCU搭配168M的SRAM....这是哪里来的最优理论...

DMA是为慢速设备服务的...CCM挂DMA没什么意义....

带ETH和串口的底板很多很多....推荐一个 微雪 的....
cfqxdgr
5楼-- · 2019-12-31 06:39
adce 发表于 2013-5-1 11:45
168MHz的MCU搭配168M的SRAM....这是哪里来的最优理论...

DMA是为慢速设备服务的...CCM挂DMA没什么意义.... ...

1.牛逼!DMA是为了慢速设备服务的……这种说法头一次听见。
2.DMA控制器的功能是否强大是这款芯片的重要指标之一,同时DMA控制器的功能还和Bus Matrix的有关。强大的DMA可以把CPU从频繁的内存拷贝中释放出来,至于是否低速并没有什么想干。
3.至于处理器的最优配置不是我提出来的,是处理器业界的通行准则之一。准确的说是:N MHz 的CPU 需要搭配N MB的内存同时具备N Mbps的IO速率,这样整个系统不存在性能瓶颈。这个说法不针对某种场景,比如嵌入式。因为SRAM又贵性能又有限,我觉得他配的内存控制器是SRAM我有点不爽。
cfqxdgr
6楼-- · 2019-12-31 09:19
 精彩回答 2  元偷偷看……

一周热门 更多>