OpenCode 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
..
01-ARM架构与裸机编程 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
02-嵌入式Linux内核基础 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
03-Linux驱动开发核心 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
04-Linux总线与接口驱动 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
05-Linux外设驱动实战 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
06-系统移植与启动 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu
README.md 1e1ca3b952 ingest: 嵌入式Linux驱动开发实战知识库(6模块46篇) 12 jam lalu

README.md


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