设备号

linux 驱动程序 设备模块 设备号 设备文件创建 设备注册 字符驱动设备分析

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-30 12:06:37
驱动程序分为三部分:驱动设计模式(linux规定的) 内核相关模块 硬件知识 。 设备文件存放目录在 /dev下面 驱动模块分类: 字符驱动模块(高):以字节为最小访问单位,常常实现open,read,write 网络驱动模块:以块为最小访问单位,一般最小块512字节,可以是512字节的整数倍,但是linux允许块设备访问任意字节。 块设备驱动模块:网络事务 驱动模块添加方式 手动和编译进内核 模块手动命令添加到内核,.ko文件。insmod 编译进内核, 1,vi Kconfig config HELLO (HELLO 模块名字) bool "hello driver" (menuconfig 菜单中出现的名字) 保存,make menuconfig 就会出现新的选项 hello driver 2,vi Makefile 设备操作方式 设备号用来区分设备文件。分为主设备号和次设备号 主设备号:字符设备文件与字符设备驱动连接 次设备号:由于设备可能多个,可以用次设备号,区分哪个设备。 设备号关键字dev_t 为 unsigned int 32类型, 高12位主设备号,低20位为次设备号 MAJOR(dev_t dev)可以得到主设备, MINOR( dev_t dev )得到次设备 linux如何分配主设备号 静态和动态分配 静态申请 开发者自己申请 register_chrdev