
外设协议
文章平均质量分 52
chinaunixj
这个作者很懒,什么都没留下…
展开
-
USB 学习笔记
刚刚开始接触USB,记录一些基本知识。注:有大量转载别人的内容。1.端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)。2.帧:时间概念,在USB中,一帧就是1MS,它是一个独立的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是一个USB的传输动作。转载 2012-04-19 10:32:30 · 1120 阅读 · 0 评论 -
Linux USB驱动框架分析(六)
说的usb子系统的IO操作,不得不说usb requestblock,简称urb。事实上,可以打一个这样的比喻,usb总线就像一条高速公路,货物、人流之类的可以看成是系统与设备交互的数据,而urb就可以看成是交通工具。在一开始对USB规范细节的介绍,我们就说过USB的endpoint有4种不同类型,于是能在这条高速公路上流动的数据也就有四种。但对车是没有要求的,urb可以运载四种数据,不过你要先告转载 2012-04-18 14:13:06 · 955 阅读 · 0 评论 -
Linux USB驱动框架分析(五)
接下来的工作是向系统注册一些以后会用的的信息。首先我们来说明一下usb-set_intfdata(),他向内核注册一个data,这个data结构可以是任意的,在这段程序用向内核注册了一个usb_skel结构,就是我们刚刚看到的被初始化的那个,这个data可以在以后用usb_get_intfdata来得到。 usb_set_intfdata(interface, dev);转载 2012-04-18 14:12:32 · 689 阅读 · 0 评论 -
Linux USB驱动框架分析(四)
probe是usb子系统自动调用的一个函数,有USB设备接到硬件集线器时,usb子系统会根据production ID和vendorID的组合或者设备的class、subclass跟protocol的组合来识别设备调用相应驱动程序的probe(探测)函数,对于skeleton来说,就是skel_probe。系统会传递给探测函数一个usb_interface *跟一个struct usb_devic转载 2012-04-18 14:11:58 · 790 阅读 · 0 评论 -
Linux USB驱动框架分析(三)
下面我们来分析一下usb-skeleton的源码吧。这个范例程序可以在linux-2.6.17/drivers/usb下找到,其他版本的内核程序源码可能有所不同,但相差不大。大家可以先找到源码看一看,先有个整体印象。 之前已经提到,模块先要向内核注册初始化跟销毁函数:static int __init usb_skel_init(void){ int result;转载 2012-04-18 14:11:29 · 601 阅读 · 0 评论 -
Linux USB驱动框架分析(二)
好,了解过USB一些规范细节之后,我们现在来看看Linux的驱动框架。事实上,Linux的设备驱动,特别是这种hotplug的USB设备驱动,会被编译成模块,然后在需要时挂在到内核。要写一个Linux的模块并不复杂,以一个helloworld为例:#include #include MODULE_LICENSE(“GPL”); static int hello_init(voi转载 2012-04-18 14:10:56 · 618 阅读 · 0 评论 -
Linux USB驱动框架分析(一)
Linux USB驱动框架分析(一) 初次接触与OS相关的设备驱动编写,感觉还挺有意思的,为了不至于忘掉看过的东西,笔记跟总结当然不可缺,更何况我决定为嵌入式卖命了。好,言归正传,我说一说这段时间的收获,跟大家分享一下Linux的驱动开发。但这次只先针对Linux的USB子系统作分析,因为周五研讨老板催货。当然,还会顺带提一下其他的驱动程序写法。 事实上,Linux的设备驱动转载 2012-04-18 14:10:15 · 639 阅读 · 0 评论 -
实战Linux Bluetooth编程(五) Socket与Bluetooth
作者: Sam (甄峰) sam_code@hotmail.com Linux下Bluetooth编程,借用了Socket体制。也就是说,BlueZKernel部分将Bluetooth协议栈以网络协议的形式添加进网络协议栈,这样极大的方便了用户编程。下面Sam就结合Socket概念将LinuxBluetooth做个研究。 1957年10月4日,星期五,苏联发射了人类历史上第一颗人造转载 2012-04-18 14:09:17 · 730 阅读 · 0 评论 -
实战Linux Bluetooth编程(四) L2CAP层编程
作者:Sam (甄峰) sam_code@hotmail.com(L2CAP协议简介,L2CAP在BlueZ中的实现以及L2CAP编程接口) 一:L2CAP协议简介:Logical Link Control and AdaptationProtocol(L2CAP) 逻辑连接控制和适配协议 (L2CAP)为上层协议提供面向连接和无连接的数据服务,并提供多协议功能和分割重组操转载 2012-04-18 14:08:42 · 898 阅读 · 0 评论 -
实战Linux Bluetooth编程(三) HCI层编程
作者:Sam (甄峰) sam_code@hotmail.com(HCI协议简介,HCI在BlueZ中的实现以及HCI编程接口) 1. HCI层协议概述:HCI提供一套统一的方法来访问Bluetooth底层。如图所示: Bluetooth编程(三) HCI层编程" title="实战Linux Bluetooth编程(三) HCI层编程"> 从图上可以看出,Host转载 2012-04-18 14:08:18 · 1539 阅读 · 0 评论 -
实战Linux Bluetooth编程(二) BlueZ简介
作者: Sam(甄峰) sam_code@hotmail.com Linux下Bluetooth协议栈的实现.Linux下开放的蓝牙协议栈主要包括IBM公司的BlueDrekar,Nokia公司的Affix,Axis公司的OpenBT和官方协议栈BlueZ。我们主要面对Bluez来探讨。 BlueZ基础代码均是由MaximKrasnyansky完成的。包括:HCI,L2CAP,R转载 2012-04-18 14:07:45 · 710 阅读 · 0 评论 -
实战Linux Bluetooth编程(一) 协议栈概述
作者:Sam (甄峰) sam_code@hotmail.com Sam一年前在Linux下写了一个类似Windows下BTW的库--BTX。现在需要添加新功能时发现很多知识点都忘记了。所以决定在这次学习中,把一些bluezAPI记录下来。这几天又想,这样还不够,不如把Linux下的Bluetooth编程基础给记录下来吧。 前言:随着嵌入式系统的飞速发展,很多嵌入式平台上需要转载 2012-04-18 14:07:11 · 945 阅读 · 0 评论 -
Bluetooth协议栈学习之SDP
作者: Sam (甄峰) sam_code@hotmail.com SDP(service discoveryprotocol:服务发现协议)提供了一个方法,让应用程序检测哪些服务是可用的并探测这些可用服务的特性。服务发现协议(SDP或BluetoothSDP)在蓝牙协议栈中对蓝牙环境中的应用程序有特殊的含意,发现哪个服务是可用的和确定这些可用服务的特征。SDP定义了bluetooth转载 2012-04-18 14:06:48 · 617 阅读 · 0 评论 -
Linux下 USB HID device driver研究(三)--probe
作者: Sam(甄峰) sam_code@hotmail.com 1. 解读hiddevice probe程序:static int hid_probe(struct usb_interface*intf, const struct usb_device_id *id){ struct hid_device *hid; char path[64]; int i;转载 2012-04-18 14:05:38 · 1537 阅读 · 0 评论 -
Linux下 hid quirks的研究
者:Sam (甄峰) sam_code@hotmail.com Sam在读USB HIDdriver时,看到quirks这部分内容。因为之前在看USB部分代码时,常看到类似的内容,但对它的语义理解并不清楚,只是笼统地认为是一个需要修正的东西。现在稍微研究一下。 一:quirks简介:quirks: 怪癖的意思,也就是说它某种特性与通常的USB设备不相同。 Sam之转载 2012-04-18 14:05:04 · 1297 阅读 · 0 评论 -
USB封包格式
1.起始(SOP)封包 根集线器会在每1 ms时,送出SOF封包。这介于2个SOF封包之间的时间,即称为帧(frame)。SOF封包虽是属于令牌封包的一种,但却具有独自的PID形态名称SOF。通常目标设各都利用SOF封包来辨识帧的起点。这个封包常用于等时传输。也就是在1 ms的帧(高速是125 μS微帧,将1 ms切成8份)开始时,等时传输会利用SOF激活传输并达到同步传输的作用。而在每转载 2012-04-18 13:31:59 · 1270 阅读 · 0 评论 -
UniversalSerialBus通信资料,USB底层数据结构,USB2.0、USB1.1相关协议 (来自网络)
1、端点:位于USB设备或主机上的一个数据缓冲区,用来存放和发送USB的各种数据,每一个端点都有惟一的确定地址,有不同的传输特性(如输入端点、输出端点、配置端点、批量传输端点)2、帧:时间概念,在USB中,一帧就是1MS,他是个单独的单元,包含了一系列总线动作,USB将1帧分为好几份,每一份中是个USB的传输动作。3、上行、下行:设备到主机为上行,主机到设备为下行下面以一问一答的形式开转载 2012-04-18 13:30:54 · 992 阅读 · 0 评论 -
Linux USB 鼠标驱动程序解析
SB 总线引出两个重要的链表! 一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。 USB 设备驱动程序(usb device driver)和 USB 驱动程序(us转载 2012-04-18 12:48:46 · 646 阅读 · 0 评论 -
USB Protocol Wiki
http://wiki.osdev.org/Universal_Serial_Bushttp://en.wikipedia.org/wiki/Universal_Serial_Bus#Technical_details原创 2012-04-17 15:47:03 · 1046 阅读 · 0 评论 -
Linux内核USB主设备驱动程序
http://www.shangshuwu.cn/index.php/Linux%E5%86%85%E6%A0%B8USB%E4%B8%BB%E8%AE%BE%E5%A4%87%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F目录[隐藏]1ehci-hcd控制器1.1EHCI构架介绍1.2EHCI驱动程序分析2Mass St转载 2012-04-17 15:34:24 · 4572 阅读 · 4 评论 -
基于V4L2的视频驱动开发(2)
三、 V4L2 API及数据结构V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。1、常用的结构体在内核目录include/linux/videodev2.h中定义struct v4l2_requestbuffers //申请帧缓冲,对应命令VIDIOC_REQBUFS str转载 2012-04-13 14:17:21 · 751 阅读 · 0 评论 -
基于V4L2的视频驱动开发(1)
作者:刘洪涛,华清远见嵌入式学院讲师。编写基于V4L2视频驱动主要涉及到以下几个知识点:● 摄像头方面的知识 要了解选用的摄像头的特性,包括访问控制方法、各种参数的配置方法、信号输出类型等。● Camera解码器、控制器 如果摄像头是模拟量输出的,要熟悉解码器的配置。最后数字视频信号进入camera控制器后转载 2012-04-13 14:16:13 · 883 阅读 · 0 评论 -
V4L2编程
V4L2编程 2010-09-10 16:26:04| 分类:默认分类 | 标签:|字号大中小 订阅 转载:以前做的智能家居的项目用的是Linux2.6.13的核,使用的中星微的摄像头,移植了spcaview进行图像的获取,后来用了2.6.29的核,发现以前移植的spcaview不能用了,后来查了一下,发现2.6.29核采用了UVC的驱动(万能驱动),转载 2012-04-10 21:36:58 · 887 阅读 · 1 评论 -
Linux下视频采集及其显示
说明:1、本文所提及的摄像头不是zc0301p,使用的API不是V4L,显示所使用的上位机不是QT,特此说明。2、UVC只是一个驱动,如果它能成功驱动摄像头,会在/dev目录下出现video(或video0、video1等等)。这样,就可以使用Linux提供(准确说不是Linux提供,具体的百度吧)的一套API,即V4L2来访问摄像头了。“使用”是指我们写的采集数据的程序,而不是指“摄像头转载 2012-04-09 10:47:52 · 1619 阅读 · 2 评论 -
基于嵌入式Linux的视频采集系统---UVC驱动模型介绍
UVC 即 usb video class。USB协议中,除了通用的软硬件电气接口规范等,还包含了各种各样的Class协议,用来为不同的功能定义各自的标准接口和具体的总线上的数据交互格式和内容。这些Class协议的数量非常多,最常见的比如支持U盘功能的Mass Storage Class,以及通用的数据交换协议:CDC class。此外还包括Video、Audio Class, Print Cla转载 2012-04-09 10:32:14 · 3726 阅读 · 0 评论 -
关于Optical Zoom
光学变焦英文名称为Optical Zoom,数码摄像机依靠光学镜头结构来实现变焦。数码摄像机的光学变焦方式与传统35mm相机差不多,就是通过镜片移动来放大与缩小需要拍摄的景物,光学变焦倍数越大,能拍摄的景物就越远。光学变焦是通过镜头、物体和焦点三方的位置发生变化而产生的。当成像面在水平方向运动的时候,视觉和焦距就会发生变化,更远的景物变得更清晰,让人感觉像物体递进的感觉。 显而易见转载 2012-04-09 09:00:42 · 2292 阅读 · 0 评论 -
ALSA Audio API手册
ALSA Audio API手册This document attempts to provide an introduction to theALSA Audio API. It is not a complete reference manual forthe API, and it does not cover many specific issues thatmore co转载 2012-03-29 09:49:41 · 3664 阅读 · 0 评论 -
杂记asla-lib库函数snd_pcm_open打开流程
杂记asla-lib库函数snd_pcm_open打开流程浅析ac97声卡intel8x0的DMA内存substream->dma_buffer什么时候被赋值浅析ac97声卡intel8x0的runtime->dma_area是怎么获取的浅析ac97声卡intel8x0的pci总线DMA物理地址填充和音频数据发送流程aplay.c==> main==> snd_pcm_op转载 2012-03-29 09:26:32 · 2877 阅读 · 0 评论 -
/dev/dsp与alsa框架下设备节点打开和创建简易流程
浅析ASoC-audio驱动oss框架下/dev/dsp与alsa框架下设备节点打开和创建简易流程对于oss设备节点1. soundcore_fops -- 提供主设备号为14的oss节点open("/dev/dsp")操作soundcore_open,最后将调用snd_pcm_oss_open2. snd_pcm_oss_f_reg -- 提供最终的file转载 2012-03-28 18:43:58 · 2893 阅读 · 0 评论 -
ALSA学习笔记
1 整体架构 Application --------------- Alsa-lib User Space------------------------------------- Alsa Kernel Space ------- sound driver -------转载 2012-03-28 18:43:07 · 1146 阅读 · 0 评论 -
ALSA 0.9.0 HOWTO -- 基本PCM音频
作者: Matthias Nagorni译者: Kevin Lei转载请注明出处:http://kevinlei.cublog.cn1. 介绍这个HOWTO计划提供一个简短的介绍,使用ALSA 0.9.0写一个简单的音频应用程序.Section2解释了PCM音频最基本的函数.如果你删除其中的解释文本,那么最后你会得到一个极小的PCM回放程序. Section3简短地转载 2012-03-28 18:29:03 · 681 阅读 · 0 评论 -
ALSA声音编程介绍(译文)
period(周期):硬件中中断间的间隔时间。它表示输入延时。声卡接口中有一个指针来指示声卡硬件缓存区中当前的读写位置。只要接口在运行,这个指针将循环地指向缓存区中的某个位置。frame size = sizeof(one sample) * nChannelsalsa中配置的缓存(buffer)和周期(size)大小在runtime中是以帧(frames)形式存储的。转载 2012-03-28 18:26:24 · 673 阅读 · 0 评论 -
Linux音频编程2 音频录放框架
音频录放框架下面给出一个利用声卡上的DSP设备进行声音录制和回放的基本框架,它的功能是先录制几秒种音频数据,将其存放在内存缓冲区中,然后再进行回放,其所有的功能都是通过读写/dev/dsp设备文件来完成的: /* * sound.c */#include #include #include #include #include #inclu转载 2012-03-28 18:23:17 · 608 阅读 · 0 评论 -
Linux 音频 驱动 接口 简介 之 OSS 编程 方法 采样频率 量化 位数 实例 driver interface
音频器件与DSP间的接口两个概念:* 采样频率:每秒采多少次;* 量化精度(位数):每采一次采出的电压值分为多少份,如:量化精度为8bit,则分为2的8次方等份。PCM接口:由时钟脉冲(BCLK)、帧同步(FS)、数据接收(DR)、数据发送(DX)组成,每个音频通道获得一条独立的数据队列;IIS(Inter-IC Sound)接口:1980s-LRCLK(Left/转载 2012-03-28 18:22:19 · 795 阅读 · 0 评论 -
Linux音频编程指南
简介: 虽然目前Linux的优势主要体现在网络服务方面,但事实上同样也有着非常丰富的媒体功能,本文就是以多媒体应用中最基本的声音为对象,介绍如何在Linux平台下开发实际的音频应用程序,同时还给出了一些常用的音频编程框架。http://www.ibm.com/developerworks/cn/linux/l-audio/一、数字音频音频信号是一种连续变化的模拟信号,但计算机只能处理和转载 2012-03-28 18:20:45 · 481 阅读 · 0 评论 -
ALSA 编程:入门篇
1、GNU/Linux 系统下三大主流声卡驱动程序集Linux 有三个主流的声卡驱动程序集:OSS/Lite(也称为OSS/Free)、OSS/Full(商业软件)、ALSA(自由软件)。OSS/Lite 是现在linux内核中自带的声卡驱动程序集,最初由 Hannu Savolainen开发。后来 Hannu 跑去开发 Open Sound System(也就是上面所说的OS转载 2012-03-28 18:19:36 · 677 阅读 · 0 评论 -
Linux下ALSA声卡编程
一. 介绍 ALSA 标准是一个先进的linux声音体系。它包含内核驱动集合,API库和工具对Linux声音进行支持。ALSA 包含一系列内核驱动对不同的声卡进行支持,还提供了libasound的API库。用这些进行写程序不需要打开设备等操作,所以编程人员在写程序的时候不会被底层的东西困扰。与此相反OSS/Free 驱动在内核层次调用,需要指定设备名和调用ioctl。为提供向后兼容,转载 2012-03-28 18:18:54 · 632 阅读 · 0 评论 -
转 alsa录音放音执行流程详解
前言: linux中,无论是oss还是alsa体系,录音和放音的数据流必须分析清楚。先分析alsa驱动层,然后关联到alsa库层和应用层。 链接分析: core/pcm_native.c文件中.mmap = snd_pcm_mmap调用snd_pcm_mmap_data(substream, file, area);进一步调用substream->ops->mmap(s转载 2012-03-28 17:02:36 · 1517 阅读 · 0 评论 -
alsa驱动分析(2.6.21内核)之二
4. 通常的使用流程的分析通常使用alsalib来播放声音包括以下几个步骤:1, open,这个和oss相同,对应于alsa就是snd_pcm_open;2, param设置,这个就是snd_pcm_hw_params;3, 上层的alsa在设置param的成功以后或者出错的时候恢复都需要调用snd_pcm_prepare;4, wri转载 2012-03-28 16:53:32 · 978 阅读 · 0 评论 -
alsa驱动分析(2.6.21内核)之一
Alsa驱动分析 Guide RevisionHistoryDateIssueDescriptionAuthorFirst draft Wylhistory 目录1. Abs转载 2012-03-28 16:52:27 · 879 阅读 · 0 评论