硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2085|回复: 11
收起左侧

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

[复制链接]

76

主题

237

回帖

465

积分

高级会员

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-11-11 09:40:01 | 显示全部楼层
用的那个系列,F4系列没有DMA,只有个USB FIFO
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 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%占用,导致我其他任务都无法执行.... 无标题.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-11-11 10:46:21 | 显示全部楼层
kokoromi 发表于 2019-11-11 10:16
用的 F439的 HS模块,我看了手册里说HS模块有专用DMA,我也配置了,但是貌似不起作用,拷贝文件直接100% ...

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

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

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-11-11 11:17:02 | 显示全部楼层
eric2013 发表于 2019-11-11 10:46
有DMA的话,占用100%没关系,放在一个低优先级任务慢慢刷就行。

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

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-11-11 15:58:48 | 显示全部楼层
kokoromi 发表于 2019-11-11 11:17
你说的这个没错,但是感觉现在这个应该是有问题的,如果用了DMA的话是不应该占用100%的,否则的话这个DMA ...

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

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-11-11 18:58:43 | 显示全部楼层
eric2013 发表于 2019-11-11 15:58
你可以测下,有例子的。测试下读写的CPU利用率。

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

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 2019-11-12 09:55:31 | 显示全部楼层
kokoromi 发表于 2019-11-11 18:58
好的。那个USB库的源码你们改过吗?

源码没有修改过。
回复

使用道具 举报

76

主题

237

回帖

465

积分

高级会员

积分
465
 楼主| 发表于 2019-11-12 11:12:49 | 显示全部楼层
eric2013 发表于 2019-11-12 09:55
源码没有修改过。

回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2020-9-9 16:31:34 | 显示全部楼层
你搞定么  我就想用DMA   这个怎么配置的
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2020-9-9 16:34:24 | 显示全部楼层
我现在用的官方 列子 做ADC-USB采样传输 ADC500k 16位 usb相当于有8M速度 USB3300 HSPHY 现在usb的速度行了 但是要和ADC的外部采集中断打架。 HSUSB使用DMA方式的配置,怎么设置。  大佬 给点思路
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107778
QQ
发表于 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,不清楚什么鬼。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-6-14 02:10 , Processed in 0.237292 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表