调试设备驱动程序

linux内核没有集成对调试器的支持。

指令级的KDB(kernel debudgger 内核调试器)

源代码级调试器kgdb(kernel GNU DEBUGGER) 内核GNU调试器

udev 工作

1.内核中的sysfs支持,sysfs是Linux设备模型的重要组成部分。位于内存中,在启动时被挂载在/SYS目录下

2.一套用户空间守护程序和实用工具 ,如udevd 和udeinfo

3.用户自定义的规则,位于etc/udev/rules.d

如有两驱动器,一个usb dvd驱动器 另一个usb cd-rw驱动器。根据热插拔设备的顺序不同,一个命名为dev/sr0,l另外一个dec/sr1

在没有udev情况下,必须这样区分对应的设备。但是有udev后,不管什么顺序都能区分

一个 命名 dev/usbdvd DVD

一个命名dev/usbcdrw CD_RW


首先,从sysfs相应的文件中提取产品信息。假定targus Dvd驱动器被分配的设备节点为 

/dev/sr0

/dev/sr1

使用udevinfo 可收集的设备信息

bash>udevinfo -a -p /sys/block/sro

bash>udevinfo -a -p /sys/block/sr1

...

looking at the device chain at

'/sys/device/pci000:00/000:00:ld.7/usb1/1-3':

bus=="usb"

id=="1-3"

sysfs{bconfigurationvalue}=="2"

...

sysfs{idproduct}=="0302"

sysfs{idvendor}=="0dbf"

sysfs{manufacture}=="addonics"

sysfs{maxchild}=="0"

sfsfs{product}=="usb to IDE cable"

....

根据收集到的产品信息标识设备并且添加到udev命名规则

创建/etc/udev/rules.d/40-cdvd.rules

命令从shell脚本中挂载设备

mount/dev//usbdvd/mnt/dvd


测试语法规则是否错误,用

/sys/blcok/sr* 运行udevtest

内核的结构化设备模型在用户空间就称为 sysfs

procfs是查看内核的一个通用视窗。而sysfs则对应特定的设备模型。

kobject 封装了一些共用对象属性,通常嵌入在更大的数据结构中

bus_register()为/sys/bus增加一个相应的的入口

device_register() 为sys/devices 增加相应的入口

3个结构体


bus_type   总线

device 设备

device_driver 驱动程序

混杂设备驱动 (RTC驱动程序)


bash>modproble rtc 

bash>ls -lr /sys/class/misc


bash>ls -1/dev/rtc    



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值