摘要: 一、Linux 下 SPI 驱动框架简介 1、SPI 主机驱动 SPI 主机驱动就是 SOC 的 SPI 控制器驱动,类似 I2C 驱动里面的适配器驱动。Linux 内核使用 spi_master 表示 SPI 主机驱动,spi_master 是个结构体,定义在 include/linux/spi/ 阅读全文
posted @ 2023-02-18 23:40 酷电玩家 阅读(1035) 评论(0) 推荐(0)
摘要: 一、IIC驱动和IIC设备 驱动和设备是成对的,一个驱动对应一个设备,而驱动又分为主机驱动(IIC控制器驱动)和设备驱动,相对应的就是主机设备(IIC控制器)和普通设备(外围设备)。 1、主机驱动(IIC控制器驱动) 总线是由Linux完成,与硬件无关的,使用 bus_type 结构体的实例来表示。 阅读全文
posted @ 2023-02-18 23:33 酷电玩家 阅读(636) 评论(0) 推荐(1)
摘要: 一、I.MX6ULL的pinctrl(IOMUXC)子系统 1、设备树中 PIN 配置信息详解 打开 imx6ull.dtsi 文件,找到一个叫做 iomuxc 的节点,如下所示: iomuxc: iomuxc@020e0000 { compatible = "fsl,imx6ul-iomuxc"; 阅读全文
posted @ 2023-02-18 23:23 酷电玩家 阅读(1555) 评论(0) 推荐(2)
摘要: 一、platform 驱动 Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platform_device。 platform 驱动使用 platform_driver 结构体表示,此结构体定义在文件 include/linux/platform_ 阅读全文
posted @ 2023-02-18 23:04 酷电玩家 阅读(228) 评论(0) 推荐(1)
摘要: 一、总线 Linux 总线驱动模型主要可以分为三个部分:总线、设备、驱动。Linux 中的总线(bus)、驱动(driver)和设备(device)模型,也就是常说的驱动分离。Linux内核在启动时会向系统注册总线,比如 IIC总线、SPI总线、SDIO总线、Platform总线等。总线是与硬件平台 阅读全文
posted @ 2023-02-18 22:50 酷电玩家 阅读(520) 评论(0) 推荐(0)
摘要: 一、修改设备树文件 在根节点“/”下创建一个名为“alphaled”的子节点,打开 imx6ull-alientek-emmc.dts 文件,在根节点“/”最后面输入如下所示内容: alphaled { #address-cells = <1>; #size-cells = <1>; compati 阅读全文
posted @ 2023-02-18 19:53 酷电玩家 阅读(172) 评论(0) 推荐(0)
摘要: 一、设备树常用 OF 操作函数 设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,我们在编写驱动的时候需要获取到这些信息。Linux 内核给我们提供了一系列的函数来获取设备树中的节点或者属性信息,这一系列的函数都有一个统一的前缀“of_”,也被叫做 OF 函数。这些 OF 阅读全文
posted @ 2023-02-18 19:51 酷电玩家 阅读(209) 评论(0) 推荐(0)
摘要: 一、设备树在系统中的体现 Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的 /proc/device/tree 目录下根据节点名字创建不同文件夹,如图所示: 上图就是目录/proc/device-tree 目录下的内容,/proc/device-tree 目录下是根节点“/ 阅读全文
posted @ 2023-02-18 19:32 酷电玩家 阅读(418) 评论(0) 推荐(0)
摘要: 一、设备树 设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)。 在 Linux 2.6 中, ARM 架构的板极硬件细节过多地被硬编码在 arch/arm/plat-xxx 和 arch/arm/mach-xxx 中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux 阅读全文
posted @ 2023-02-18 17:00 酷电玩家 阅读(554) 评论(0) 推荐(0)
摘要: 一、新字符设备驱动原理 1.1 分配和释放设备号 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两个问题: ①、需要我们事先确定好哪些主设备号没有使用。 ②、会将一个主设备号下的所有次设备号都使用掉 解决办法就是在要使用设备号的时候向 Linu 阅读全文
posted @ 2023-02-18 16:50 酷电玩家 阅读(120) 评论(0) 推荐(0)
摘要: 一、地址映射 MMU 全称叫做 Memory Manage Unit,也就是内存管理单元。MMU 主要完成的功能如下: ①、完成虚拟空间到物理空间的映射。 ②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性。 Linux 内核启动的时候会初始化 MMU,设置好内存映射,设置好以后 CPU 阅读全文
posted @ 2023-02-18 16:43 酷电玩家 阅读(131) 评论(0) 推荐(0)
摘要: 一、字符设备驱动简介 Linux 应用程序对驱动程序的调用如图所示: 在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx”(xxx 是具体的驱动文件名字)的文件进行相应的操作即可实现对硬件的操作。 比如有个叫做 /dev 阅读全文
posted @ 2023-02-18 16:41 酷电玩家 阅读(214) 评论(0) 推荐(0)