ihavedone 发表于 2019-9-18 11:47:49

同志们,CubeMX生成的USB代码,是在USB中断里面进行的数据读写操作,这样子会影响其他任务的实时性吧?

如题

eric2013 发表于 2019-9-18 11:57:46

你检索下HAL库软件包里面带的一批例子带OS的,看看有做单独任务处理的没

ihavedone 发表于 2019-9-18 16:59:24

eric2013 发表于 2019-9-18 11:57
你检索下HAL库软件包里面带的一批例子带OS的,看看有做单独任务处理的没

看了下,HAL库自带的USB例程里,也是只初始化了USB,并没有轮询任务,所以应该也是在USB中断中进行的所有通信操作。

eric2013 发表于 2019-9-18 18:50:45

ihavedone 发表于 2019-9-18 16:59
看了下,HAL库自带的USB例程里,也是只初始化了USB,并没有轮询任务,所以应该也是在USB中断中进行的所有 ...

那RL-USB满足你的要求,这个是中断发任务消息,在任务里面执行实际工作的。

ihavedone 发表于 2019-9-19 13:40:13

eric2013 发表于 2019-9-18 18:50
那RL-USB满足你的要求,这个是中断发任务消息,在任务里面执行实际工作的。

刚好看到另一个帖子讲的RL-USB,但是要配合他自己的系统才行吧?

eric2013 发表于 2019-9-19 15:41:11

ihavedone 发表于 2019-9-19 13:40
刚好看到另一个帖子讲的RL-USB,但是要配合他自己的系统才行吧?

不限制,这里做了RTX5和FreeRTOS两个版本

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更简单,用户仅需初始化FMC
http://www.armbbs.cn/forum.php?mod=viewthread&tid=94277&fromuid=58
(出处: 硬汉嵌入式论坛)

meirenai 发表于 2020-3-9 09:53:02

eric2013 发表于 2019-9-19 15:41
不限制,这里做了RTX5和FreeRTOS两个版本

基于V7的新版RL-USB和RL-FlashFS的NAND完整解决方案,实现更 ...

这个必须要用 RTE 来配置嘛?我用的是 STM32L4 系列的单片机,RTE环境里没有USB的配置选项。如何把RL-USB手动移植到我的工程里呢?

meirenai 发表于 2020-3-9 09:56:24

说错了,是没有USB Host的配置选项,我要用 STM32L4 来读取 U盘


eric2013 发表于 2020-3-9 10:37:26

meirenai 发表于 2020-3-9 09:53
这个必须要用 RTE 来配置嘛?我用的是 STM32L4 系列的单片机,RTE环境里没有USB的配置选项。如何把RL-USB ...

L4有。

USB Host要将下拉列表里面的MDK-Plus切换到MDK Pro

meirenai 发表于 2020-3-9 11:02:23

eric2013 发表于 2020-3-9 10:37
L4有。

USB Host要将下拉列表里面的MDK-Plus切换到MDK Pro

多谢硬汉            

emwin 发表于 2020-4-3 16:41:52

如果平时USB口不接,是没有影响的。

zz1179842922 发表于 2020-7-30 15:00:29

eric2013 发表于 2019-9-18 18:50
那RL-USB满足你的要求,这个是中断发任务消息,在任务里面执行实际工作的。

硬汉你好:RL_usb的device设备hid、cdc、winusb都是中断任务消息?。

eric2013 发表于 2020-7-30 15:03:47

zz1179842922 发表于 2020-7-30 15:00
硬汉你好:RL_usb的device设备hid、cdc、winusb都是中断任务消息?。

对,都是。

zz1179842922 发表于 2020-7-30 16:00:26

eric2013 发表于 2020-7-30 15:03
对,都是。

好的好的 谢谢

云琴箫龙 发表于 2022-1-14 10:16:03

也遇到了这个情况,跑的UCOS系统,把SDRAM虚拟成U盘读写都没问题,把外部FLASH虚拟成U盘会出现莫名的不成功,一插USB程序指针好像跑飞了,停止也找不到断点在哪儿,堆栈都开的足够大。
想想在中断里操作FLASH本身就不合理,尝试把中断处理函数放到任务里,中断向这个任务发消息,发现USB中断太频繁,瞬间就会把任务消息队列填满。
不知道USB为啥中断这么频繁,下一步打算仅把操作FLASH的部分放到任务里面再试试。

ihavedone 发表于 2022-1-17 10:49:21

云琴箫龙 发表于 2022-1-14 10:16
也遇到了这个情况,跑的UCOS系统,把SDRAM虚拟成U盘读写都没问题,把外部FLASH虚拟成U盘会出现莫名的不成功 ...

只把flash 操作放到任务,就会要求中断函数等待 flash 操作完成,一样会有问题。
只能把整个 USB 协议栈全放外部,根据状态和消息来进行处理。   
从 ST 的 USB 协议栈上改我没搞成,有个项目就直接换成了 Thread X, 用 USBX 了。另一个项目懒得改动这么大,就换成了网络,通过 TFTP 来获取文件。:(

云琴箫龙 发表于 2022-1-17 18:20:24

ihavedone 发表于 2022-1-17 10:49
只把flash 操作放到任务,就会要求中断函数等待 flash 操作完成,一样会有问题。
只能把整个 USB 协议 ...

尝试过把整个协议栈放任务里,中断里面发消息给任务,任务执行。发现USB的中断太频繁,尤其是插上USB的瞬间,瞬间就会把任务的消息队列撑爆,所以暂时放弃了这种方案。

ihavedone 发表于 2022-1-17 23:00:13

云琴箫龙 发表于 2022-1-17 18:20
尝试过把整个协议栈放任务里,中断里面发消息给任务,任务执行。发现USB的中断太频繁,尤其是插上USB的瞬 ...

ST 的 USB 协议栈不好搞,他就不是基于任务的形式的。
可以参考 USBX,或者干脆就用 USBX 算了。:lol

云琴箫龙 发表于 2022-1-19 21:57:58

ihavedone 发表于 2022-1-17 23:00
ST 的 USB 协议栈不好搞,他就不是基于任务的形式的。
可以参考 USBX,或者干脆就用 USBX 算了。

USBX得换操作系统Thread X吧,用惯UCOS了,等后期有精力了研究一下这个操作系统
页: [1]
查看完整版本: 同志们,CubeMX生成的USB代码,是在USB中断里面进行的数据读写操作,这样子会影响其他任务的实时性吧?