随笔分类 -  Linux驱动开发

摘要:一、Linux 下 SPI 驱动框架简介 1、SPI 主机驱动 SPI 主机驱动就是 SOC 的 SPI 控制器驱动,类似 I2C 驱动里面的适配器驱动。Linux 内核使用 spi_master 表示 SPI 主机驱动,spi_master 是个结构体,定义在 include/linux/spi/ 阅读全文
posted @ 2023-02-18 23:40 酷电玩家 阅读(843) 评论(0) 推荐(0) 编辑
摘要:一、IIC驱动和IIC设备 驱动和设备是成对的,一个驱动对应一个设备,而驱动又分为主机驱动(IIC控制器驱动)和设备驱动,相对应的就是主机设备(IIC控制器)和普通设备(外围设备)。 1、主机驱动(IIC控制器驱动) 总线是由Linux完成,与硬件无关的,使用 bus_type 结构体的实例来表示。 阅读全文
posted @ 2023-02-18 23:33 酷电玩家 阅读(493) 评论(0) 推荐(1) 编辑
摘要:一、I.MX6ULL的pinctrl(IOMUXC)子系统 1、设备树中 PIN 配置信息详解 打开 imx6ull.dtsi 文件,找到一个叫做 iomuxc 的节点,如下所示: iomuxc: iomuxc@020e0000 { compatible = "fsl,imx6ul-iomuxc"; 阅读全文
posted @ 2023-02-18 23:23 酷电玩家 阅读(1197) 评论(0) 推荐(1) 编辑
摘要:一、platform 驱动 Linux 提出了 platform 这个虚拟总线,相应的就有 platform_driver 和 platform_device。 platform 驱动使用 platform_driver 结构体表示,此结构体定义在文件 include/linux/platform_ 阅读全文
posted @ 2023-02-18 23:04 酷电玩家 阅读(142) 评论(0) 推荐(1) 编辑
摘要:一、总线 Linux 总线驱动模型主要可以分为三个部分:总线、设备、驱动。Linux 中的总线(bus)、驱动(driver)和设备(device)模型,也就是常说的驱动分离。Linux内核在启动时会向系统注册总线,比如 IIC总线、SPI总线、SDIO总线、Platform总线等。总线是与硬件平台 阅读全文
posted @ 2023-02-18 22:50 酷电玩家 阅读(383) 评论(0) 推荐(0) 编辑
摘要:一、修改设备树文件 在根节点“/”下创建一个名为“alphaled”的子节点,打开 imx6ull-alientek-emmc.dts 文件,在根节点“/”最后面输入如下所示内容: alphaled { #address-cells = <1>; #size-cells = <1>; compati 阅读全文
posted @ 2023-02-18 19:53 酷电玩家 阅读(108) 评论(0) 推荐(0) 编辑
摘要:一、设备树常用 OF 操作函数 设备树描述了设备的详细信息,这些信息包括数字类型的、字符串类型的、数组类型的,我们在编写驱动的时候需要获取到这些信息。Linux 内核给我们提供了一系列的函数来获取设备树中的节点或者属性信息,这一系列的函数都有一个统一的前缀“of_”,也被叫做 OF 函数。这些 OF 阅读全文
posted @ 2023-02-18 19:51 酷电玩家 阅读(155) 评论(0) 推荐(0) 编辑
摘要:一、设备树在系统中的体现 Linux 内核启动的时候会解析设备树中各个节点的信息,并且在根文件系统的 /proc/device/tree 目录下根据节点名字创建不同文件夹,如图所示: 上图就是目录/proc/device-tree 目录下的内容,/proc/device-tree 目录下是根节点“/ 阅读全文
posted @ 2023-02-18 19:32 酷电玩家 阅读(245) 评论(0) 推荐(0) 编辑
摘要:一、设备树 设备树是一种描述硬件的数据结构,它起源于OpenFirmware(OF)。 在 Linux 2.6 中, ARM 架构的板极硬件细节过多地被硬编码在 arch/arm/plat-xxx 和 arch/arm/mach-xxx 中,采用设备树后,许多硬件的细节可以直接通过它传递给Linux 阅读全文
posted @ 2023-02-18 17:00 酷电玩家 阅读(470) 评论(0) 推荐(0) 编辑
摘要:一、新字符设备驱动原理 1.1 分配和释放设备号 使用 register_chrdev 函数注册字符设备的时候只需要给定一个主设备号即可,但是这样会带来两个问题: ①、需要我们事先确定好哪些主设备号没有使用。 ②、会将一个主设备号下的所有次设备号都使用掉 解决办法就是在要使用设备号的时候向 Linu 阅读全文
posted @ 2023-02-18 16:50 酷电玩家 阅读(77) 评论(0) 推荐(0) 编辑
摘要:一、地址映射 MMU 全称叫做 Memory Manage Unit,也就是内存管理单元。MMU 主要完成的功能如下: ①、完成虚拟空间到物理空间的映射。 ②、内存保护,设置存储器的访问权限,设置虚拟存储空间的缓冲特性。 Linux 内核启动的时候会初始化 MMU,设置好内存映射,设置好以后 CPU 阅读全文
posted @ 2023-02-18 16:43 酷电玩家 阅读(86) 评论(0) 推荐(0) 编辑
摘要:一、字符设备驱动简介 Linux 应用程序对驱动程序的调用如图所示: 在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx”(xxx 是具体的驱动文件名字)的文件进行相应的操作即可实现对硬件的操作。 比如有个叫做 /dev 阅读全文
posted @ 2023-02-18 16:41 酷电玩家 阅读(159) 评论(0) 推荐(0) 编辑
摘要:一、在 Linux 中添加自己的开发板 1、添加开发板默认配置文件 将 arch/arm/configs 目 录 下 的 imx_v7_mfg_defconfig 重新复制一份,命名为 imx_kodo_emmc_defconfig,命令如下: cd arch/arm/configs cp imx_ 阅读全文
posted @ 2023-02-17 15:29 酷电玩家 阅读(532) 评论(0) 推荐(0) 编辑
摘要:一、链接脚本 vmlinux.lds Linux 内核的链接脚本文件 arch/arm/kernel/vmlinux.lds 中有如下代码: ENTRY 指明了了 Linux 内核入口,入口为 stext,stext 定义在文件 arch/arm/kernel/head.S 中。 二、Linux 内 阅读全文
posted @ 2023-02-17 15:23 酷电玩家 阅读(235) 评论(0) 推荐(0) 编辑
摘要:一、Linux 工程目录分析 二、顶层 Makefile 详解 1、配置工程,生成.config配置文件: make xxx_defconfig 会调用顶层的Makefile的 %config 规则。 第 534 行:引用 arch/arm/Makefile 这个文件,这个文件很重要, zImage 阅读全文
posted @ 2023-02-17 15:22 酷电玩家 阅读(165) 评论(0) 推荐(0) 编辑
摘要:一、环境变量 bootcmd bootcmd 和 bootagrs 是采用类似 shell 脚本语言编写的,里面很多的变量引用,这些变量都是环境变量,很多是 NXP 定义的。文件mx6ull_alientek_emmc.h 中的宏 CONFIG_EXTRA_ENV_SETTINGS 保存着这些环境变 阅读全文
posted @ 2023-02-17 15:21 酷电玩家 阅读(1442) 评论(0) 推荐(0) 编辑
摘要:一、移植自定义开发板流程 1、添加 mx6ull_kodo_emmc_defconfig 配置文件(.config) 在 /config s目录下,复制 mx6ull_14x14_evk_emmc_defconfig 文件,重命名为 mx6ull_kodo_emmc_defconfig 并修改其中内 阅读全文
posted @ 2023-02-17 15:20 酷电玩家 阅读(749) 评论(0) 推荐(0) 编辑
摘要:一、链接脚本 u-boot.lds 详解 要分析 uboot 的启动流程,首先要找到“入口”,找到第一行程序在哪里。程序的链接是由链接脚本来决定的,所以通过链接脚本可以找到程序的入口。如果没有编译过 uboot 的话链接脚本为 arch/arm/cpu/u-boot.lds。但是这个不是最终使用的链 阅读全文
posted @ 2023-02-17 15:19 酷电玩家 阅读(584) 评论(1) 推荐(1) 编辑
摘要:00、通识 版本号 VERSION = 2016 //主版本号 PATCHLEVEL = 03 //补丁版本号 SUBLEVEL = //次版本号 EXTRAVERSION = //附加版本信息 NAME = //名字有关的,一般不使用这两个 MAKEFLAGS 变量 export VARIABLE 阅读全文
posted @ 2023-02-16 16:48 酷电玩家 阅读(212) 评论(0) 推荐(0) 编辑
摘要:注:参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.6 一、help命令 进入 uboot 的命令行模式以后输入“help”或者“?”,然后按下回车即可查看当前 uboot 所支持的命令: help”或者“? 图中只是 uboot 的一部分命令,具体的命令列表以实际为准。图中的命令并不 阅读全文
posted @ 2023-02-16 16:07 酷电玩家 阅读(638) 评论(0) 推荐(0) 编辑