- 这是自己平常学习中曾经困惑的问题。
Linux系统下的字符型设备和块设备的区分?
这里指的区分不是说如何从定义上进行区分,从实用的角度来看。打个比方就是,如果你自己写了个设备的驱动,或者从网上下载了一个驱动。安装好驱动之后,你没有相应的设备节点,要用到这样一条命令。mknod /dev/yourdevice type Major Slave,这里就牵扯到类型是字符型的还是块设备型的。如何从驱动里看出来呢。传统驱动程序注册/注销字符型设备时用到register_chrdev/unregiter_chrdev,而对于块设备则是:register_blkdev/unregiter_blkdev, 而基于devfs的驱动程序也可以看出来,命令分别对应为:字符型devfs_register()和devfs_unregister,块设备devfs_blkregister和devfs_blkunregister。
注释:在MagicArm上,上次帮同学看那个CAN总线驱动的时候要创建一个设备节点,我看了半天驱动程序也没有看出来是字符设备。后来只能试了。主要是不了解devfs_resgiter就是字符型设备的驱动。顺便说明下:平常的小型嵌入式实验中用到的块驱动是比较少的。
上次虚拟机开机发现光盘打不开了,发现在/dev目录下找不到cdrom了,这种问题还是有时候会碰见的,虽然不是很常见。方法就是创建一个cdrom节点就可以了,当然设备号这些东西要去文档目录下看:/usr/src/linux-2.4/Documenttation/Devices.txt. - 关于printk
printk(KERN_DEBUG “driver test”);
在头文件<linux/kernel.h>中定义了8种可用的日志级字符串。
KERN_EMERG 用于紧急事件,像系统崩溃等严重信息
KERN_ALERT用于警告信息
KERN_CRIT临界状态
KERN_ERR用于错误信息
KERN_WARNIN
linux字符设备驱动程序学习实验记录
最新推荐文章于 2024-08-09 16:57:45 发布