USB设备的开发一般包括主机端(上位机)驱动程序的开发(如果您的USB设备符合某一标准设备类且主机端已经提供了此类设备的驱动程序的话,则可以省掉此步骤)和USB设备端驱动程序的开发,有时还可能包括主机端应用程序的设计工作。

1、设备系统需求分析

设备系统需求分析是进行USB设备设计的第一步,通过对USB设备功能特性和USB主机端操作系统的分析,可以获得实现该USB设备的软硬件设计需求。

在该阶段,设计者需要充分了解该设备的应用环境(如USB主机的软件、硬件平台),这样以用来确定是否需要提供USB主机端相关软件工作,以便该设备能得到广泛地应用。为了提供合理的软硬件设计方案,设计者还需要充分了解市场上的USB接口芯片,不同的USB接口芯片在USB协议上有着不同程度的支持,比如,对数据包地址的硬件自动识别、CRC16和CRC5的自动生成等等。

当然,在确定具体的软硬件需求时,产品的开发费用和开发周期也是必须考虑的因素。

2、设备硬件需求

通过设备系统需求分析,以及对市场上USB接口芯片的充分了解,设计者必须确定相应的设备硬件结构以及可能采用的硬件。在选择器件时,需要考虑到器件体积、功耗等,因为,小的设备功耗,有利于采用总线供电模式。必须通过设备系统的功耗来确定是否需要提供本地电源。  

3、设备软件需求

在确定了设备的硬件结构以后,该设备的软件结构就会同时产生。不同的硬件平台,可能需要不同程度的软件支持。

4、设备硬件设计

在选定USB控制芯片以后,如果是带USB接口的单片机,则是一般单片机应用系统的开发;反之,就是如何把USB接口芯片与单片机应用系统融合的问题。一般USB接口芯片都支持多种并行总线结构(复用/非复用),可以方便的与多种单片机接口。硬件设计中要注意的就是USB接口芯片的时钟速度比较高,所以匹配网络的设计以及PCB布线要特别关注。

5、设备软件设计

USB设备的软件设计主要包括两部分:一是USB设备端的软件开发,主要完成USB协议处理与数据交换以及其它应用功能程序。二是主机端的程序,由USB通信程序(驱动程序)和用户服务程序两部分组成,主机端用户服务程序通过USB通信程序(驱动程序)与系统USBDI(USB Device Interface)通信,由系统完成USB协议的处理与数据传输。主机端程序的开发难度比较大,程序员不仅要熟悉USB协议,如果需要开发主机端驱动程序的话,还要熟悉主机端操作系统(如常用的WINDOWS系统)体系结构并能熟练运用DDK工具(驱动程序开发工具)。

6、设备调试

要快捷、成功的开发一个USB设备,正确、合理的调试方法是必不可少的环节。调试基本分三步进行:首先对外部设备(单片机部分)借助PC调试软件(常用的有:bus hound、USB MONITOR,某些芯片生产商还提供针对特定芯片的调试软件)将设备端的USB协议(主要有描述符请求、端口配置、地址设置以及基本数据交换)调通(当然我们还可以使用USB分析仪等开发设备,但此类设备一般比较昂贵)。然后,用调试好的USB设备接口来开发、调试PC软件,这一步相对比较容易。最后,加上USB设备端的其它用户程序,对整个完整的系统进行系统调试。

