安装平台驱动程序

安装平台驱动程序

我最近在 x86 板上获得了一个集成看门狗定时器的设备驱动程序,我在该板上运行了一个最小的 Linux 系统。内核是 3.6.11,它是使用buildroot.

我的安装无法运行udev,因此我需要手动执行insmodmknod来获取我需要的任何驱动程序。我已经成功地为 CAN 驱动程序做到了这一点,但对于这个看门狗驱动程序,我能够交叉编译目标的源代码,并且我能够成功地生成insmod生成的 .ko 文件。此后,不会生成任何错误,并且会调用lsmod报告模块已加载。

我遇到的问题是我需要/dev为此驱动程序创建一个设备节点,但我不知道如何继续。我不知道如何像获取字符设备那样获取设备的主要和次要编号。

该驱动程序的来源表明它是一个平台设备驱动程序,但我不确定这意味着什么。我只听说过字符设备和块设备,所以 – 主设备号和次设备号的概念与平台设备相关吗?如果是这样,我怎样才能获得这些信息?该设备驱动程序名称中没有条目/proc,我不确定如何继续。

答案1

如果它使用普通的内核看门狗接口,则位于/dev/watchdog,此处为 10, 130。

它还可能导出另一个(/dev/watchdog0等)。通过查询sysfs可以发现:

$ cat /sys/class/watchdog/watchdog0/dev
253:0
$ cat /sys/class/watchdog/watchdog0/uevent 
MAJOR=253
MINOR=0
DEVNAME=watchdog0

确实:

$ ls -l /dev/watchdog0 
crw------- 1 root root 253, 0 May 17 18:26 /dev/watchdog0

该数字可能是动态分配的(我不确定),因此在您的计算机上可能会有所不同。

(平台设备可能也有一些东西/sys/devices/platform,可以让你设置各种参数)

编辑:你可以像这样创建一个字符设备mknod(作为root):

mknod -m 0600 /dev/watchdog c 10 130

-m设置模式(文件权限,这里必须使用八进制);/dev/watchdog是名字;c意味着它的一个C字符设备(与锁); 10 是主号码; 130是未成年人。

相关内容