搜索
bottom↓
回复: 13

请教rt-thread usb线程该如何设置?

[复制链接]

出0入0汤圆

发表于 2010-5-11 01:29:16 | 显示全部楼层 |阅读模式
目前有个问题,我把一个好用裸奔的usb sd卡读卡器的代码弄到 rt-thread里面之后,优先级已经改成最高,但是还是只能操作一次U盘。

现象:联机识别到u盘,打开盘符随便读一个文件,可以打开。

关掉这个文件之后,切换目录或者任意操作u盘里面的东西就都看不见了,

也就是说只能操作一次U盘。

sub初始化之后是不是要把所有的线程都停掉,就像裸奔那样,才能够正常工作呢?


有点困了,先睡了,明天有时间继续

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2010-5-11 07:12:01 | 显示全部楼层
什么指令可以挂起所有的线程?

看了一下radio的程序,没用使用GUI是不是就不用使用GUI冻结那个函数(那个函数没有使用GUI的话就直接return了)

出0入0汤圆

发表于 2010-5-11 08:07:32 | 显示全部楼层
在radio中,usb是完全运行在中断模式中。

个人感觉肯定能够使用线程的,但是对usb还不熟悉。usb部分目前是aozima加入的,usb和冻结没什么关系,只为了保险起见而冻结的,实际上不冻结UI照样能操作:-)。

出0入0汤圆

 楼主| 发表于 2010-5-11 09:04:44 | 显示全部楼层
我是改的usb3.1.1库里面的MassStorage的例程,没看什么工作模式,我再看看

出0入0汤圆

发表于 2010-5-11 09:25:34 | 显示全部楼层
简单点讲,RADIO中现在的那个USB MSC就是个玩具,原来还能用用,现在想用都难了.
另也主要是SD卡那边的驱动现在不适合工作在工断模式了.

1.把SD卡的驱动要好好改进下.达到商用读卡器的级别.哪怕是山寨读卡器也比目前的RADIO好N倍.
2.实现自己的USB协议栈,但这个工作量太大了.我认为我个人不论从精力上讲还是技术层次上讲都难以实现.

出0入0汤圆

发表于 2010-5-11 09:38:31 | 显示全部楼层
现在SD卡当成U盘已经不能用了?不会又是中断优先级的原因吧

难道真的需要考虑自行开发完整的USB协议栈?从device、host到OTG。。。

出0入0汤圆

 楼主| 发表于 2010-5-11 09:40:30 | 显示全部楼层
从目前的现象来看,只要我打开U盘读取数据,就会导致所有线程挂掉。

裸奔的时候使用超级while(1),可以正常读写数据。

是不是我要把除了usb的所有线程都kill掉

实在不行,也只有放弃这个功能了

出0入0汤圆

发表于 2010-5-11 09:53:04 | 显示全部楼层
"现在SD卡当成U盘已经不能用了?不会又是中断优先级的原因吧 "
中断优先级的问题在上次复制usart.c时又出现了一次,但已经修正了.
现在SD卡当U盘是不好用,用两个128的小卡可以,但用2G的卡发现PC都不出来读取命令了,看来不光是驱动有问题.

"难道真的需要考虑自行开发完整的USB协议栈?从device、host到OTG。。。"
按RTT一向的组件齐全的风格.看来是很有必要整一个完整的协议栈.

"只要我打开U盘读取数据,就会导致所有线程挂掉。 "
这可能是因为SD的驱动里面用了系统的一些组件引起的.
奇怪的是SPI_FLASH中现在也用到了,但没有问题.

"实在不行,也只有放弃这个功能了"
你可以再研究下如何解决.到时RADIO也因你受益呀.功德无量.

出0入0汤圆

发表于 2010-5-11 10:01:33 | 显示全部楼层
回复【7楼】aozima  
"难道真的需要考虑自行开发完整的USB协议栈?从device、host到OTG。。。"
按RTT一向的组件齐全的风格.看来是很有必要整一个完整的协议栈.
-----------------------------------------------------------------------

好吧!列入0.4.x或0.5.x的计划,目前暂时还没这个精力,期待有高手出现。

出0入0汤圆

 楼主| 发表于 2010-5-11 10:10:27 | 显示全部楼层
回复【7楼】aozima
-----------------------------------------------------------------------

我用的是2G的TF卡,SDIO模式,裸奔的时候使用超级while(1),可以正常读写数据包括删除文件,没试过格式化。
板子上还有个nand falsh 但是一直没调通,怀疑是假货(k9g8g08 30块钱买的),又买了个小容量的等下次改版的时候再焊上试试。

在裸奔的程序里面,while(1)里面是不停的显示卡里面的bmp格式图片,在操作usb时会出现画面停顿,但不会死机。

目前优先级已经是31了(最大是32)。开始优先级不是31,会出现只能读取一次目录,改为31后,读取目录之后可以再操做一次。

出0入0汤圆

发表于 2010-5-11 10:24:50 | 显示全部楼层
线程的优先级并不是主要问题.很多时候线程都是被动式地被运行.而不是跟据优先级和时间片去主动运行.
RADIO中的那个U盘用gzhuli的话说就是嫁接.完全没有按RTOS中应该的方式去处理.注定会出问题的.
原来计划的是使用独立的驱动,让联机后把RTOS停掉.让其工作在裸奔状态.但现在使用了RT-thread的驱动框架.所以..
目前还没想出较为简单的解决办法.

出0入0汤圆

发表于 2010-5-11 11:04:17 | 显示全部楼层
U盘,主要是那个中断模式的问题。可以考虑把它改成线程模式的,应该能够消除这个问题。

出0入0汤圆

 楼主| 发表于 2010-5-11 12:23:00 | 显示全部楼层
额,先弄其他部分吧,门外汉玩RTT,这些问题留给你们解决吧。

一想起来上周末摸索GUI头还疼呢,石头是摸了不少,还是没摸到路。

出0入0汤圆

发表于 2013-7-6 11:07:53 | 显示全部楼层
rt+USB同样的头疼中
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 23:08

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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