के लिए नहीं बनाया गया है मैंने एमडीवी नियमों के साथ एम्बेडेड लिनक्स चल रहे व्यस्त बॉक्स में एक साधारण यूएआरटी सीरियल ड्राइवर लिखा है। मैंने अपने ड्राइवर कोड में .dev_name
"ttyC2C
" प्रदान किया है।डिवाइस नोड/dev/tty * यूआर्ट सीरियल ड्राइवर
static struct uart_driver serial_omap_reg = {
.owner = THIS_MODULE,
.driver_name = "Omap-C2C-Serial",
.dev_name = "ttyC2C",
.nr = OMAP_MAX_HSUART_PORTS,
.cons = NULL,
};
नोड tty के लिए
./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
./sys/class/tty/ttyC2C0
/# ls -l ./sys/class/tty/ttyC2C0
lrwxrwxrwx 1 root 0 0 Jan 1 00:14 ./sys/class/tty/ttyC2C0 -> ../../devices/platform/omap_c2c_uart.0/tty/ttyC2C0
/# ls -l ./sys/devices/platform/omap_c2c_uart.0/tty/ttyC2C0
-r--r--r-- 1 root 0 4096 Jan 1 00:14 dev
lrwxrwxrwx 1 root 0 0 Jan 1 00:14 device -> ../../../omap_c2c_uart.0
drwxr-xr-x 2 root 0 0 Jan 1 00:14 power
lrwxrwxrwx 1 root 0 0 Jan 1 00:14 subsystem -> ../../../../../class/tty
-rw-r--r-- 1 root 0 4096 Jan 1 00:14 uevent
/#
mdev नियमों में बनाया जा रहा है हालांकि इस प्रकार हैं:
tty 0:5 0666
tty.* 0:0 0620
कैसे /dev/ttyC2C
के रूप में डिवाइस नोड पाने के लिए?
"आवश्यक लिनक्स डिवाइस ड्राइवर" पुस्तक में, यह कहना है कि "struct platform_driver" और "struct uart_driver" में ड्राइवर नाम ही होना चाहिए। मैंने कोड के अनुसार संशोधित किया लेकिन अभी भी/dev/ttyC2C नोड जनसंख्या नहीं जा रहा है। –
जब मैं uart_driver संरचना में .major और .minor जोड़ता हूं और मैन्युअल रूप से "mknod" का उपयोग कर डिवाइस नोड बना देता हूं तो ड्राइवर ठीक काम करता है। क्यों कर्नेल (3.4.0) स्वचालित रूप से इसे बनाने में सक्षम नहीं है? –