自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【IMX6ULL项目复现】六、多点电容触摸屏驱动

屏幕ic通过i2c总线与处理器进行通信,input子系统将得i2c得到的数据进行处理,并通过多点触摸协议TypeB上报给linux内核,最终传递给用户空间。设备树节点:在i2c2节点下,注意,将使用到的IO在设备树中查找是否有其他节点使用,如果有,要屏蔽或删除。TypeB类型的设备,上报触摸点信息的时序为(以两个触摸点为例)子系统下的多点电容触摸协议(MT协议)的。触摸点的信息通过一系列的。当触摸点移除时,时序如下。触摸屏的坐标信息通过。

2025-11-04 11:11:36 468

原创 【IMX6ULL驱动学习】INPUT子系统

pinctrlgpioINPUT子系统主要包含以下几个部分readwriteioctlopenreadioctl。

2025-10-05 12:11:25 600

原创 【IMX6ULL项目复现】五、dht11温湿度传感器

这个驱动主要还是获取传感器数据,利用gpio子系统构建与dht11的通信时序,不断获得传感器的数据。

2025-10-04 10:27:35 195

原创 【IMX6ULL驱动学习】PWM驱动

IMX6U的PWM结构如图所示ipg_clkPrescaler0x0000PWMORoll-over0x0000ROVCMPPWMx_PWMPRPWMx_PWMPR简单来说,整个过程就是:周期开始 -> 输出拉高 -> 计数器开始从0计数 -> 计数到采样值 -> 输出拉低 -> 计数器继续计数 -> 计数到周期值 -> 周期结束 -> 计数器归零,重复上述过程。

2025-10-03 17:22:32 966

原创 【IMX6ULL项目复现】四、sg90电机-pwm

我们使用pwm3进行实验,输出是GPIO1_IO04引脚,首先设置pinctrl子系统在pwm3控制器节点中引用引脚配置某个设备向PWM控制器申请服务其中,是指向pwm3控制器申请服务,0是逻辑通道的索引,对于 pwm3 来说固定为0,20000000表示频率20MHz。

2025-10-03 17:20:22 261

原创 【IMX6ULL项目复现】三、ap3216c 光照传感器驱动

platformi2c_clienti2c_driveri2c_driver我必须加上id_table,无论ap3216c_id表的内容是什么,只要有,的compatible就能与设备树节点的compatible对上,问题先放在这,我分析了好久也没找出原因。2. 其余内容就是标准的基于设备树的字符设备驱动编写,复杂一点的就是在数据的读取之后进行处理。

2025-10-03 10:41:25 256

原创 【IMX6ULL驱动学习】I2C驱动

总线驱动主要实现I2C总线的初始化和配置,提供I2C总线的访问算法,供I2C设备驱动调用。在I2C总线驱动下设置设备树,关键是设置。属性指定I2C设备的地址为0x1e。这两个函数向系统注册设置好的。基于总线-设备-驱动模型,结构体变量,然后设置。

2025-10-03 10:29:16 296

原创 【IMX6ULL驱动学习】Linux内核定时器

CONFIG。

2025-09-14 13:16:12 318

原创 【IMX6ULL项目复现】二、sr501人体红外传感器驱动

该驱动文件采用了中断,定时器,异步通知机制。当设备检测到人体红外信号时,触发中断服务函数,在函数内启动定时器,定时器到期转入定时器回调函数,在这利用异步通知机制通知用户态程序。.probe。

2025-09-14 13:10:57 126

原创 【IMX6ULL驱动学习】Linux中断

基于设备树的Linux中断设置,相比于裸机中的中断处理,中断号是动态分配的,硬件的中断连接信息被描述在设备树文件中。

2025-09-13 22:15:10 354

原创 【IMX6ULL驱动学习】Linux异步通知

核心思想:基于信号的传递,当设备满足条件时,向应用程序发送信号,通知应用程序设备状态的变化,避免应用程序频繁轮询设备状态。

