- 博客(14)
- 收藏
- 关注
原创 Linux音频驱动
1. 音频接口简介录音: 模拟信号转换为数字信号的过程,完成这个功能的就是 ADC 芯片。放音: 是将数字信号转化为模拟信号,而完成这个功能的是 DAC 芯片。 处理器想要进行录音与放音, 就需要ADC / DAC两颗芯片即可。但是音频不单单是能出声、能听到就行。我们往往需要听到的声音动听、录进去的语音贴近真实、可以调节音效、对声音能够进行一些处理(需要 DSP 单元)、拥有统一的标准接口,方便开发等等。 将这些针对声音的各种要求全部叠加到 DAC 和 ADC 芯片上,那么就会得到一个专门用于音
2020-11-21 21:16:29 1914
原创 块设备驱动分析
块设备驱动是Linux 三大驱动类型之一。块设备驱动要远比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统,本文重点学习一下块设备相关驱动概念,不涉及到具体的存储设备。1. 什么是块设备? 块设备是针对存储设备的,比如 SD 卡、EMMC、NAND Flash、Nor Flash、SPI Flash、机械硬盘、固态硬盘等。因此块设备驱动其实就是这些存储设备驱动,块设备驱动相比字符设备驱动的主要区别如下:①、块设备只能以块为单位进行读写访问,块是 linux 虚拟文件系统(VFS)基
2020-11-21 21:15:33 658
原创 点滴——poll函数的使用
poll提供的功能与select类似,不过在处理流设备时,它能够提供额外的信息。#include <poll.h>int poll(struct pollfd fd[], nfds_t nfds, int timeout);参数:1)第一个参数:一个结构数组,struct pollfd结构如下:struct pollfd{int fd; //文件描述符short events; //请求的事件short revents; //返回的事件};events和rev
2020-11-21 21:11:05 382
原创 USB2.0协议入门学习(1)
一、简介 USB 是一种支持热插拔的高速串行传输总线,它使用差分信号来传输数据,最高速度可达 480Mb/S。USB 支持“总线供电”和“自供电”两种供电模式。在总线供电模式下,设备最多可以获得 500mA 的电流。USB2.0 被设计成为向下兼容的模式,当有全速(USB 1.1)或者低速(USB 1.0)设备连接到高速(USB 2.0)主机时,主机可以通过分离传输来支持它们。一条 USB 总线上,可达到的最高传输速度等级由该总线上最慢的“设备”决定,该设备包括主机、HUB 以及 USB 功能设备。
2020-11-21 21:09:08 957
原创 一个通用的Makefile
一、MakefileCROSS_COMPILE = arm-linux-gnueabihf-AS = $(CROSS_COMPILE)asLD = $(CROSS_COMPILE)ldCC = $(CROSS_COMPILE)ccCPP = $(CC) -EAR = $(CROSS_COMPILE)arNM = $(CROSS_COMPILE)nmSTRIP = $(CROSS_COMPILE)stripOBJCOPY = $(CROSS_COMPILE)objcopyO
2020-11-21 21:04:04 112
原创 Linux网卡应用程序测试
一、环境搭建1、设置VMWARE的网络为桥接,并选择哪一个网卡2、设置开发板网卡网段和PC不相同3、根据网卡设备的PID,VID(grep “0x3327” -nR),配置内核以支持所使用的网卡,以及该网卡驱动的依赖。(cd drivers/net/wireless) -> ath9k4、网卡需要下载固件。把固件htc_9271.fw放到单板/lib/firmware。接上USB网卡, ifconfig wlan0 up二、使用WiFi网卡 四种应用程序:iw, wpa_supplic
2020-11-21 20:53:44 323
原创 strtok的使用
strtok分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。原型char *strtok(char s[], const char *delim);功能分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。例如:strtok(“abc,def,ghi”,","),最后可以分割成为abc def ghi.尤其在点分十进制的IP中提取应用较多。
2020-11-19 21:53:11 286
原创 UVC驱动分析
前言 通常来说,产品的驱动程序不需要编写,Linux内核提供了足够完善的驱动供我们使用。但是,本着追求进步、实事求是、天天向上的理念(xian de dan teng),最终完成了本鸿篇巨作之USB摄像头驱动(UVC),正所谓:学好数理化以及UVC,走遍天下全不怕。瞎扯到此为止,接下来开始认真的记录uvc驱动学习过程。驱动不完善,还有很多不准确的地方,望各位不吝赐教 ????,最后,提前感谢各位的阅读。一、uvc驱动简述 UVC全称为USB Video Class,即:USB视频类,是一种为U
2020-11-15 10:30:38 4168 2
原创 ALSA声卡驱动
说明 该项目是基于友善之臂的mini2440单板,实现内核ALSA声卡驱动的完全移植与重构,实现了一个经典的平台驱动设备总线的模型。对ALSA声卡设备的完美支持,并将自己写的驱动放入内核,成功编译通过并执行。该驱动的框架包含如下三个部分: 1、machine:单板相关,通过设备私有数据的link成员,决定单板(mini2440)使用的CPU与codec两侧的dai(Digital Audio Interfaces(音频设备的硬件接口),以及两侧用于数据传输的mda传输通道。 2、platf
2020-11-15 10:20:55 705
原创 总线全记录——UART
一、简介 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter,通常称作UART) 是一种串行异步收发协议,通常也叫做 COM 接口,串行接口指的是数据一个一个的顺序传输,通信线路简单。使用两条线即可实现双向通信,一条用于发送,一条用于接收。串口通信距离远,但是速度相对会低,串口是一种很常用的工业接口。 UART 作为串口的一种,其工作原理也是将数据一位一位的进行传输,发送和接收各用一条线,因此通过 UART 接口与外界相连最少只需要三条线:
2020-11-15 10:17:18 1545
原创 总线全记录——SPI
一、简介 SPI 全称是 Serial Perripheral Interface,也就是串行外围设备接口。SPI 是 Motorola 公司推出的一种同步串行接口技术,是一种高速、全双工的同步通信总线。 相比于I2C通信,SPI时钟频率相比 I2C 要高很多,I2C最快只能达到400KHZ,而SPI最高可以工作在上百 MHz。SPI 以主从方式工作,通常是有一个主设备和一个或多个从设备,一般 SPI 需要4 根线,但是也可以使用三根线(单向传输),本文主要探讨标准的 4 线 SPI,这四根线如
2020-11-15 10:15:21 306
原创 总线全记录——I2C
一、简介 I2C 是很常见的一种总线协议,I2C 是 NXP 公司设计的,I2C 使用两条线在主控制器和从机之间进行数据通信。一条是 SCL(串行时钟线),另外一条是 SDA(串行数据线),这两条数据线需要接上拉电阻,总线空闲的时候 SCL 和 SDA 处于高电平。I2C 总线标准模式下速度可以达到 100Kb/S,快速模式下可以达到 400Kb/S。I2C 总线工作是按照一定的协议来运行的,接下来就看一下 I2C 协议。 I2C 是支持多从机的,也就是一个 I2C 控制器下可以挂多个 I2C
2020-11-15 10:14:15 733
原创 总线全记录——CAN
一、简介 CAN 是目前应用非常广泛的现场总线之一,主要应用于汽车电子和工业领域,尤其是汽车领域,汽车上大量的传感器与模块都是通过 CAN 总线连接起来的。CAN 总线目前是自动化领域发展的热点技术之一,由于其高可靠性,CAN 总线目前广泛的应用于工业自动化、船舶、汽车、医疗和工业设备等方面。二、特点CAN 的特点主要有一下几点:①、多主控制 在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier 以下称为 ID)决定优先级。
2020-11-15 10:03:56 423 1
原创 点滴——slelect
select用法select的函数格式:int select(int maxfdp,fd_set *readfds,fd_set *writefds,fd_set *errorfds,struct timeval *timeout);各个参数的用法:int maxfdp:是一个整数值,是指集合中所有文件描述符的范围,即所有文件描述符的最大值加1,不能错!在Windows中这个参数的值无所谓,可以设置不正确。struct fd_set:可以理解为一个集合,这个集合中存放的是文件描述符(file d
2020-11-15 09:40:46 151
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人