关于嵌入式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设备,其特性就是如此呢.
欢迎大家讨论.
...全文
1179 11 打赏 收藏 转发到动态 举报
写回复
用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工具跟踪到的,两端都存在
Windows CE操作系统是微软针对嵌入式领域开发的一个全新的操作系统,具备抢占式多任务功能以及强大的通信能力,广泛应用在信息设备、移动设备、电子产品以及嵌入式应用等非PC领域。随着计算机技术、网络技术和多媒体通信技术的发展,以及PDA、信息家电、机顶盒等为代表的嵌入式系统应用的广泛发展,嵌入式系统已经越来越走近普通人的生活,随之而来的,就是对嵌入式软、硬件设计的广泛需要。 本课题所涉及的研究方向是探索在Windows CE 5.0嵌入式操作系统下进行USB总线设备驱动程序开发相关原理。USB总线已经成为微机与功能繁多的外部设备连接的重要标准手段,所以以Windows CE 5.0为操作系统的嵌入式产品具备对USB总线的支持将能连接更多的具有USB总线接口形式的功能设备,扩大产品的应用领域,成为该产品的一个突出竞争优势。因此本课题的研究内容具有很大的理论意义以及实际应用价值。 在研究过程中,由于在嵌入式系统下开发USB总线驱动的相关成果资料较少,本课题横向类比了相关领域如Windows,Linux系统下USB总线设备驱动程序开发的各类成熟和较成熟思想,结合Windows CE操作系统下开发相关的各种中英文资料,并分析该操作系统自带的各种驱动源代码示例,从而提出以流驱动模式为策略的框架下具体开发该类总线设备驱动程序的流程。 分析Windows CE操作系统对于USB总线的支持,并结合在ARMSYS2410嵌入式开发板上关于Webeye 2000的USB摄像头的开发步骤,详细阐述了WindowsCE下USB摄像头驱动程序开发的策略,并根据该策略开发出USB总线实验设备的驱动程序,这是本课题的主体部分。由于针对的应用领域不同,相对于成熟的如Windows,Linux等大型操作系统,Windows CE嵌入式系统中设备驱动程序开发机制较为精简,可以根据不同的功能设备灵活的实现二者的通信。本文所总结的驱动开发策略是流驱动的形式,可以运用于产生流式数据的设备或者与这种方式相关相近的设备驱动程序开发中。

21,595

社区成员

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

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