关于嵌入式LINUX设备与WINDOWS PC进行USB通信的问题

HZJMAN 2006-06-06 07:59:26
小弟我的方案是:在嵌入式LINUX设备端,加载LINUX标准驱动,将USB设备当作设备文件,使用write,read函数进行通讯;在安装WINDOWS的PC端,安装公司自行编制的驱动,也将USB设备当作设备文件,使用WriteFile,ReadFile进行通讯.现在存在如下情况,使得通讯过程不可靠:
1.通讯时,一帧数据的最大长度不会超过32字节,如果越过,会分成若干帧进行传输;
2.一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失;
请问,这是哪一块存在问题呢,是否LINUX下以设备文件方式操作USB设备,其特性就是如此呢.
欢迎大家讨论.
...全文
1348 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
mmxopq 2006-08-08
  • 打赏
  • 举报
回复
2.“一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失”
---------会不会认为是超时错误
lanjun12 2006-07-21
  • 打赏
  • 举报
回复
1.通讯时,一帧数据的最大长度不会超过32字节,如果越过,会分成若干帧进行传输;

我猜想是端点缓冲区长度为32B,所以要传送数据超过32时,会自动分成若干侦传送,这是协议定义的

2.一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失;
像ls所说,可能是数据重叠.还是端点缓冲区小的原因吧

HZJMAN 2006-07-11
  • 打赏
  • 举报
回复
继续关注... ...
embedman 2006-06-28
  • 打赏
  • 举报
回复
1.通讯时,一帧数据的最大长度不会超过32字节,如果越过,会分成若干帧进行传输;
ANSWER:很有可能是驱动层(设备端或PC端)的限制,只能改进驱动层.
2.一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失;
ANSWER:不一定是数据丢失,很有可能是数据覆盖,可以改进协议来避免.
zgz 2006-06-09
  • 打赏
  • 举报
回复
There are two thing I need to know befor I can gave you valuable suggestion:
1. Who is host, who is slave ? I suppose PC (windown) is host, PDA (Linux) is slave, right ?
2. What the linux USB 'standard' driver do you mean ? In another word, what 'device' do your slave side perform ? CDC ? Mass Storage ? or your self-defined device ?

I suggest use the 'standard' USB Class driver, for example, CDC-ACM, therefor your PDA perform a serial (RS232) device, and you don't need to write any driver both at Linux and Windows ! And I think it should be much more stable and faster then your own driver :)
tianfang 2006-06-08
  • 打赏
  • 举报
回复
如果是为了通讯,还是用专用的通信接口比较好,以太网、串口处理起来都比USB方便
申宇田 2006-06-07
  • 打赏
  • 举报
回复
虽然你说的不是很清楚,我尽量按照我的理解说说我的想法.首先需要澄清两点:
1.你的usb设备是什么样的设备?有没有固件程序在里头?越详细越有助于解决问题。
2.你说的现象“一帧数据的最大长度不会超过32字节,如果越过,会分成若干帧进行传输”是怎么看到的?这个现象发生在linux系统还是windows系统?
HZJMAN 2006-06-07
  • 打赏
  • 举报
回复
密切关注... ...
HZJMAN 2006-06-07
  • 打赏
  • 举报
回复
PhShentu(Phillip Shentu)
还是弄不清楚你的开发测试环境,你的usb设备里面应该有固件程序吧?你的第二个问题“一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失”是什么意思呢?或者你是说你通过这个设备像这样pc(windows)-usb device-embedded system(linux)连接起来?
-----------------------------------------------------------------------------------
1.嵌入式设备端:嵌入embeded linux,加载Linux标准USB驱动,USB接口属于嵌入式设备的一部分.
2.“一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失”指PC向USB端口发送数据成功返回后,设备端程序没有及时接收,而是等待一段时间再接收数据,无法成功,反之亦然.
申宇田 2006-06-07
  • 打赏
  • 举报
回复
还是弄不清楚你的开发测试环境,你的usb设备里面应该有固件程序吧?你的第二个问题“一方数据发送成功后,如果另一方没有及时接收,通讯数据会丢失”是什么意思呢?或者你是说你通过这个设备像这样pc(windows)-usb device-embedded system(linux)连接起来?
HZJMAN 2006-06-07
  • 打赏
  • 举报
回复
PhShentu(Phillip Shentu)
虽然你说的不是很清楚,我尽量按照我的理解说说我的想法.首先需要澄清两点:
1.你的usb设备是什么样的设备?有没有固件程序在里头?越详细越有助于解决问题。
2.你说的现象“一帧数据的最大长度不会超过32字节,如果越过,会分成若干帧进行传输”是怎么看到的?这个现象发生在linux系统还是windows系统?
-------------------------------------------------------------------------
1.设备是PDA类设备,加载LINUX的USB标准驱动
2.使用Bus Hound5工具跟踪到的,两端都存在

21,616

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