- 博客(30)
- 收藏
- 关注
原创 Linux IIO 驱动实验
本文介绍了Linux内核中IIO(Industrial I/O)子系统的驱动开发框架。主要内容包括: IIO核心结构体解析 iio_dev:描述IIO设备的核心结构体,包含设备模式、通道、缓冲区和触发器等 iio_info:提供设备操作回调函数,如read_raw、write_raw等 iio_chan_spec:定义传感器通道的类型、方向、修饰符等属性 IIO驱动开发流程 设备申请与初始化 通道配置与属性定义 注册/注销IIO设备 实现数据读写接口
2025-11-21 22:31:11
886
原创 Regmap API
本文介绍了Linux内核中的Regmap驱动框架及其应用。Regmap主要用于硬件寄存器操作(如通过I2C/SPI接口访问设备寄存器),提高代码复用性,并优化I/O访问效率。框架分为三层:底层物理总线(支持I2C/SPI/MMIO等)、核心层和API抽象层。关键结构体包括regmap(封装寄存器操作)和regmap_config(初始化配置)。文章详细说明了regmap的初始化、读写API函数(如regmap_read/write),并提供了SPI和I2C接口的具体实现示例(ICM20608和AP3216C
2025-11-21 09:46:37
872
原创 Linux 网络驱动实验
本文摘要: 嵌入式网络硬件架构分为MAC和PHY两部分,SOC可能集成或不集成MAC外设。介绍了MII/RMII接口标准,其中RMII是精简版本,仅需7根信号线。 详细分析了Linux内核网络驱动框架,重点讲解了net_device结构体(网络设备核心数据结构)、net_device_ops(设备操作函数集)和sk_buff(网络数据包结构)三个关键组件及其API函数。 阐述了NAPI(New API)高效网络处理机制,通过中断唤醒+轮询方式提高短包接收效率,介绍了napi_struct结构体及相关调度函数
2025-11-20 11:29:56
588
原创 Linux 块设备驱动实验
本文介绍了Linux块设备驱动的开发框架,主要内容包括:1)块设备与字符设备的区别,块设备以块为单位访问且需要缓冲区;2)块设备驱动核心结构体如block_device、gendisk和block_device_operations;3)两种I/O请求处理方式:带I/O调度器的请求队列(适用于机械硬盘)和直接操作bio的非调度模式(适用于EMMC/SD卡);4)提供了完整的内存磁盘(ramdisk)驱动实现代码,演示了块设备从注册到数据读写的完整流程,包括设备初始化、请求处理、磁盘格式化等操作。
2025-11-19 11:21:20
985
原创 Linux CAN驱动实验
FlexCAN 支持四种模式:正常模式(Normal)、冻结模式(Freeze)、仅监听模式(Listen-Only)和回环模式(Loop-Back),另外还有两种低功耗模式:禁止模式(Disable)和停止模式(Stop)。①、正常模式(Normal):在正常模式下,FlexCAN 正常接收或发送消息帧,所有的CAN 协议功能都使能。②、冻结模式(Freeze):当MCR 寄存器的FRZ 位置1 的时候使能此模式,在此模式下无法进行帧的发送或接收,CAN 总线同步丢失。
2025-11-17 19:53:14
810
原创 Linux 驱动开发 MISC 杂项驱动
MISC驱动编写的核心就是初始化 miscdevice 结构体变量,然后使用 misc_register 向内核注册。如果 miscdevice 里面的 minor 为255 的话,表示由内核自动分配 次设备号。2、MISC 设备会自动创建 cdev, 不需要我们手动创建。3、MISC 驱动是基于 platform 平台的。1、 MISC 设备的主设备号为 10。1、beep 设备树。一、内核自带 MISC 驱动简介。二、编写 MISC 驱动框架。
2025-11-06 22:27:44
246
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