这一章换个角度,不再盯着内核怎么启动,而是讲怎么"给跑起来的内核加料"。上一章我们用 rest_init 把内核拉到了用户态,但那只是点亮了系统的骨架。真正让它干活的外设驱动,大多数都长成.ko模块这种形态,编译时能不能出来、加载时为什么有驱动死活 insmod 不进去,都归这一章管。这一章重点解决三件事:模块怎么写怎么编、insmod和modprobe到底差在哪、以及最玄的 vermagic 匹配。全章大约二十五分钟。建议开讲前先在rk3506_defconfig里搜一下=m的项,备着第七节用。文章目录一、概述二、形象比喻:ko 模块是给已有仪器加挂的可插拔功能卡三、内核模块基础3.1 最简单的内核模块示例3.2 内核模块与普通程序的区别四、完整的模块编译 Makefile4.1 `M=$(PWD)` 参数详解4.2 SDK 中模块的集成方式五、模块操作命令详解5.1 基本操作5.2 `insmod` vs `modprobe` 对比六、模块与内核的版本匹配(vermagic)七、RK3506 中的模块化实践7.1 适合编译为模块的驱动7.2 不适合编译为模块的驱动7.3 模块自动加载机制八、模块调试技巧📝 本章小结🏠 课后练习先把本章要张口答得出的四件事记下来,带着听。第一个问题落在第三节,第二个落在第五节,第三个落在第七节,第四个落在第六节–它是本章最坑的一个点。学完本章你将能回答:如何为 RK3506 编写和编译内核模块?(答在第三节)insmodvsmodprobe有什么区别?(答在第五节)RK3506 SDK 中哪些驱动适合编译为模块?(答在第七节)模块的 vermagic 是什么?为什么"内核版本+配置"必须精确匹配才能加载?(答在第六节)一、概述内核模块(.ko文件)是 Linux 最强大的特性之一——它允许动态加载驱动而无需重新编译内核或重启系统。在嵌入式系统中,合理使用模块化可以:缩减内核本体体积(不常用的驱动作为模块,按需加载)方便驱动调试(改驱动只需重编模块,不需重编整个内核)灵活的功能组合(根据实际外设配置选择性加载)给一个立场:对嵌入式平台来说,这三点里最实惠的是第二点。改一行驱动代码,重编整个内核动辄几分钟,重编一个模块几秒钟就出.ko,调试迭代快一个数量级。底下所有内容,都是围着这三点展开的。二、形象比喻:ko 模块是给已有仪器加挂的