DIY—USB学习板设计以及驱动开发

暑假在Intel OTC做访问学者时,看到公司有两个小巧的USB设备-温度计和LED音乐播放器,用于交大学生的Linux Kernel教学中。但看似简单的这些设备,还是从国外购买而得。因此,从intel回来之后,我就告诉学生能否设计一种USB学习板,让USB驱动程序的设计和调试门槛降低。过了一段时间,学生们告诉我,几经赛选,他们看中了Cypress公司的cy7c68013a  USB接口,打算从原理图设计做起,到PCB的布局布线,从0开始自己做一个板子。

又过了几天,学生们说他们设计的USB学习板已经制作好了,在我惊讶之时,他们已经动手调试插在USB口上的LED灯,当然,这是在自带的windows下调试,不管怎样,让灯亮起来,说明硬件设计的成功,那份喜悦从他们的神情中已经表露无疑了。

一个从零开始设计的东西,想怎么把玩就怎么把玩,因此,我建议他们在Linux下让驱动跑起来,几经折腾,在Linux下灯也闪烁起来了。于是,学生们把此作为一个简单的项目,引领后来者从零进行硬件到软件的设计,如果你感兴趣,可以按以下要求自己DIY:

1.      做一个USB接口的硬件,芯片选择Cypress公司的cy7c68013a,从原理图设计起,到PCB的布局布线,做一个完全的硬件

2.      在windows平台下,使用Cypress公司针对cy7c68013a提供的windows平台驱动,测试PCB板设计是否成功。

3.      使用Keil C51 工具写一个测试程序,下载到板子上,进行测试.

4.      了解USB硬件协议,达到会用的目的。

5.      研究Linux平台USB驱动的编写。

6.      编写针对开发板的USB驱动。编写用户程序,测试所写的驱动的正确性。

7.      设计具体的硬件设备,将其连接在开发板的接口上,编写具体的USB驱动和用户程序。

8.      扩展设计和改进。

原文地址:https://www.cnblogs.com/lucelujiaming/p/9467844.html

时间: 2024-08-30 15:56:10

DIY—USB学习板设计以及驱动开发的相关文章

在嵌入式学习困惑:做驱动开发还是做应用开发更有前途

在嵌入式学习过程中,很多人都有这样的困惑! 意思就是说,"你告诉我哪个更有前途,我就好好学哪个,另外一个就不用学了".问这种问题的同事往往会同时问另外一些问题:我以后就想做驱动开发,你教我这些应用开发的技术有什么用?C++用得多吗?学了有什么用?我以后不想做GUI,你教我Qt有什么用? 学习最忌讳的就是"有用的就学,没有用的就不学"这种功利的态度.两个问题:第一,在你还没学进去.还不了解这种技术时,要如何判断这种技术学了有没有用?只能是根据道听途说,看各种论坛上都怎

linux驱动学习(1)——字符设备驱动开发

(一)驱动程序介绍 (a)Linux驱动程序学习 知识结构: 1. Linux驱动程序设计模式(40%) 2. 内核相关知识(30%) 3. 硬件相关知识(30%) (b)驱动分类: ①字符设备: 字符设备是一种按字节来访问的设备,字符驱动则负责驱动字符设备,这样的驱动通常实现 open, close,read和 write 系统调用. ②块设备: 在大部分的 Unix 系统, 块设备不能按字节处理数据,只能一次传送一个或多个长度是512字节( 或一个更大的 2 次幂的数 )的整块数据,而Lin

【内核】四、搭建完整的mini2440开发板驱动开发环境(仿照JZ2440驱动开发环境搭建)

一.mini2440开发板驱动环境搭建: <mini2440用户手册>说明原文>>注意:本开发板提供的 linux 内核并不能直接用于 u-boot ,因为我们公司是不使用u-boot的,并且对其各个参数设置并不了解,关于 U-Boot 的使用方法用户可以参考网上的资料. 我了个...鉴于使用免费版的mini2440光盘资料,驱动开发环境搭建从未成功过,罢了,虽然以后LCD和触摸屏驱动学习时会有些问题,但还是换熟悉的u-boot和uImage来搭建环境吧. 二.在mini2440开

