驱动
文章平均质量分 88
sheepwjl
偶遇ai,拼尽全力无法战胜
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
《嵌入式驱动(十三):一些系统中自带的驱动》
本文介绍了IMX6ULL开发板上多个外设驱动的适配与实现方法。内容包括:1)串口驱动的查找与实现,通过设备树配置和示例代码展示GPS数据解析;2)ADC驱动的使能与测试,包括IIO子系统配置和设备树修改;3)LCD屏幕驱动适配,重点说明4.3寸和7寸屏的配置差异;4)触摸屏驱动实现,详细描述了GT9147驱动的移植和tslib校准库的使用;5)三种摄像头(OV5640/OV2640/OV7725)驱动的适配流程,包括设备树修改、驱动替换和测试验证。所有驱动均通过设备树配置、内核编译和应用程序测试三个步骤实现原创 2025-11-07 03:18:14 · 605 阅读 · 0 评论 -
《嵌入式驱动(十二):SPI子系统架构》
本文介绍了SPI通信的基本概念及其在IMX6uLL芯片上的应用实现。主要内容包括:1)SPI控制器数量(4个)、时钟极性与相位配置;2)ADXL345加速度传感器驱动开发,重点阐述了SPI核心接口函数(如spi_register_driver、spi_write_then_read等)的使用方法;3)详细展示了驱动代码实现,包括设备初始化、数据读取等关键操作;4)应用层程序通过计算加速度数据获取三维角度信息。整个系统采用设备树配置,实现了基于SPI总线的传感器数据采集功能。原创 2025-11-07 02:07:01 · 928 阅读 · 0 评论 -
《嵌入式驱动(十一):I2C子系统架构》
本文介绍了I2C通信协议的开发应用。通过对比UART、I2C、SPI等通信方式的特点,重点阐述了I2C作为半双工同步串行通信协议的优势和实现方法。详细讲解了I2C的硬件连接要点(上拉电阻)、通信时序(起始/停止信号)、总线拓扑(一主多从)等基础知识。提供了基于Linux I2C子系统的驱动开发框架,包括i2c_adapter、i2c_core和各层接口函数的使用方法。最后通过LM75温度传感器实例,展示了从设备驱动(probe/remove实现)到应用程序(温度读取)的完整开发流程,并给出了关键代码实现。原创 2025-11-06 23:18:28 · 1679 阅读 · 0 评论 -
《嵌入式驱动(十):input子系统》
本文介绍了Linux输入子系统的设备管理和事件上报机制。主要内容包括:1)输入设备分类(键盘、鼠标等);2)关键API函数(设备分配、注册、事件上报等);3)input_dev结构体初始化参数(事件类型、按键等);4)按键驱动实现示例,展示了从GPIO中断到输入事件上报的完整流程;5)应用程序通过读取/dev/input/eventX节点获取输入事件的实现方法。整个流程涵盖了从硬件中断触发到用户空间获取输入事件的全链路处理机制。原创 2025-11-06 17:19:51 · 926 阅读 · 0 评论 -
《嵌入式驱动(九):platform总线架构》
摘要:本文介绍了Linux平台虚拟总线(platform)架构的实现与应用。主要内容包括:(1)平台总线概念,用于管理无物理总线连接的设备;(2)关键API函数说明,如platform_driver_register、platform_driver_unregister等;(3)给出一个LED驱动实例代码,展示如何通过platform_driver结构体实现设备探测(probe)、移除(remove)等操作,并配合设备树进行匹配;(4)详细描述了platform设备从设备树到驱动匹配的完整流程,包括设备信息原创 2025-11-06 16:43:39 · 951 阅读 · 0 评论 -
《嵌入式驱动(八):内核定时器与延时函数》
摘要:本文介绍了Linux内核中定时器和延时函数的使用方法。内核定时器部分阐述了jiffies概念及其转换函数(毫秒/微秒与jiffies间的转换),以及定时器操作接口(DEFINE_TIMER、add_timer等)。延时函数部分对比了忙等待(ndelay、udelay、mdelay)和睡眠函数(msleep、ssleep)的特点,指出睡眠函数会释放CPU资源。文末提供了按键驱动示例代码,展示了中断处理、定时器、工作队列和异步通知等机制的实战应用,包括按键状态的读取和事件通知实现。原创 2025-11-05 15:19:32 · 520 阅读 · 0 评论 -
《嵌入式驱动(七):等待队列和中断》
本文介绍了Linux驱动开发中的关键机制:1. 等待队列实现阻塞IO,通过wait_event等函数实现进程阻塞/唤醒;2. 中断处理分为顶半部(紧急操作)和底半部(耗时任务),提供四种实现方式(软中断、tasklet、工作队列、线程化irq);3. 详细分析了四种IO模型(阻塞/非阻塞/异步/多路复用)的实现原理,并给出对应驱动程序代码示例。文中还涵盖中断资源竞争处理、设备树中断配置等关键技术,最后总结了驱动中中断使用流程和四种IO模型的具体实现方法。原创 2025-11-05 01:56:51 · 1034 阅读 · 0 评论 -
《嵌入式驱动(六):pinctrl子系统和gpio子系统驱动》
本文介绍了Linux驱动开发中的分层思想和关键子系统应用。主要内容包括:1)Linux驱动分层思想,强调设备与驱动分离,将设备信息放入设备树;2)pinctrl子系统的使用,通过设备树配置引脚复用功能;3)GPIO子系统操作流程,包括引脚编号获取、资源申请、方向设置等;4)以按键驱动为例,展示了设备树配置(pinctrl和GPIO定义)、驱动代码(初始化、GPIO操作、文件操作)及应用程序的完整实现。文章提供了设备树节点定义、驱动代码和Makefile的具体实现,完整呈现了从硬件配置到用户空间访问的Linu原创 2025-10-05 20:45:31 · 890 阅读 · 0 评论 -
《嵌入式驱动(五):基于设备树及misc混杂设备优化代码》
本文介绍了基于Linux misc设备的LED、蜂鸣器和按键驱动开发流程。通过misc_register/misc_deregister完成设备注册与注销,使用设备树定义硬件资源(寄存器地址),并通过of_iomap映射物理地址。驱动实现了文件操作接口(read/write/open/release),使用copy_from/to_user实现用户空间与内核空间数据交互。配套应用程序通过设备节点进行控制,交叉编译后部署到目标板。开发过程包含设备树配置、驱动实现、应用层测试程序编写及Makefile构建系统配原创 2025-10-05 20:02:28 · 269 阅读 · 0 评论 -
《嵌入式驱动(四):设备树》
设备树(dts/dtsi/dtb)是记录硬件资源信息的文件,用于驱动匹配。本文以imx6ull-alientek-emmc.dtb为例,介绍了设备树结构:1)节点语法含属性设置;2)示例节点puteled定义了寄存器地址等信息;3)通过DTC工具编译生成dtb文件后,需拷贝到tftpboot目录使用。设备树通过compatible属性实现设备与驱动匹配,status控制节点使能状态。原创 2025-10-05 18:43:33 · 317 阅读 · 0 评论 -
《嵌入式驱动(三):字符设备驱动开发》
本文介绍了Linux字符设备驱动开发框架及实现流程。主要内容包括:1) 字符设备分类及设备号管理机制;2) 驱动开发流程,涵盖设备号申请、cdev结构注册、设备节点创建等关键步骤;3) 给出了LED和蜂鸣器两种字符设备的完整驱动实现代码及Makefile,包含设备初始化、寄存器映射、文件操作接口实现等核心功能;4) 配套应用程序代码展示了通过文件IO操作设备的典型方法。文中还提供了常用的内核驱动信息查看命令,为Linux字符设备驱动开发提供了完整的实现参考。原创 2025-10-05 18:25:26 · 794 阅读 · 0 评论 -
《嵌入式驱动(二):驱动开发基本概念》
本文介绍了Linux驱动开发的基本概念和关键流程。主要内容包括:1)驱动分类(字符设备、块设备、网络设备);2)驱动编译方式(静态编译直接嵌入内核,动态编译生成.ko模块);3)uboot和内核的编译步骤;4)根文件系统制作方法(基于busybox)及其自启动配置;5)静态与动态编译的区别:静态编译集成度高但灵活性差,动态编译便于调试维护。文章还详细说明了相关配置文件和脚本的作用,为嵌入式Linux开发提供了系统性的技术指导。原创 2025-09-23 21:20:18 · 1260 阅读 · 0 评论 -
《嵌入式驱动(一):系统移植》
Linux系统移植需要四个关键文件:uboot(硬件初始化和内核加载)、zImage(内核实现内存/任务/网络/文件系统管理)、dtb(设备树描述硬件信息)和rootfs(文件系统提供用户交互)。IMX6ULL平台启动流程包含三个阶段:BootROM初始化硬件并加载uboot;uboot完成外设初始化后加载内核和设备树;内核启动文件系统完成系统引导。其中uboot通过bootcmd定义自动启动命令,bootargs向内核传递文件系统参数。移植重点在于理解各组件功能与启动流程的衔接机制。原创 2025-09-22 20:00:10 · 503 阅读 · 0 评论
分享