- 博客(7)
- 收藏
- 关注
原创 【Linux 驱动小白教程】七、cdev结构体详解 + file_operations 完整驱动注册实操
本文摘要: 本章深入讲解Linux字符设备驱动开发的核心框架,重点解析cdev结构体与file_operations操作集的绑定机制。通过三大核心API(cdev_init初始化设备、cdev_add注册设备、cdev_del注销设备)实现完整驱动注册链路,并提供可直接编译的模板代码。内容涵盖设备号申请、文件操作回调绑定、模块加载卸载全流程,配套Makefile和操作步骤,帮助开发者掌握字符设备驱动的核心骨架,适用于90%的字符设备开发场景。
2026-08-16 04:33:39
30
原创 【Linux驱动小白教学】六、Linux驱动设备号详解(静态/动态申请+注销+实操)
本文是Linux字符设备驱动开发系列教程第六节,重点讲解设备号申请的核心知识。文章首先介绍设备号的基本概念(主设备号标识驱动类型,次设备号区分具体设备)及关键宏函数(MAJOR/MINOR)。然后详细讲解两种设备号申请方式:静态申请(register_chrdev_region)需手动指定设备号但易冲突,动态申请(alloc_chrdev_region)由内核自动分配更稳定。文中强调设备号必须在使用后注销(unregister_chrdev_region),并提供了查看设备号的系统命令(cat /proc/
2026-08-16 04:29:04
18
原创 【Linux 驱动小白教程】三、内核Makefile 配置编译全流程+自定义内核驱动
本文介绍了Linux内核源码内部驱动的编译配置流程,重点讲解了Kconfig和Makefile的编写方法。主要内容包括: 内核编译配置的两条路线: 图形化配置(make menuconfig) 使用默认配置(defconfig) Kconfig语法详解: menu/endmenu定义菜单组 config定义配置项(bool/tristate类型) depends/select设置依赖关系 source包含子目录配置 内核Makefile条件编译语法: obj-$(CONFIG_XXX)决定编译方式(y/m/
2026-08-15 21:48:25
17
原创 【Linux 驱动小白教程】五、模块启动加载底层流程详解
本文深入解析Linux内核模块初始化和加载的核心机制。对于module_init(),内核通过宏将函数指针存入.initcall6.init段,由do_initcalls()遍历执行,优先级0-7数字越小越高。模块加载时,insmod触发init_module系统调用,经load_module()解析ko文件后,最终同样通过do_one_initcall()执行初始化函数。文章还介绍了KBUILD_CFLAGS_MODULE编译宏,该选项专用于动态模块编译。关键点包括:初始化函数通过段机制延迟执行、内置与动
2026-08-15 01:42:40
16
原创 【Linux 驱动小白教程】四、模块符号导出 EXPORT_SYMBOL + 模块传参完整实操
本文介绍了Linux内核模块开发中的两个重要知识点:模块符号导出和命令行参数传递。 模块符号导出:通过EXPORT_SYMBOL和EXPORT_SYMBOL_GPL宏将函数/变量导出到内核符号表,供其他模块调用。前者允许任意模块使用,后者仅限GPL协议模块使用。使用时需注意加载顺序:先加载导出模块,再加载使用模块。 模块传参:通过module_param系列API实现加载时传递参数,无需重新编译。支持普通变量、数组和字符串参数,可设置sysfs文件权限。MODULE_PARM_DESC提供参数说明信息。使用
2026-08-14 02:13:24
23
原创 【Linux 驱动小白教程】二、驱动Makefile编写 + 模块操作全套命令实操
本文介绍了Linux内核驱动编译与操作的全流程。主要内容包括:1)驱动不能直接gcc编译的原因(需内核编译体系支持);2)驱动专用Makefile模板解析与编译方法;3)内核模块全套操作命令(lsmod/insmod/modprobe/rmmod/modinfo等);4)常见错误排查(版本不匹配、模块依赖等)。重点强调驱动开发必须使用与运行环境严格匹配的内核源码,并详细说明了从编译到加载、卸载的完整操作流程,帮助开发者快速上手内核模块开发。
2026-08-13 07:44:54
237
原创 【Linux驱动小白教程】一、从零看懂驱动框架+设备分类+最简模板(超详细)
本文是一篇面向Linux驱动开发初学者的入门指南,主要介绍了三个核心知识点:1)Linux驱动的四层框架(应用层→内核层→驱动层→硬件层),强调驱动作为软硬件通信桥梁的作用;2)Linux驱动的三大分类(字符设备、块设备和网络设备)及其特点;3)提供了可直接编译运行的最简驱动模板代码,包含模块加载/卸载函数、头文件和必要声明,并逐行解释代码功能。文章指出,掌握这三大基础概念后,后续复杂驱动开发都是在此模板上的功能扩展,适合新手收藏学习。全文通俗易懂,注重实践,帮助开发者快速入门Linux驱动开发。
2026-08-13 07:12:21
1047
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