大家好,我是杂烩君。
不知不觉,在公众号上已经和大家分享了很多嵌入式Linux的学习心得。回顾这几年,我们聊过入门避坑,深入过应用开发,也死磕过调试技巧。技术这条路,总是一步一个台阶。
公众号,之前针对不同的话题进行了碎片化地分享:
嵌入式开发必杀技:策略模式实战指南,告别if-else地狱!
......
......
FreeRTOS 工程化要点:任务划分、优先级设计与 CPU 占用率监控
写 FreeRTOS 任务通信,不用队列 Queue,你还有更好的选择?
......
......
嵌入式 Linux 多进程 IPC 通信方式很多,如何选择?
......
......
很多朋友在后台问我:“杂烩君,从应用层怎么才能跨过驱动开发这道坎?”、“MCU转到Linux,到底该怎么系统性地学?”
其实,我之前零散地聊过这些话题。
但碎片化的学习总是不够过瘾。今天,继续给大家分享这个系统性嵌入式Linux驱动课程。这个课程之前推荐过很多次了,不少粉丝反馈针对性一对一答疑解惑,收获很大:

名额有限,备注(嵌入式大杂烩)即可添加老师微信,进行定制学习路线,领取课程开发板。

添加后,您将获得:
技术之路,选择比努力更重要。
自主研发的一款高性能人机界面(HMI)显控一体机。产品搭载 Rockchip RK3506处理器,采用 三核 Cortex-A7 + 单核 Cortex-M0 的多核异构架构,主频高达 1.5GHz,在提供强劲业务处理性能的同时,兼具实时控制能力。
板载音频模块,可用于语音提示与多媒体交互。产品提供丰富的工业通信与扩展接口,包括 1 路百兆以太网、1 路 USB、1 路 Wi-Fi & Bluetooth 二合一模块、2 路 RS-485、2 路 RS-232、1 路 CAN 总线以及 1 路 TF 卡槽。支持现场固件升级、参数导入导出、数据存储等功能,可灵活适配工业、商业及 IoT 智能控制应用。
作为一款高集成度的显控一体机,HMI 适配嵌入式 Linux 系统,具备 UI 展示、数据处理、边缘计算、通信管理等能力,可广泛应用于智能屏、工业网关、物联终端等场景。产品还可用于电力监控、储能触控屏、光伏逆变器 HMI 等多协议实时控制应用场景,也适用于 PLC 控制面板、工业仪表、设备状态监控与产线可视化。此外,还可用于自助售卖机、智能门禁、停车终端、广告屏等人机交互设备,以及智能照明、暖通、新风设备的集中控制,支持多协议通信。





课程学习有问题,还可以语音交流,答疑:

学员评价:


Linux 内核的打印

dynamic debug动态打印

perf进行性能优化

strace跟踪器的原理及使用

网卡队列均衡负载

跟踪系统事件



继电器:

AP3216

Oled

中断注册:

中断下半部 tasklet 原理:

实验:

互斥锁:

自旋锁的实现原理

互斥锁的原理:

信号量



必要性:.dts语法、设备树编译、内核解析机制。
原因:现代嵌入式开发已全面替代硬编码,必须掌握。
学习方法:
① 反编译对比:修改.dts后编译成.dtb,再用fdtdump工具反编译,观察语法对应关系。 ② 动态修改:通过/proc/device-tree实时查看内核解析后的设备树节点。


必要性:platform_driver、platform_device分离设计。
原因:Linux驱动框架的核心设计思想,高频面试题。
学习方法:
① 分离设计实践:将字符设备驱动改造成platform_driver和platform_device分离结构(设备树描述硬件资源)。 ② 匹配机制实验:故意修改of_match_table中的兼容字符串,观察驱动加载失败现象。


必要性:gpiod_get、方向设置、中断绑定。
原因:所有引脚控制的基础(如LED、继电器)。
学习方法:
① LED闪烁实战:通过gpiod_direction_output()控制LED引脚电平,结合定时器实现呼吸灯效果。 ② 中断按键:用gpiod_to_irq()将按键GPIO映射为中断号,测试防抖处理。

必要性:引脚复用配置(如UART和GPIO冲突时)。
原因:解决复杂SoC引脚功能冲突问题。
学习方法:
① 引脚复用冲突:在设备树中配置同一引脚既作UART又作GPIO,观察内核启动时的报错信息。 ② 示波器验证:修改pinctrl配置后,用示波器测量引脚实际电平变化。


必要性:led_classdev、触发器(trigger)。
原因:标准化LED控制,快速开发无需重复造轮子。
学习方法:
① 触发器应用:利用内置的heartbeat触发器实现LED随系统心跳闪烁,无需编写驱动。

必要性:I2C用于连接低速外设(如传感器、EEPROM、触摸屏等)
学习方法:
① 用户态模拟:先用i2c-tools(如i2cset/i2cget)手动操作传感器,再对比内核驱动实现。 ② 协议分析:用逻辑分析仪抓取I2C波形,对照时序图分析START/STOP/ACK信号。


① 全双工测试:实现SPI环回测试(MOSI接MISO),验证数据收发一致性。 ② 性能优化:对比spi_sync()和spi_async()的吞吐量差异(如传输1MB数据耗时)。


① 回环测试:短接开发板TX/RX引脚,通过echo命令发送数据并接收验证。 ② 自定义协议:基于tty_struct实现一个简单的串口协议(如帧头+数据+CRC校验)


包含如下内容:

必要性:SD卡、Wi-Fi模块等高速外设的通信接口。
原因:嵌入式设备中常用SDIO接口连接Wi-Fi芯片(如RTL8723DS)、SD存储卡等,需掌握SDIO协议、块设备读写、中断处理及电源管理。

必要性:有线网络通信的基础,支持TCP/IP协议栈与PHY芯片驱动。
原因:工业设备(如PLC)、网络网关开发必备,需熟悉PHY寄存器配置、net_device结构体、DMA传输优化及网络协议栈集成。

必要性:高清视频与音频传输的标准接口。
原因:多媒体设备、显示终端需实现高清视频输出,涉及TMDS信号协议、EDID读取、分辨率切换及音频嵌入等技术。

必要性:音频采集与播放的硬件接口。
原因:语音设备、多媒体系统需处理音频流,包括I2S/PCM协议、编解码器驱动、ALSA框架集成及音频功耗管理。

必要性:高速外设扩展接口(如GPU、NVMe SSD)。
原因:高性能计算、存储设备依赖PCIE进行高速数据传输,需掌握枚举、配置空间、DMA及链路电源管理。

必要性:移动设备中摄像头、显示屏的串行接口。
原因:智能手机、嵌入式视觉系统常用MIPI CSI(摄像头)和DSI(显示),需理解通道同步、时序配置及低功耗模式。

必要性:通用外设连接与数据传输接口。
原因:从HID设备到高速存储均依赖USB,需掌握主机/设备模式、端点配置、USB协议栈及Type-C多角色支持。


