kokoromi 发表于 2019-11-11 09:09:15

ST的USB主机库使用DMA方式导致CPU占用100%

移植了ST的USB主机库,看了下,这个库在OS模式下主要是使用消息队列的方式,在状态机里面完成各种操作,我移植的时候使用了uCOS系统。底层是用了DMA方式,现在发现一个问题,就是无论是否使用了DMA方式,数据传输(读或者写)时,CPU使用率一直是100%,不用DMA方式倒是可以理解,但是使用了DMA方式为什么会导致CPU占用100%?感觉DMA传输时CPU被挂起了似的,硬汉大神遇到过这个问题吗?

eric2013 发表于 2019-11-11 09:40:01

用的那个系列,F4系列没有DMA,只有个USB FIFO

kokoromi 发表于 2019-11-11 10:16:37

本帖最后由 kokoromi 于 2019-11-11 10:20 编辑

eric2013 发表于 2019-11-11 09:40
用的那个系列,F4系列没有DMA,只有个USB FIFO
用的 F439的 HS模块,我看了手册里说HS模块有专用DMA,我也配置了,但是貌似不起作用,拷贝文件直接100%占用,导致我其他任务都无法执行....

eric2013 发表于 2019-11-11 10:46:21

kokoromi 发表于 2019-11-11 10:16
用的 F439的 HS模块,我看了手册里说HS模块有专用DMA,我也配置了,但是貌似不起作用,拷贝文件直接100% ...

有DMA的话,占用100%没关系,放在一个低优先级任务慢慢刷就行。

一般ST库的在DMA的处理上都是死等,所以100%并没有关系。

kokoromi 发表于 2019-11-11 11:17:02

eric2013 发表于 2019-11-11 10:46
有DMA的话,占用100%没关系,放在一个低优先级任务慢慢刷就行。

一般ST库的在DMA的处理上都是死等,所 ...

你说的这个没错,但是感觉现在这个应该是有问题的,如果用了DMA的话是不应该占用100%的,否则的话这个DMA就没意义了,我看了库函数,里面没有循环等待的指令,不知道是不是硬件问题,咱们那个综合的例子里USB主机是咋用的?有这个问题吗?

eric2013 发表于 2019-11-11 15:58:48

kokoromi 发表于 2019-11-11 11:17
你说的这个没错,但是感觉现在这个应该是有问题的,如果用了DMA的话是不应该占用100%的,否则的话这个DMA ...

你可以测下,有例子的。测试下读写的CPU利用率。

kokoromi 发表于 2019-11-11 18:58:43

eric2013 发表于 2019-11-11 15:58
你可以测下,有例子的。测试下读写的CPU利用率。

好的。那个USB库的源码你们改过吗?

eric2013 发表于 2019-11-12 09:55:31

kokoromi 发表于 2019-11-11 18:58
好的。那个USB库的源码你们改过吗?

源码没有修改过。

kokoromi 发表于 2019-11-12 11:12:49

eric2013 发表于 2019-11-12 09:55
源码没有修改过。

:victory:

QQ476533812 发表于 2020-9-9 16:31:34

你搞定么我就想用DMA   这个怎么配置的

QQ476533812 发表于 2020-9-9 16:34:24

我现在用的官方 列子 做ADC-USB采样传输 ADC500k 16位 usb相当于有8M速度 USB3300 HSPHY 现在usb的速度行了 但是要和ADC的外部采集中断打架。 HSUSB使用DMA方式的配置,怎么设置。大佬 给点思路

eric2013 发表于 2020-9-9 17:36:01

QQ476533812 发表于 2020-9-9 16:34
我现在用的官方 列子 做ADC-USB采样传输 ADC500k 16位 usb相当于有8M速度 USB3300 HSPHY 现在usb的速度行了 ...


当前支持STM32的相关USB协议栈都没有开启USB DMA,不清楚什么鬼。
页: [1]
查看完整版本: ST的USB主机库使用DMA方式导致CPU占用100%