病毒单纯疱疹病毒反复发作好后又发些红疙瘩会不会是单纯疱疹病毒反复发作

基于DSP和专用接口芯片的USB实现方案
> 基于DSP和专用接口芯片的USB实现方案
基于DSP和专用接口芯片的USB实现方案
  自1994年11月提出通用串行总线()以来,以其传输速率高、支持热插拔、易于扩展的突出优势,发展速度惊人,迅速席卷电子产品世界。在市场需求的强力驱动下,从1998年开始,接口进入测量仪器领域,并逐步被许多著名仪器公司接纳。在测量仪器中扩展USB接口已经成为一种发展趋势。针对不同的测量仪器,寻求一种普遍适用的USB接口解决方案,对于测量仪器的开发设计有十分重要的意义。本文引用地址:
  方案选择
  开发USB设备一般有三种方式:一种是使用带USB接口的专用微控制器(MCU),这类MCU有自己的系统结构和指令,从底层专用于USB控制,比如公司的CY7C63xxx和CY7C64013,这类MCU的开发需要用专用工具,且性能有限;第二种方式是使用带USB接口的通用MCU,这类MCU只是基于一般芯片内核增加了USB接口,比如Intel公司的8x931、8x930以及公司的EZUSB等,这类 MCU的开发语言和开发工具都和一般MCU相似,因而较易入手,但其缺点是成本较高;第三种方式是使用纯粹的USB接口芯片,通过外加MCU对其控制。如 Philips公司的PDIUSBD12、ISP1581以及National公司的USBN9602、南京沁恒公司的CH372、CH375等。这类 USB接口芯片价格较低、接口方便、灵活性高,针对不同的硬件环境可以配合多种MCU使用,如单片机、、FPGA都可以。综合各方面因素考虑,本设计选用第三种方式,即采用专用USB接口芯片为测量仪器扩展USB接口。
  硬件设计
  USB控制器
  USB控制器通过控制USB接口芯片实现协议处理和数据交换。在本设计中选用芯片TMS320VC33作为微控制器,这主要是基于两方面的考虑:一是其运算速度较快,指令周期仅为13nS,可以最大限度地发挥USB接口芯片的潜力;二是该芯片性价比高,且具有浮点运算功能,扩展浮点精度可达40位。
  USB接口芯片
  USB接口芯片用以完成USB通信底层的数据链路级交换,并对本地微控制器提供一个并行接口。
  本文选用PHILIPS公司的PDIUSBD12作为USB接口芯片。该芯片可与任何微控制器实现高速并行接口(2Mb/s),允许使用现存的体系结构并使固件投资减到最小。这种灵活性减少了开发时间、风险和成本,是开发高效低成本的USB外围设备的一种快捷途径。
  PDIUSBD12一共有三组端点:端点0完成控制传输;端点1可以配置成中断传输;端点2有128B的缓冲区,是主要的数据传输端点。
  接口电路
  采用单独地址/数据总线配置,即用DSP的某地址线控制PDIUSBD12的A0引脚,实现命令数据的选择。A0=1表示传送命令,A0=0表示传送数据。片选(CS )及挂起(SUSPEND)信号分别由DSP的I/O口控制。读写选通信号WR 、RD 可以用DSP的R/W引脚及其取反后控制。但这样需要在电路中增加反相器,为了节约器件从而缩小电路体积,可以另外选择一个I/O口控制 PDIUSBD12的读选通RD。本设计中选用PAGE1,通过对不同地址的访问来区分对PDIUSBD12的读写操作。这样PDIUSBD12只占用微控制器的三个地址资源,其一用来向PDIUSBD12写命令,其二用来向PDIUSBD12写数据,另外一个用来从PDIUSBD12读数据。对DSP而言,PDIUSBD12就相当于一个有8位数据总线和3个地址的存储器件。
  设备采用自供电方式,需要将EOT 通过一个10k?的电阻接至USB电缆的VCC(+5V)端,并加1M?下拉电阻,借此检测USB设备是否已经连接到USB口。
  软件设计
  USB软件设计包括固件(firmware)程序、PC端的驱动程序和应用程序。其中固件程序要求编写者对复杂的USB通信协议有深刻的理解,编程难度较高,在本论文中将详细介绍。
  固件编程
  固件程序是写入MCU内的程序,使MCU可以完全按照USB协议,识别接收到的信息包类型,对包的内容、意义进行分析,并按照要求完成相应的动作。通过这些不同类型包的传递,完成MCU与接口芯片的命令及数据交换,进而实现主机与设备间的通信。
  固件程序设计成中断驱动模式,采用模块化设计。
  主循环
  主循环中主要完成DSP的寄存器及端口初始化,向PDIUSBD12发送设置模式命令,接通SoftConnect。判断是否接收到建立包(setup package),若收到则调用标准请求处理程序进行处理,若收到主机请求信号,则调用数据发送程序发送数据。
  中断处理程序
  中断处理程序是整个固件程序设计的重点。将DSP设置为下降沿触发,当PDIUSBD12接收到主机发送的信息包时,触发DSP进入中断。首先通过读取PDIUSBD12的中断寄存器判断所发生中断的类型,然后根据具体的中断类型进入相应的处理子程序。
  标准请求处理程序
  USB协议中规定了11条所有USB设备都必须支持的标准请求,这些请求都是通过端点0发送的。标准请求处理程序对主机发出的标准请求进行响应,获取设备的性能及状态,并给设备分配地址且进行相应配置,最终完成枚举过程。
  硬件接口及PDIUSBD12命令操作程序
  硬件接口程序集成了DSP对PDIUSBD12的读写操作,是整个固件程序中最底层也是使用最频繁的部分,将它独立成一个模块编写极大地方便了程序在不同硬件平台上的移植。值得注意的是:PDIUSBD12要求数据线上的数据建立时间和保持时间必须大于40nS,因此编程时需要插入至少4个软件等待状态。另外,因为PDIUSBD12的最小读写周期为500nS,所以在每次对其进行读写操作后必须增加适当的延时。
  数据发送及接收程序
  当用户通过主机端应用程序向设备索要数据时,DSP调用数据发送子程序完成数据发送,针对发送数据量的大小,可以选择使用端点1或者端点2完成。对于主机发送数据的接收,在端点0及端点1的IN中断子程序中即可完成。发送数据子程序如下:
  固件程序对时间敏感,所以编程时要特别注意时序问题。由于USB枚举过程很快,如果连续三次接收不到应答包就结束枚举,所以调试时要注意不能采用CCS的单步调试,可以采用断点调试。调试过程之初经常会遇到的一种状况是指示灯闪烁三次以后熄灭,这说明主机检测到了设备连接,但无法和设备进行对话来了解设备的信息。这表明固件程序还没有开始正常工作,需仔细检查程序中的错误之处。
