logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

Linux设备驱动开发-UART驱动

UART 有三条线,分别是 Rx,Tx 和 GND数据发送接收步骤:1.双方约定波特率2.拉低(从高电平) Tx 引脚维持 1bit 时间3.接收端在低电平开始处计时4.发送端根据数据驱动 Tx 引脚电平5.接收端 1.5bit 时间后读取引脚状态(前面有一个开始位)6.bit8 是可选的校验位(可分为奇校验和偶校验)7.发送停止位(可以约定停止位占据多少时间)

文章图片
#嵌入式硬件#驱动开发#arm开发 +3
Linux设备驱动开发-PCI/PCIE

PCI 地址线和数据线是复用的,通过 frame 引脚电平区分,frame 信号为低的话第一个时钟传输地址,后续传输数据,一开始的时候通过 IDSEL(与 AD 引脚连接) 引脚区分设备,选中设备的IDSEL 就可以配置设备了,设备的访问是通过桥来实现的。首先需要 HOST 驱动(识别 pci_dev,pci_dev 可能是桥,桥下面也会有pci_dev),针对 EP 也就是pci_dev 我们需

文章图片
#c语言#驱动开发#arm开发 +2
Linux设备驱动开发-SPI驱动开发详解(包含设备树处理详细过程)

引脚:MISO(master 输入,slave 输出),MOSI(master 输出,slave 输入),片选引脚,SCK(时钟)控制寄存器:可以设置这CPOL 和 CPHA两个参数,CPOL 代表 SCK 初始电平,CPHA 代表相位(第一/第二个时钟沿采集数据),SPI 状态寄存器:分辨数据是否发送完了,使能中断波特率寄存器:设置 SCK 频率数据寄存器:连接移位器收发数据。

文章图片
#嵌入式硬件#驱动开发#arm开发 +3
Linux设备驱动开发-Pinctrl子系统使用详解

以这个段设备树代码为例,这里有normal 和idle 两种模式,normal 对应pinctrl-0,idle 对应pinctrl-1。一般引脚前面会有 IOMUX 连接各种功能,通过IOMUX 来指定引脚具体连接什么功能。来看一个引脚控制,可以看到这里配置了引脚功能为 gpio,并且进行了下拉。当设备切换状态时系统就会根据设备树去切换引脚状态。这段设备树片段称为 controller。Pinc

文章图片
#c语言#驱动开发#硬件工程 +3
到底了