自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 Linux PCI/PCIE(一) 协议

PCI总线是一种计算机的一种标准总线。其存在的目的就是想让cpu像访问内存一样去访问外设空间。举个例子,比如访问一个emmc设备,对于emmc本身想要在0x00这个空间地址存东西的时候,对于cpu来说可能不是要操作0x00,因为两个的地址空间不一样,就需要PCI总线,能使cpu操作的时候通过PCI控制器来进行地址空间转换。其特点就是速度很快。PCI是一种并行总线,由于PCI是并行总线,不同的数据线之间的信号会产生干扰,为了达到更高的速度,就诞生了PCIE这个协议。

2024-04-28 16:40:29 1269

原创 Linux 网络驱动(二)驱动讲解

为上层协议提供接口,其中它用到的关键数据结构都是skbuff。skbuff 定义再include/linux/skbuff.h比较关键的几个成员是网络协议栈(TCP/IP)每层(传输层,网络层)都会再head与data之间添加协议头,在tail与end之间添加新的协议,所以sk_buff结构体在各层协议之间传输不是通过拷贝结构体,而是通过移动这四个指针,来增加/移除协议头。下面介绍的sk_buff的操作接口都是定义在include/linux/skbuff.h。

2024-04-26 11:53:19 1600 2

原创 Linux 网络驱动(一) 接口介绍

主要说mac与phy之间的接口,一般分为两类:MDIO:mac用于读写phy寄存器用来控制phy的。MII/RMII/RGMII/GMII: 用来传输网络数据的。MII/RMII一般用于百兆网,RGMII/GMII一般用于千兆网,具体这几个接口的线总共有多少可以自己查下看看。MDIO接口,就是两个线 一根数据线MDIO双向,一根MDC时钟线。大致关系可以参考下面这个图:

2024-04-25 11:01:55 292 1

原创 Linux 音频(五)Machine 驱动

前面章节介绍了codec与platform驱动,但是仅仅只有这两个驱动,是无法构成一个完整的声卡来进行正常的工作的,需要Machine驱动来把他们串起来。个人理解machine驱动就是用来实例化一个声卡节点的,一般在Linux下 /proc/asound/cards。

2024-04-23 11:53:25 410 3

原创 Linux 音频(四) Platform 驱动

注意不要跟 Linux设备驱动模型的Platform混为一谈,前面的文章有提到 ALSA把音频分为了三大块 machine codec platform。Platform 是指对应得soc得音频这边得驱动,列如Samsung,rockchip都会有自己相应得platform驱动,其中platform驱动主要包含两块。驱动实现音频数字接口控制器的描述和配置。驱动实现音频 dma 操作,具体见结构体定义。

2024-04-19 17:47:27 1721 2

原创 Linux 音频(六)damp

amixer cset cget 在驱动实例化这些控件出来给用户来使用,用户可以在应用层直接的去修改控件的值来达到控制某些功能的目的。amixer contents 可以看到实例化出来的音频控件。

2024-04-19 14:55:54 454

原创 Linux 音频 (三)Codec驱动

一般就是用于 A/D 与 D/A转换编解码等等。

2024-04-19 11:22:47 755 1

原创 Linux 音频(二)ALSA框架

ALSA是 AdvancedSound Architecture 的缩写,目前已经成为了linux的主流音频体系结构。ALSA 官网链接:对于用户空间 alsa-lib提供了一系列接口,可以用对音频设备进行一些列操作。asoc是建立在标准的alsa core基础之上,为了更好支持嵌入式系统和应用于移动设备的音频 codec 的一套软件体系分为三大块: machine,platform,codec。

2024-04-18 16:53:33 474 2

原创 Linux 音频(一)基础相关知识

一般就是跟声音的响度有关,男生普遍大于女生。:与声音的音调有关,一般人能听到的范围是20hz-20Khz:与声音的音色有关系。

2024-04-18 15:16:48 270 1

原创 Linux driver 注册

整个linux里面的设备driver与挂载情况,是一个树形结构,不同的driver与dev挂载在不同的总线上。总线与总线之间也有类似父子的关系。可以像这么理解,platform_bus是一个虚拟总线,算是linux中最高级别的总线,拿i2c举例,i2c adapter匹配成功后,会生成一个i2c总线(可以理解为一个i2c控制器,感兴趣可以看下我之前写的I2C文章),然后才可以在这个i2c下挂载设备。

2024-04-14 11:42:13 156 1

原创 linux i2c驱动(三)I2C主从设备驱动

i2c驱动

2024-04-13 11:36:43 424 1

原创 linux i2c驱动(二)重要的结构体与接口

在Linux内核路径下 kernel\drivers\i2c 可以看到I2C相关的源码其中:(1)i2c-core.c 实现i2cd的核心功能(2)i2c-dev.c 此文件可以当作是一个学习i2c设备()驱动的一个模板,他并不是针对特定的设备去设计的。(3)busses文件夹包含了一些i2c主机控制器()的驱动。

2024-04-10 21:06:47 579

原创 linux i2c驱动(一)协议讲解

随着大规模集成电路技术的发展,把CPU和一个单独工作系统所必需的ROMRAMI/O端口A/DD/A等外围电路集成在一个单片内而制成的单片机或微控制器愈来愈方便。目前,世界上许多公司生产单片机,品种很多。其中包括各种字长的CPU,各种容量的ROM、RAM以及功能各异的I/O接口电路等等,但是,单片机的品种规格仍然有限,所以只能选用某种单片机来进行扩展。扩展的方法有两种:一种是并行,另一种是串行总线。由于串行总线的连线少,结构简单,往往不用专门的母板和插座而直接用导线连接各个设备。

2024-04-09 20:09:47 369

原创 plat_form和设备树实现蜂鸣器

platform_与设备树简介以及用它们实现蜂鸣器的响应。

2022-09-03 11:36:36 437 2

原创 QT实现推箱子

QT推箱子源代码

2022-08-08 19:12:53 631 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除