- 博客(91)
- 收藏
- 关注
原创 imx6ull-驱动开发篇47——Linux SPI 驱动实验
本文介绍了在Linux系统下为I.MX6U开发板上的ICM-20608六轴传感器,编写SPI设备驱动的完整过程。
2025-08-28 22:15:00
826
原创 imx6ull-驱动开发篇46——I.MX6U SPI 主机驱动分析
本文分析了Linux中I.MX6U处理器的SPI主机驱动实现。主要内容包括:1) 通过设备树节点匹配SPI控制器驱动,解析了设备树兼容性属性和驱动注册机制;2) 详细说明了SPI数据传输的核心函数spi_imx_transfer及其底层实现,包括8/16/32位数据收发函数;3) 阐述了SPI设备驱动的编写流程,重点介绍了spi_transfer和spi_message结构体的使用,以及同步(spi_sync)和异步(spi_async)传输方式
2025-08-28 15:30:00
684
原创 imx6ull-驱动开发篇45——Linux 下 SPI 驱动框架简介
本文详细介绍了Linux SPI驱动框架,包括主机驱动和设备驱动两大部分。主机驱动部分重点阐述了spi_master结构体的组成、申请与释放方法,以及注册与注销流程;设备驱动部分讲解了spi_driver结构体的定义和注册方法。最后分析了SPI设备与驱动的匹配过程,包括设备树匹配、ACPI匹配、ID表匹配和名称匹配四种方式。整个SPI驱动框架与I2C类似,都采用总线-设备-驱动模型,通过spi_bus_type实现设备与驱动的匹配。
2025-08-27 20:45:00
1028
原创 imx6ull-驱动开发篇44——Linux I2C 驱动实验
本文介绍了在Linux系统下为I.MX6U开发板上的AP3216C三合一环境光传感器编写I2C设备驱动程序的过程。主要内容包括:1)修改设备树文件,配置I2C1接口和AP3216C子节点;2)编写驱动程序,实现了寄存器读写、数据采集等功能;3)开发测试应用程序,通过读取设备文件获取传感器数据。文章详细说明了驱动程序的各个关键部分,包括设备结构体定义、I2C通信函数实现、probe/remove接口等,并提供了完整的代码实现和测试方法。该驱动成功实现了对AP3216C传感器的IR、ALS和PS数据的采集功能。
2025-08-27 14:33:23
979
原创 imx6ull-驱动开发篇43——I.MX6U 的 I2C 驱动分析
本文介绍了Linux I2C驱动框架,重点分析了I.MX6U的I2C适配器驱动实现。主要内容包括:1) I2C驱动分为适配器驱动和设备驱动两部分;2) 详细解析了i2c_imx_probe函数的初始化流程,包括硬件资源获取、适配器设置、时钟管理等;3) 介绍了i2c_imx_algo结构体中的关键函数实现,如i2c_imx_xfer数据传输函数;4) 讲解了I2C设备驱动开发流程,包括设备树节点创建、数据收发处理等;5) 说明了i2c_transfer等API函数的使用方法。
2025-08-26 21:00:00
1357
原创 imx6ull-驱动开发篇42——Linux I2C 驱动框架简介
Linux内核将I2C驱动分为总线驱动和设备驱动两部分。总线驱动负责SOC的I2C控制器操作,核心数据结构为i2c_adapter和i2c_algorithm,其中i2c_algorithm定义了传输方法。设备驱动则针对具体I2C设备,核心结构为i2c_client和i2c_driver,通过i2c_add_driver注册驱动。
2025-08-26 13:24:10
1527
1
原创 imx6ull-驱动开发篇41——Linux RTC 驱动实验
本文介绍了I.MX6U开发板内部RTC驱动的实现方法。主要内容包括:1)在设备树中配置snvs_rtc节点,匹配Linux内核中的rtc-snvs.c驱动;2)详细分析snvs_rtc_probe函数的实现过程,包括寄存器映射、中断注册和RTC设备初始化等关键步骤;3)讲解RTC操作集snvs_rtc_ops的实现,重点分析时间读取函数的工作流程;4)给出Linux系统下使用date和hwclock命令查看和设置RTC时间的具体操作方法。通过本文可以掌握I.MX6U内部RTC驱动的实现原理和实际应用方法。
2025-08-25 21:00:00
719
1
原创 imx6ull-驱动开发篇40——Linux RTC 驱动简介
本文介绍了Linux下RTC驱动程序的开发方法,详细解析了RTC驱动从底层硬件操作到上层接口的实现机制。
2025-08-25 13:56:03
767
原创 imx6ull-驱动开发篇39——Linux INPUT 子系统实验
本文使用正点原子imx6ull开发板,编写基于linux驱动input子框架的测试代码。
2025-08-24 21:00:00
895
原创 imx6ull-驱动开发篇38——Linux INPUT 子系统
Linux内核的input子系统是管理输入设备的框架,分为驱动层、核心层和事件处理层。本文详细介绍了input驱动的编写流程。
2025-08-24 15:29:23
603
原创 imx6ull-驱动开发篇37——Linux MISC 驱动实验
本文介绍了Linux内核中的MISC(杂项)设备驱动框架及其应用。以蜂鸣器驱动为例,演示了如何结合platform框架实现MISC设备驱动,包括设备树配置、驱动代码编写、测试程序开发等完整流程。
2025-08-23 22:15:00
1498
原创 imx6ull-驱动开发篇36——Linux 自带的 LED 灯驱动实验
本文介绍了如何使用Linux内核自带的LED驱动控制I.MX6U开发板上的LED0。
2025-08-23 16:00:00
968
原创 imx6ull-驱动开发篇34——platform 设备驱动实验
本文介绍了基于Linux platform驱动框架编写LED灯驱动的方法,采用自定义platform_device方式而非设备树来描述设备信息。
2025-08-22 16:00:00
572
原创 imx6ull-驱动开发篇33——platform 平台驱动模型
本文介绍了Linux驱动开发中的分离与分层机制。重点阐述了platform平台驱动模型,包括platform总线结构、设备与驱动的匹配方式(设备树、ACPI、ID表、名称匹配)以及platform_driver和platform_device的结构与注册流程。
2025-08-21 22:34:50
1929
1
原创 imx6ull-驱动开发篇32——Linux异步通知实验
本文介绍了在Linux驱动程序中实现异步通知功能的方法。驱动程序通过信号机制向应用程序通知按键事件,使用SIGIO信号实现异步通信。
2025-08-21 16:35:41
920
原创 imx6ull-驱动开发篇29——Linux阻塞IO 实验
本文介绍了在Linux驱动中使用阻塞IO方式实现按键检测的方法。通过修改中断实验代码,添加等待队列机制,当没有按键按下时进程进入休眠状态,按键触发时唤醒进程。采用阻塞IO后应用程序的CPU使用率从99.6%降至0%,有效提升了系统资源利用率。
2025-08-20 14:59:23
946
原创 imx6ull-驱动开发篇28——Linux阻塞和非阻塞 IO(下)
本文详细介绍了Linux系统中非阻塞I/O操作的三种轮询机制:select、poll和epoll。
2025-08-16 21:45:00
857
原创 imx6ull-驱动开发篇26——Linux 中断实验
本文介绍了在Linux设备树中配置GPIO中断的方法,并以IMX6ULL开发板的KEY0按键为例,详细讲解了中断驱动的实现过程。
2025-08-15 21:45:00
1076
原创 imx6ull-驱动开发篇25——Linux 中断上半部/下半部
Linux内核中断处理分为上半部和下半部,上半部处理快速操作,下半部处理耗时任务。下半部机制包括软中断、tasklet和工作队列等。
2025-08-15 21:15:00
560
原创 imx6ull-驱动开发篇23——Linux 内核定时器实验
本文介绍了基于正点原子I.MX6U-ALPHA开发板的Linux内核定时器实验。通过编写定时器驱动程序,实现了LED灯的周期性闪烁控制。
2025-08-14 21:15:00
1007
原创 imx6ull-驱动开发篇22——Linux 时间管理和内核定时器
本文介绍了Linux内核中的时间管理机制,主要包括系统节拍率、jiffies计数器、时间绕回处理、时间转换函数和内核定时器。
2025-08-13 21:30:00
1370
原创 imx6ull-驱动开发篇21——Linux 按键输入实验
本文介绍了在Linux下开发GPIO按键输入驱动程序的实现过程。通过正点原子I.MX6U-ALPHA开发板的按键实验,详细讲解了从设备树配置到驱动编写的完整流程。
2025-08-13 21:00:00
860
原创 imx6ull-驱动开发篇15——linux自旋锁
本文介绍了Linux内核中的自旋锁机制及其使用方法,通过示例代码展示了各种锁的具体应用场景和实现方式。
2025-08-09 15:01:14
755
原创 imx6ull-驱动开发篇14——原子操作
Linux内核开发中存在并发与竞争,解决的方法之一是原子操作。本篇包含原子操作的api函数和示例代码。
2025-08-08 16:45:54
731
原创 imx6ull-驱动开发篇13——Linux 蜂鸣器实验
本文介绍了在Linux系统下开发蜂鸣器驱动的完整过程。主要内容包括:1)通过修改设备树文件添加蜂鸣器节点和GPIO配置;2)编写蜂鸣器驱动程序beep.c,3) 程序运行验证。
2025-08-07 21:15:00
910
原创 imx6ull-驱动开发篇12——GPIO子系统驱动LED
本文介绍了基于pinctrl和gpio子系统的LED灯驱动开发过程。主要内容包括:1. 设备树修改,2. 驱动程序实现,3. 测试验证。
2025-08-07 15:17:36
990
原创 imx6ull-驱动开发篇11——gpio子系统
本文详细介绍了Linux内核中的GPIO子系统,重点分析了I.MX6ULL处理器的GPIO驱动实现。
2025-08-06 21:30:00
929
原创 imx6ull-驱动开发篇10——pinctrl 子系统
本文介绍了Linux内核中pinctrl子系统的原理与应用,重点分析了I.MX6ULL处理器的GPIO引脚配置方法。
2025-08-06 15:17:49
655
原创 imx6ull-驱动开发篇8——设备树常用 OF 操作函数
本文详细介绍了Linux内核中设备树(DTB)的解析机制和使用方法。主要内容包括:1. 内核启动时解析DTB文件的流程,2. 设备树绑定文档的规范,3. 常用OF(Open Firmware)操作函数分类详解。
2025-08-04 21:30:00
811
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人