--- title: 嵌入式Linux驱动开发实战 tags: [嵌入式Linux, 驱动开发, IMX6ULL, 知识库索引] created: 2026-09-16 --- # 嵌入式Linux驱动开发实战 > 基于正点原子IMX6ULL开发板,构建通用化嵌入式Linux知识体系。源码可直接复制,面试题真实场景。 ## 学习路径 ``` 裸机编程 → Linux内核基础 → 驱动开发核心 → 总线驱动 → 外设驱动 → 系统移植 ↓ ↓ ↓ ↓ ↓ ↓ 01模块 02模块 03模块 04模块 05模块 06模块 ``` ## 知识模块 ### 01-ARM架构与裸机编程 > 通用ARM知识,IMX6ULL实操 - [[01-ARM架构与裸机编程/01-Cortex-A7架构详解]] - 寄存器组、CPSR、工作模式、GIC中断、异常向量表 - [[01-ARM架构与裸机编程/02-ARM汇编基础]] - 指令集、寻址模式、伪指令、LED汇编示例 - [[01-ARM架构与裸机编程/03-时钟与电源管理]] - 7路PLL、时钟树、CCM寄存器、DVFS - [[01-ARM架构与裸机编程/04-GPIO与中断系统]] - GPIO寄存器组、中断配置、IRQ_Handler - [[01-ARM架构与裸机编程/05-定时器与看门狗]] - EPIT/GPT寄存器、定时器消抖、WDOG - [[01-ARM架构与裸机编程/06-UART串口通信]] - UART寄存器位域、波特率公式、printf重定向 - [[01-ARM架构与裸机编程/07-BSP工程管理与封装]] - 目录结构、通用Makefile、链接脚本 - [[01-ARM架构与裸机编程/08-裸机实验总结]] - 10个裸机实验整合(LED→UART→LCD→I2C/SPI) - [[01-ARM架构与裸机编程/面试-ARM架构与裸机]] - 30道真实面试题 ### 02-嵌入式Linux内核基础 > 内核原理,跨平台通用 - [[02-嵌入式Linux内核基础/01-内核编译与配置]] - Kconfig语法、顶层Makefile、vmlinux生成链 - [[02-嵌入式Linux内核基础/02-内核模块编程]] - module_init/exit、printk、模块参数、符号导出 - [[02-嵌入式Linux内核基础/03-系统调用与VFS]] - sys_call_table、super_block/inode/dentry/file - [[02-嵌入式Linux内核基础/04-进程调度与中断管理]] - task_struct、CFS调度、fork/COW、GIC-400 - [[02-嵌入式Linux内核基础/05-内存管理]] - 两级页表与TLB、伙伴系统、slab/slub、vmalloc/ioremap、DMA/CMA - [[02-嵌入式Linux内核基础/06-设备模型与Kobject]] - kobject/kset/ktype、sysfs、总线-设备-驱动模型 - [[02-嵌入式Linux内核基础/面试-Linux内核基础]] - 30道真实面试题 ### 03-Linux驱动开发核心 > 驱动理论 + IMX6ULL实践 - [[03-Linux驱动开发核心/01-字符设备驱动基础]] - file_operations、cdev、设备号、完整实验 - [[03-Linux驱动开发核心/02-设备树语法与实战]] - DTS语法、compatible、of_* API - [[03-Linux驱动开发核心/03-pinctrl与gpio子系统]] - 引脚复用、宏展开、电气属性、gpiod API - [[03-Linux驱动开发核心/04-并发同步与原子操作]] - 竞态分析、自旋锁、信号量、互斥体 - [[03-Linux驱动开发核心/05-中断下半部处理]] - softirq、tasklet、workqueue、线程化中断 - [[03-Linux驱动开发核心/06-阻塞IO与poll机制]] - 等待队列、select/poll、异步通知 - [[03-Linux驱动开发核心/07-platform总线模型]] - 总线匹配、of_match_table、probe流程 - [[03-Linux驱动开发核心/08-misc与input子系统]] - miscdevice、input_dev、事件上报 - [[03-Linux驱动开发核心/面试-Linux驱动开发]] - 35道真实面试题 ### 04-Linux总线与接口驱动 > 通用总线知识 - [[04-Linux总线与接口驱动/01-I2C驱动开发]] - I2C协议、i2c_adapter/client/driver、AP3216C驱动 - [[04-Linux总线与接口驱动/02-SPI驱动开发]] - SPI四模式、spi_master/device/driver、ICM20608驱动 - [[04-Linux总线与接口驱动/03-USB驱动开发]] - USB设备架构、HCD、URB、鼠标/Gadget驱动 - [[04-Linux总线与接口驱动/04-CAN驱动开发]] - CAN帧与仲裁、SocketCAN、FlexCAN驱动 - [[04-Linux总线与接口驱动/05-RS232与485通信]] - tty/uart框架、uart_port/ops、RS485方向控制 - [[04-Linux总线与接口驱动/面试-总线接口驱动]] - 30道真实面试题 ### 05-Linux外设驱动实战 > 具体外设,跨平台可迁移 - [[05-Linux外设驱动实战/01-LED与蜂鸣器驱动]] - GPIO子系统、设备树节点、完整源码 - [[05-Linux外设驱动实战/02-按键驱动]] - GPIO输入、消抖方案、中断、INPUT子系统 - [[05-Linux外设驱动实战/03-LCD驱动]] - RGB时序、framebuffer、fb_info、mxsfb驱动 - [[05-Linux外设驱动实战/04-触摸屏驱动]] - 电容触控、MT Protocol、FT5x06驱动、校准 - [[05-Linux外设驱动实战/05-音频驱动]] - I2S/SAI、WM8960 Codec、ALSA三层驱动模型 - [[05-Linux外设驱动实战/06-RTC与PWM驱动]] - SNVS-RTC驱动、PWM子系统、pwm_chip/ops - [[05-Linux外设驱动实战/07-ADC与IIO驱动]] - vf610 ADC驱动、IIO子系统、缓冲区、trigger - [[05-Linux外设驱动实战/08-块设备驱动]] - gendisk、request_queue、bio、请求处理 - [[05-Linux外设驱动实战/面试-外设驱动实战]] - 30道真实面试题 ### 06-系统移植与启动 > U-Boot + 内核 + 根FS,通用方法 - [[06-系统移植与启动/01-U-Boot命令与使用]] - 命令全集、环境变量、TFTP/NFS启动 - [[06-系统移植与启动/02-U-Boot启动流程]] - 源码结构、Makefile、SPL、重定位、main_loop - [[06-系统移植与启动/03-Linux内核裁剪与编译]] - 配置系统、裁剪策略、顶层Makefile、dtc - [[06-系统移植与启动/04-根文件系统构建]] - BusyBox配置编译、目录结构、/etc配置 - [[06-系统移植与启动/05-系统烧写与量产]] - SD/串口/USB烧写、MfgTool/UUU、量产方案 - [[06-系统移植与启动/面试-系统移植]] - 30道真实面试题 ## 跨平台资源 | 知识领域 | 本项目 | 已有资源 | | ------------ | -------------- | ----------------------------------------------- | | ARM裸机开发 | 01模块 | [[STM32学习笔记/01-STM32概述与开发环境搭建]] | | RTOS任务调度 | - | [[FreeRTOS学习笔记/02-任务调度与状态管理]] | | 中断管理 | 01模块、02模块 | [[FreeRTOS学习笔记/07-中断管理与临界段]] | | GPIO操作 | 01模块、03模块 | [[STM32学习笔记/02-GPIO寄存器详解与三步进化法]] | | I2C/SPI通信 | 04模块 | [[STM32学习笔记/07-I2C通信与EEPROM 24C02]] | | 电路基础 | - | [[数电模电笔记/模电/01-半导体基础与PN结]] | | PCB设计 | - | [[PCB学习笔记/01-PCB认识与EDA工具选择]] | ## 使用说明 ### 作为复习资料 - 按模块阅读,每个模块有完整的知识点组织 - 面试题可用于自测 ### 作为面试资料 - 每个模块末尾有"面试真题"文档 - 包含真实场景问题和参考答案 ### 作为查询资料 - 源码可直接复制使用 - 关键API有详细说明 ### 作为迁移指南 - 每个主题有"跨平台对比"表格 - IMX6ULL vs STM32 vs RK3568 --- **创建时间**: 2026-09-16 **基于资料**: 正点原子I.MX6ULL阿尔法开发板教程V2.0.1