分享给小伙伴们:
我来说两句……
最新技术贴
微信公众号二
微信公众号一&>&&>&&>&&>&USB_HID协议中文版_USB接口HID设备.pdf
USB_HID协议中文版_USB接口HID设备.pdf
上传大小:1.06MB
USB HID开发必备的资料,包括底层固件的枚举描述符配置,上位机HID设备枚举、查找、连接及通讯
嵌到我的页面
<input type="text" value="">
综合评分:5(6位用户评分)
所需积分:0
下载次数:167
审核通过送C币
创建者:chengdong1314
创建者:qianleikuihai
创建者:baogangxitu
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
USB_HID协议中文版_USB接口HID设备.pdf
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:[Q&A]关于Uboot中文件包含(#include)的一个疑点 - 驱动开发当前位置:& &&&[Q&A]关于Uboot中文件包含(#include)的一个疑点[Q&A]关于Uboot中文件包含(#include)的一个疑点&&网友分享于:&&浏览:0次[Q&A]关于Uboot中文件包含(#include)的一个疑问[size=16px假设Uboot所在的目录是:/uboot
下面我们来看看/uboot/arch/arm/cpu/armv7/start.S文件(这是Uboot的入口)[/size]
File&:start.S(/uboot/arch/arm/cpu/armv7/start.S)&
[code=c]#include&&asm-offsets.h&
#include&&config.h&
#include&&version.h&
#include&&common.h&
#include&&configs/mini210.h&
#include&&s5pc110.h&
.globl&_start
_start:&b&&reset
&&&&ldr&pc,&_undefined_instruction
&&&&ldr&pc,&_software_interrupt
&&&&ldr&pc,&_prefetch_abort
&&&&ldr&pc,&_data_abort
&&&&ldr&pc,&_not_used
&&&&ldr&pc,&_irq
&&&&ldr&pc,&_fiq[/code]
在start.S中包含了好几个xxx.h文件,其中:
&&&&#include&&config.h&的绝对路径是/root/include/config.h
&&&&#include&&configs/mini210.h&的绝对路径是/root/include/configs/mini210.h
然而start.S的绝对路径是/uboot/arch/arm/cpu/armv7/start.S
我的疑问是:
&&&&在预编译的时候,编译器是怎么正确的找到这些包含文件的呢?------解决方案--------------------查看你的编译器设置,应该有一项是include路径设置,这些目录都设在里面的------解决方案--------------------b&&reset。。。?????无限重启??楼主,能给段正常的代码么?未执行就已经跳转重启了。。。你烧进去压根儿就启动不了好么~~~------解决方案--------------------在&makefile&中应该有头文件的路径设置,都是这么做的------解决方案--------------------引用:b&&reset。。。?????无限重启??楼主,能给段正常的代码么?未执行就已经跳转重启了。。。你烧进去压根儿就启动不了好么~~~
没有吧,LZ给的b&reset&是跳转到reset标记处,如果是&b&_start,才是死循环,看清楚。
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有如何利用USB接口走非USB协议完成枚举?
来源:csdn
【目前在做一个项目,有这样一个需求。
1、两个设备通过USB接口连接,当特定设备连接主机(Android)时主机需要识别该特定设备,完成注册,并将其虚拟为一个网卡。其它设备不响应;
2、二者通过特定的协议进行数据传输;
目前对我们来说比较难的问题是第一步:如何通过USB接口走自己的协议完成设备枚举,或者说,可以配合USB协议完成枚举?将自己的驱动挂接到USB协议中??
然后如何走自己的协议传输数据应该不难。
另外:硬件架构上CPU的USB HOST接口接了一个USB桥(1in4out),其中一个口专门用于特定设备的接入,其他口可以接别的USB设备。
因为对USB了解不是太多,期望大家能帮我想想从Android底层如何实现上述功能,如何架构?谢谢。】
需求描述的不是太清晰。
“虚拟成网卡”是重点吗?如果是,那么是有真正的网卡驱动的。
如果重点是自己的协议的话,那就更好实现了,之前看一款打印机 usb连接的。通信协议居然是HTTP。
那么也就是说后者是完全可以实现的,你想用什么协议通信就用什么。
关于驱动和Android关系不是太大,和核心Linux关系才比较大的的。
不好意思,我的描述是有点问题,我开始自己也感觉一头雾水,我再补充一下。
现在通信协议有现成的,是特定设备指定的,我们只需要按特定格式送出数据就可以了。我初步想实现过程应该是这样:
1、通过USB接口接入特定设备,主机这边应该要加载设备驱动,完成设备的枚举,知道这个设备接进来了。
2、建立完握手流程后,通过特定的协议进行数据传输。
该模式通信相当于只借用了USB接口的物理接口,协议全是自己的。跟你说的打印机USB连接的应用应该相差不大。
但现在存在一个问题是:主机CPU这边的USB接口是接了一个usb hub,特定设备室接在usb hub上的。那么我想CPU和usb hub这边通信应该是走usb协议吧?那我们自己的协议应该封装在哪里呢?
不知道我的描述有没有清晰点,抱歉各位。
正巧在看Android的usb通信,第一条说到根上就是设备的枚举嘛。说的有点过了,其它管不管有驱动,都可以正常枚举的。
关于1,直接看以及上边说的AdbTest例子稍微改下就可以完成检测你的USB设备。
看你向下的描述就显示操心过多了, 什么hub等等 这和你usb通信没有直接关系,你通你的信就好了。
自己的协议封到哪里的问题还是要说下的,我给你回忆一下我接触的那个打印机是如何实现基于usb的.
1.主机发送:"GET /DevMgmt/ProductStatusDyn.xml HTTP/1.1\r\nAccept: text/plain\r\nHost:localhost\r\nUser-Agent:hplip\r\n\r\n"
2.客户机回复一个XML文件,其中包含打印机当前状态信息。
从上面发送的指令看就是一个HTTP协议。但是或许你要问这个是怎么发送的,我要说是这个和USB如何发送根本不挨着,这么问说明你之前没有做过usb通信的程序。usb通信在各个系统中都有封装,有传输数据的api直接把数据发送过去,然后再使用接收的api接收客户端回复的数据就完成了通信。换句话说,usb仅仅是通道仅此而已。
没有接触一个东西时,我也会东想西想,你这样想也是正常的。:)
有不少错别字,自己冲着理解吧,不好意思,CSDN也不允许改贴。:(
再分享一个东西,你的设备有没有被Android设备检测到可以使用这个Apk 检测一下。它同样是基于Android的usb host api的。
很喜欢你这种很认真的看回帖,且认真再回帖;特别不喜欢那种张口就问回帖中一个稍微不理解的问题而不是先去Google一下,这样才有探讨的味道。
另:如果你对Android usb host 的这种编程不是太信任或者叫熟悉,你可以在Linux上基于libusb编写出你的通信程序以检测你的从机设备和通信协议都是否正常,有没有不妥的地方。完全可以了,就再使用Android的usb host api实现一下就好了。
祝你好运!
呃,这个,最快的方式不就是用USB分析仪捉一下正常的枚举过程,然后让从机进行仿照进行不就得了,你说的非USB协议我是没听懂了,反正USB协议都是设置好端点描述符,描述好类型,然后就可以枚举的了,之前帮客户做过一个苹果的读卡器,那个在枚举的过程还要有些东西的认证,但那也是设置好端点的类型,到对应的时机进行触发就可以了,不知道是不是你所要的。
我的确没有做过USB相关的东西,突然问我这个问题,能不能实现,当时实在是没有办法,于是才上来问问,没想到你能给出如此详细精准的描述,万分感谢。
现在这个问题已经在实施过程中,但我没有进一步跟进驱动开发。现在他们虚拟网卡的驱动已经基本调好,在内核中已可以发现设备了。由于设备的保密需要,不再详细介绍。
真心感谢。。。
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动

我要回帖

更多关于 单纯疱疹病毒感染 的文章

 

随机推荐