2025-09-13 22:14:31 720

原创 【IMX6ULL项目复现】一、LED驱动

前面的probe函数中注册字符设备需要将设备与对应的操作函数绑定在一起,其中的操作函数在结构体中定义open函数:根据被打开文件的次设备号,找到我们驱动中对应的设备实例()并将找到的设备实例指针存放到中。这样做的好处是,后续的 read/write 等函数可以直接从获取设备信息,无需重复查找,大大提高了效率。与probe和remove函数是通过pdev结构体的传递来进行配合的,一系列的操作函数则由进行配合操作,两者是有类似之处的。

2025-09-11 20:46:08 844

原创 【IMX6ULL驱动学习】Platform设备驱动

本文介绍了Linux设备驱动中实现设备与驱动分离的关键方法。通过Platform总线框架,驱动不再直接依赖设备节点路径,而是通过匹配compatible属性实现动态绑定。主要内容包括:1) Platform总线通过match函数匹配设备和驱动;2) 设备树中定义节点并设置compatible属性;3) 驱动通过platform_driver结构体注册,实现probe和remove接口;4) 与字符设备驱动的区别在于总线自动处理匹配过程。这种解耦方式提高了驱动代码的灵活性和可维护性,使设备变更无需修改驱动代码

2025-09-10 12:15:52 862

原创 【IMX6ULL驱动学习】pinctrl和gpio子系统

pinctrl子系统只需要在设备树中进行配置,并且只需要配置这个驱动用到的pin,当驱动加载的时候,pinctrl子系统会根据设备树中的配置,自动完成引脚的复用和属性配置。pinctrl子系统的使用,无需在驱动文件再增加代码来配置引脚的复用和属性,简化了驱动文件的编写,同时也避免了直接操作寄存器可能带来的错误。

2025-09-10 12:14:56 710

原创 【IMX6ULL驱动学习】字符设备驱动编写过程(逻辑清晰)

将前面提到的所有设备属性:设备号,主设备号,次设备号,类,设备,cdev等都放在一个结构体中,方便管理和使用。也可以访问,但是在同类型多设备的情况下会管理混乱)直接把设备号和字符设备操作函数结构体。只是申请和注册设备号,并没有和。

2025-08-24 22:27:51 273

原创 【IMX6ULL驱动学习】嵌入式Linux的LED驱动实验(虚拟内存与I/O内存访问函数)

Linux 下的任何外设驱动,最终都是要配置相应的硬件寄存器。对于含有MMU的处理器,,而不需要直接操作物理地址。

2025-08-22 20:44:35 318

原创 【IMX6ULL驱动学习】字符设备驱动开发(参考正点原子教程理解)

上面提到的没有定义具体的操作函数,接下来要进行定义,定义一些简单的读写操作。假设 chrtest 这个设备控制着一段缓冲区(内存),应用程序需要通过 read 和 write 这两个函 数对 chrtest 的缓冲区进行读写操作。需要实现中的read和write这两个函数,基于在结构体中的函数定义进行编写/* 打开设备 *//* 用户实现具体功能 */return 0;/* 从设备读取 *//* 用户实现具体功能 */return 0;/* 向设备写数据 *//* 用户实现具体功能 */

2025-08-21 21:26:48 633

原创 Vmware的网络连接

Vmware主要使用的网络连接方式是:1.桥接模式;他们分别是有对应的网络名称的。如果对应不上,VMware的网络连接很可能失败。

2025-08-14 21:47:30 173

原创 Linux内核编译错误:multiple definition of yylloc‘(已解决)

编译文件产生了重定义的问题,系统报错如下。),因此根本处理方法是修改。,如上图所示,保存,重新编译即可。,没用的,编译过程会删除掉,从。可以看到,重定义变量的文件是。

2025-08-14 13:58:17 218

原创 U-Boot启动时与虚拟机Ping通(AI答案,亲测可用)