USB开发基础:USB设备的开发流程相关推荐

  1. Python自动化开发基础 分布式监控系统开发实战 day8-李杰-专题视频课程

    Python自动化开发基础 分布式监控系统开发实战 day8-10994人已学习 课程介绍         从0基础开始讲解Python语法.流程控制.函数式编程.面向对象开发等重要的Python开发 ...

  2. Linux驱动开发:字符设备驱动开发实战

    Linux驱动开发:字符设备驱动开发实战 一.工程创建 VSCode 创建工程,设置 C/C++ 配置,导入 linux kernel 源码目录,方便 vscode 写代码自动补全,vscode 配置 ...

  3. Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

    一.前言 块设备主要为存储设备设计的框架. 在前面章节Linux下驱动开发_块设备驱动开发(内存模拟存储) 里介绍了块设备驱动编写思路,并且利用内存模拟了硬件存储,完成了块设备驱动开发测试.这一篇文章 ...

  4. 驱动开发基础知识——设备树

    BSP开发工程师[原来BSP就是那些被指臃肿的文件啊 BSP的出生 Linux经过不断的发展,原先嵌入式系统的三层结构逐步演化成为一种四层结构. 这个新增加的中间层次位于操作系统和硬件之间,包含了系统 ...

  5. 嵌入式linux设备驱动开发,嵌入式Linux设备驱动开发简介.pdf

    清远见--嵌入式培训专家 http :// "黑色经典"系列之<嵌入式Linux 应用程序开发详解> 11 章 嵌入式Linux 设备驱动开发 本章目标 本书从 6 章 ...

  6. ios直播开发基础,推流协议及流程

    一:推流需要的三方库和一些常用格式和协议介绍 1.rtmp协议 :实时消息传输协议,Adobe Systems公司为Flash播放器和服务器之间音频.视频和数据传输开发的开 放协议,因为是开放协议所以 ...

  7. 敏捷开发基础篇(一)-流程与角色基本概念

    一.Agile开发模式 Agile开发模式包括四大部分:Product Backlog(产品用户故事).Sprint Backlog(迭代用户故事).Backlog tasks(用户故事开发任务,迭代 ...

  8. hadoop大数据开发基础_Java大数据开发(三)Hadoop(2)经典的Hadoop

    点击蓝字关注我 1 什么是大数据 1.Hadoop是一个由Apache基金会所开发的分布式系统基础架构 2.主要解决,海量数据的存储和海量数据的分析计算问题. 3.广义上来说,HADOOP通常是指一个 ...

  9. web前端开发基础知识_前端开发是什么?学前端开发需要学什么语言?你想成为程序员吗?...

    Web前端是什么 前端的本质就是通过一定的程序代码来实现用户界面的ui 交互.可以认为用户在终端所看到的和所操作的都属于前端,也就是说分为渲染页面和处理用户操作两块. 前端开发是创建Web页面或app ...

  10. VxWorks设备驱动程序开发指南---驱动程序的分类

    8D Spaces Reliability & Stability & Efficiency 目录视图 摘要视图 订阅 VxWorks设备驱动程序开发指南(三)---驱动程序的分类 2 ...

最新文章

  1. 往阿里云服务器上安装Mysql
  2. linux存储--文件描述符fd与FILE结构体(二)
  3. qq登录界面句柄_别小看QQ邮箱测试,80%的测试新手都不能写出完整的测试用例~...
  4. 动态规划——How to Type(hdu2577)
  5. perl6检测网站CMS脚本(测试代码)
  6. 线程优先级抢占实验【RT-Thread学习笔记 3】
  7. hdu 2986 Ballot evaluation (Simulation)
  8. 用Java实现HTTP文件队列下载
  9. 最近使用VirtualBox安装虚拟机,频繁崩溃。是不是有什么隐藏限制?
  10. Git merge合并冲突 error: ‘merge‘ is not possible because you have unmerged files的解决方法
  11. 来一起看看抖音对于功耗优化是怎么做的;抖音Android性能优化实战
  12. Improved Variational Inference with Inverse Autoregressive Flow
  13. Java——打印九宫格的算法思路(任意维奇数行方阵)
  14. 电话机器人成骚扰机器?程序员可不背锅
  15. 哪些语句在python中非法_下列语句中,在Python中是非法的
  16. 一篇“从入门到上手”的Solidworks机械设计教程
  17. 黑产系列02-黑产画像
  18. 抖音去水印小程序太坑了,每天只能下载一个还要钱。还是自己用Python写一个得劲
  19. ubuntu 通过文件夹打开终端,通过终端打开文件夹
  20. error:/usr/bin/ld:skipping incompatible ./libxxxx.so when searching for -lxxxx

热门文章

  1. 2020年信号与系统课程批改工作处理程序
  2. python cv2模块安装_Python运行脚本前,自动安装需要的模块包
  3. python怎么做自动化测试仪器经销商_Python自动化测试踩坑记录(企业中如何实施自动化测试)...
  4. go读取最后一行_CPU缓存体系对Go程序的影响
  5. java打印文档_从Java应用程序打印文档?
  6. Android混合推送,MUI框架-推送配置核心代码-个推推送
  7. 计算机可以保研什么专业吗,【计算机专业推免】推免生是什么?成为推免生要达到那些要求?...
  8. c 正则去除a以外的html,正则表达式:去除除SRC以外的HTML属性
  9. java接口防抖_前端性能优化:高频执行事件/方法的防抖
  10. 【 Vivado 】输入延迟约束(Constraining Input Delay)