嵌入式科普:基本概念,设计流程,开发特点,如何学习

本文涉及的内容较多,个人知识水平有限,如有不当之处欢迎指正. 特别鸣谢:嵌入式大神 @tofulee ,@woshizmxin 对本文给出了一些很好的意见. 何为嵌入式 嵌入式是一个比较模糊的概念,也没有很准确的解释,其实也没必要一定找出个准确的解释来,并不影响学习. 参考了网上的资料,根据我的认识,可以认为嵌入式系统是一种完全嵌入到设备内部.解决特定问题的专用计算机.我们常用的电脑被认为是通用计算机,能安装各种软件,从而解决各种不同问题:而嵌入式系统是专用计算机,只负责解决特定问题,例如控制洗

Android深度探索(卷1)HAL与驱动开发学习笔记(5)

Android深度探索(卷1)HAL与驱动开发学习笔记(5) 第五章 搭建S3C6410的开发版的测试环境 1.  S3C6410 处理器概述   S3C6410是一个16/32位RISC微处理器,旨在提供一个具有成本效益.功耗低,性能高的应用处理器解决方案,像移动电话和一般的应用.它为2.5G 和 3G通信服务提供优化的H /W性能, S3C6410采用了64/32位内部总线架构.该64/32位内部总线结构由AXI.AHB 和APB总线组成.它还包括许多强大的硬件加速器,像视频处理,音频处理,

Linux USB 驱动开发(三)—— 编写USB 驱动程序

前面学习了USB驱动的一些基础概念与重要的数据结构,那么究竟如何编写一个USB 驱动程序呢?编写与一个USB设备驱动程序的方法和其他总线驱动方式类似,驱动程序把驱动程序对象注册到USB子系统中,稍后再使用制造商和设备标识来判断是否安装了硬件.当然,这些制造商和设备标识需要我们编写进USB 驱动程序中. USB 驱动程序依然遵循设备模型 -- 总线.设备.驱动.和I2C 总线设备驱动编写一样,所有的USB驱动程序都必须创建的主要结构体是 struct usb_driver,它们向USB 核心代码描

linux驱动开发学习路线

这篇文章是和大四学弟交流的文章,贴出来,和大家学习讨论 需要掌握的基本技能: C/C++/ python shell makefile linux基本操作 以android手机为例,我通俗的介绍下市场上产品的软件结构. 手机---> 硬件:cpu(arm架构单片机)+各种传感器(显示屏.距离传感器.温度传感器.gms模块 gprs模块等等).本质上手机就是一个单片机加上一堆传感器,单片机控制各个传感器与人进行负责的交互.(驱动工程师就是在linux底层让传感器可以工作,然后提供控制硬件的接口交给

Hasen的linux设备驱动开发学习之旅--异步I/O

/** * Author:hasen * 参考 :<linux设备驱动开发详解> * 简介:android小菜鸟的linux * 设备驱动开发学习之旅 * 主题:异步I/O * Date:2014-11-11 */ linux中最常用的输入/输出(I/O)模型是同步I/O.在这个模型中,请求发出后,应用就会阻塞,知道请求满足 为止.但是在某些情况下,I/O请求可能需要与其他的进程进行交叠.可移植操作系统接口(POSIX)异步I/O(AIO) 应用程序接口(API)就提供了这种功能. AIO基本

学习Android系统移植与驱动开发的心得1

首先,学习Android系统移植与驱动开发,我们需要了解两个概念.什么是“移植”?由于Android原生的代码支持的设备并不多,因此我们想要在自己的设备上完美运行Android,就需要另外开发一些程序,使得Android可以识别相应设备中的各种硬件,这个过程被称为“移植”.在这个移植的过程中,我们必需要了解另外一个知识,就是“驱动开发”(Android是基于Linux内核的).到底什么是“Linux驱动”呢?作为初学者,我们只需要知道任何的Linux驱动都有一个加载函数和一个卸载函数即可,它们分