在弹出的窗口中,只勾选连接你的开发板的那个 “开发板网卡”(可以通过设备名称识别,例如 Realtek USB GbE Family Controller 等代表你的拓展坞网卡),取消勾选其他所有网卡。这里会列出你所有的网络适配器,包括你的校园网连接(可能是“以太网”或“WLAN”)和通过拓展坞新增加的那个网口(可能也叫“以太网 2”之类的名字)。在“家庭网络连接”的下拉菜单中,选择你的 “开发板网卡” (连接拓展坞的那个)。右键点击你的 “公网网卡” (连接校园网的那个),选择“属性”。

2025-08-13 19:14:04 1001

原创 【IMX6ULL驱动学习】I.MX6ULL的主频和时钟配置

如果每个所需频率都依赖独立的 PLL,那将占用大量的硬件资而通过一个 PLL 输出 528 MHz,然后使用 PFD 分频,可以高效地生成多个频率,从而避免使用多个 PLL。在IMX6UL中,24MHz的晶振信号首先被送入PLL,然后通过编程设置PLL的倍频系数,生成高频的时钟信号(如528MHz、480MHz等)。与传统的整数分频器不同,PFD 可以实现分数分频),能够将528MHz的时钟信号精确地分成不同的频率,产生多个子时钟。这个生成的基准时钟信号会被进一步分配给系统的不同模块。

2025-04-06 19:34:54 932

原创 【IMX6ULL驱动学习】I.MX6ULL头文件解析

正点原子的Linux驱动过程中讲头文件的部分非常晦涩难懂,我看完视频之学习到了IVT,Boot data,DCD的作用,以及他们地址的分布,至于他们包含了什么内容,我暂时还看不出什么东西。

2025-04-03 14:14:25 944

原创 【IMX6ULL驱动学习】I.MX6ULL启动方式选择(基于正点原子的开发指南+自己的理解)

启动设备是通过BOOT_CFG1[7:0]、BOOT_CFG2[7:0]和 BOOT_CFG4[7:0]这 24 个配置 IO,这 24 个配置 IO 刚 好对应着 LCD 的 24 根数据线 LCD_DATA0~LCDDATA23,当启动完成以后这 24 个 IO 就可以 作为 LCD 的数据线使用。其中BOOT_CFG4[7:0]全部接地,BOOT_CFG2[7:0]除了BOOT_CFG2[3]用于选择SD卡启动接口,其他全部接地。BOOT_CFG1[7:0]只需考虑BOOT_CFG1[7:3]。

2025-04-02 11:45:18 493

原创 【FreeRTOS学习过程中的卡点问题的解答(对于个人而言)】---持续更新

在嵌入式系统中,硬件中断和任务调度是紧密耦合的,因为 FreeRTOS 的任务切换机制依赖于硬件中断来实现上下文切换。

2025-03-03 11:42:37 594

原创 【基于江科大STM32学习视频的笔记(包含自己的思考)】

起始条件(SCL高电平时,SDA置低电平)——【指定设备(设备地址)——写(0表示主机进行写操作,1表示主机进行读操作)】——接收应答(主机释放SDA控制权,等待从机应答)——重新开启时序(因为切换读写操作只能在起始条件后的第一个字节进行切换)——【指定设备(设备地址)——读(0表示主机进行写操作,1表示主机进行读操作)】——接收应答(主机释放SDA控制权,等待从机应答)——(主机交出SDA控制权,给从机输出主机想要的数据)输出数据——接收应答(从机交还SDA控制权,等待主机应答)——终止条件。

2025-03-03 11:37:20 1239

原创 【正点原子FreeRTOS教程笔记】

任务控制块保留的是任务的特征信息。

2025-02-27 17:33:06 978

原创 STM32CubeMX安装后第二次打开闪退

STM32CubeMX下载与安装。

2025-02-26 17:47:21 3307 10

空空如也

空空如也

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

TA关注的人

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