Linux内核模块是动态加载到内核中的代码片段,常用于驱动硬件、扩展系统调用或实现新的文件系统。字符设备驱动是最基础的驱动类型——它以字节流的方式与用户空间交互,像操作普通文件一样open/read/write/close。本文从零编写一个名为"mydev"的虚拟字符设备驱动,涵盖模块框架、设备号申请、cdev注册和用户空间测试。
Linux驱动开发中,字符设备是最基础也最常用的类型——它像文件一样通过open/read/write/close与用户空间交互。很多嵌入式工程师在写第一个驱动时,往往卡在设备号的申请、cdev的注册以及数据拷贝的细节上。本文以一个虚拟字符设备"mydev"为例,从头到尾走通注册流程和数据交互。