zoukankan      html  css  js  c++  java
  • 【STM32F429】第7章 RL-USB裸机版和各种RTOS版相关问题

    论坛原始地址(持续更新):http://www.armbbs.cn/forum.php?mod=viewthread&tid=99710

    第7章   RL-USB裸机版和各种RTOS版相关问题

    本章节为大家讲解RL-USB裸机版和各种RTOS版相关问题。

    7.1 初学者重要提示

    7.2 知识点

    7.3 MDK4时代RL-USB的使用

    7.4 MDK5时代RL-USB的使用

    7.5 移植其它系统版本RL-USB是否可靠

    7.6 总结

     

     

    7.1   初学者重要提示

      由于大家比较关心RL-USB是否支持裸机以及是否方便移植到各种RTOS下,本章节为此而生。

    7.2   知识点

    这个CMSIS-RTOS不仅可以作为各种OS的封装层,还可以是裸机封装层,像DAPLINK里面就提供了一个裸机方式的CMSIS-RTOS层。

     

    •   RTX4是MDK4里面带的RTX系统版本。
    •   RTX5是MDK5里面带的RTX系统版本。
    •   CMSIS RTOS V1是ARM为RTX4和RTX5做的封装层,当前ARM已经不再维护了,所以大家无需再研究。
    •   CMSIS RTOS V2是ARM为RTX5做的封装层。
    •   CMSIS-RTOS V1和V2封装层不仅RTX可以系统,其它OS也可以使用。

     

    现在为什么新作的RL-USB教程里面没有再推出裸机,FreeRTOS,uCOS-III等组合方式了,请往下看。

     

    7.3   MDK4时代RL-USB的使用

    最早2010年年底到2011年年初,MDK在自己的安装目录里面添加了Host和Device的源码,早期的源码比较简陋,后面就逐渐形成RL-USB库。

    这个库是可以裸机使用,也可以OS使用,切换方法比较简单,就是底层接口的一个宏定义__RTX。

     

    这个时代,不仅是RL-USB,像RL-TCPnet,RL-FlashFS,我都做了一大批裸机和配套uCOS-III,FreeRTOS等大杂烩方式的例子。部分截图如下:

     

    下面这个V6早期的综合Demo创建方式,基本已经是RTX4所有组件全家桶合影:

     

    7.4   MDK5时代RL-USB的使用

    进入MDK5,已经开启了RTX5全家桶一条龙服务时代,使用MDK RTE环境一键创建,不再需要MDK4时代繁琐的手动添加方式。

    但是对于想要裸机添加各种组件的用户,新的版本已经不再推荐这个方式,你选择了裸机添加,就意味着你放弃了使用MDK RTE,因为RTE不支持用户直接选择中间件。

    比如你选择了RL-USB,会提示你必须选择一个RTOS支持:

     

    这个时候你要选择裸机使用吗,工作量是何其大,如果你是按照DAPLINK那套方式(其实是更接近于MDK4时代的源码)还方便些,但是你想直接将MDK5里面的RL-USB拉出来,难度非常大,因为里面一大堆描述符的宏定义配置,并且每个应用类都是一个独立的任务,比如你创建一个复合设备,使用了5个USB任务,你自己来创建维护太麻烦了,特别是各种宏定义管理

    代码都是这种样子的,不使用RTE自己添加的时候各种错误。

     

    而且要你自己为维护一个类似MDK RTE的这个文件:

     

    7.5   移植其它系统版本RL-USB是否可靠

    根据7.4小节的说明,自己添加既然这么麻烦,那么问题就转到了使用CMSIS-RTOS封装层,借助这个封装层:

    •   我们可以继续使用裸机方式(DAPLINK已经提供了一个简单接口实现)

    他这个方式,如果应用到DAPLINK原有的代码上比较简单,如果应用到MDK5上,对于一般用户来说,难度系统略高,因为你要维护我前面说各种方式,特别是独立任务的实现。自己做个RTE组件还是比较繁琐的。

    自己添加MDK5里面的RL-USB相关代码,相当麻烦。

    特别注意,这个还仅仅是你做了个RL-USB,除非你不用别的中间件,如果要用,这种方式绝对让你用的生不如死。因为我早期研究是打算继续采用MDK4方式的,降低对MDK RTE依赖。后来我直接放弃了,非常不友好。

    •   再说说CMSIS-RTOS使用其它RTOS,像FreeRTOS

    这个最有说服力,因为MDK已经尽最大努力来完善FreeRTOS在MDK RTE上的各种兼容。实际效果怎么样了?实际效果差强人意,从去年开始发布的RL-TCPnet V7.X教程配套了RTX5和FreeRTOS两个版本。

    使用FreeRTOS版本,各种问题频出,特别是长时间批量数据传输。我们自己来做一款OS的兼容这些中间件就更加困难了,完全没必要。

    7.6   总结

    最后说一下DAPLINK这个东西,他为了便于用户实现,做了各种骚操作,特别是还整了一个类似裸机版CMSIS-RTOS层,这个方法直接替换MDK RTE中RTX5在各种中间件里面的位置,还远远达不到。

    所以我们现在的RL-USB教程仅推出RTX5版,使用MDK RTE一键创建,其它方式都不再使用。

    微信公众号:armfly_com 安富莱论坛:www.armbbs.cn 安富莱淘宝:https://armfly.taobao.com
  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/armfly/p/14442443.html
Copyright © 2011-2022 走看看