1为什么需要内核模块?
Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用需要的组件:
方法一:把所有的组件都编译进内核文件,即:zImage或bzImage,但这样会导致两个问题:一是生成的内核文件过大;二是如果要添加或删除某个组件时,需要重新编译这个内核。
Linux内核的整体结构非常庞大,其包含的组件也非常多,如何使用需要的组件:
方法一:把所有的组件都编译进内核文件,即:zImage或bzImage,但这样会导致两个问题:一是生成的内核文件过大;二是如果要添加或删除某个组件时,需要重新编译这个内核。
方法二:组件在需要时被使用,动态的添加到正在运行的内核中,内核文件zImage或bzImage本身并不包含该组件,在linux中叫做"内核模块"。文件以.o或.ko的文件形式存在。
linux驱动分类
2常规分类法:字符设备,块设备,网络设备;
字符设备:以字节为单位来访问设备;open,close ,write 系统调用;串口,LED
块设备: 以块(512字节)为最小传输单位的设备,不按字节来处理数据。
网络接口: 可