[Suzaku:00633] Re: ドライバーがinsmodで組み込まれない

Tetsuya Ohkawa email@hidden
2006年 9月 2日 (土) 11:44:19 JST


大川です。

簡素なキャラクタデバイスドライバを作成して、
モジュールのロードを試してみました。
私の環境では、特に問題なく
・uClinux-dist-20040408-suzaku6
・uClinux-dist-20051110-suzaku2
の両方で、できました。

問題解決の参考になるかもしれませんので、
テスト用に作成したドライバのパッチを添付します。


 linux-2.4.x/drivers/char/Config.in     |    1 
 linux-2.4.x/drivers/char/Makefile      |    1 
 linux-2.4.x/drivers/char/test-driver.c |   75 +++++++++++++++++++++++++++++++++
 vendors/AtmarkTechno/SUZAKU-V/Makefile |    4 +
 4 files changed, 81 insertions(+)

Index: uClinux-dist-20051110-suzaku2/vendors/AtmarkTechno/SUZAKU-V/Makefile
===================================================================
--- uClinux-dist-20051110-suzaku2.orig/vendors/AtmarkTechno/SUZAKU-V/Makefile	2006-08-31 20:56:32.000000000 +0900
+++ uClinux-dist-20051110-suzaku2/vendors/AtmarkTechno/SUZAKU-V/Makefile	2006-09-01 21:07:24.412087048 +0900
@@ -84,6 +84,10 @@
 	ttyS1,c,4,65
 endif
 
+#ifdef CONFIG_SUZAKU_TEST
+DEVICES += atmark,c,253,0
+#endif
+
 FLASH_DEVICES = 	\
 	all,c,90,0	\
 	fpga,c,90,2	\
Index: uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/Makefile
===================================================================
--- uClinux-dist-20051110-suzaku2.orig/linux-2.4.x/drivers/char/Makefile	2006-08-31 20:56:32.000000000 +0900
+++ uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/Makefile	2006-08-31 21:00:40.000000000 +0900
@@ -248,6 +248,7 @@
 #
 # uClinux drivers
 #
+obj-$(CONFIG_SUZAKU_TEST)  += test-driver.o
 obj-$(CONFIG_EB67XDIP_QUADSER) += oki_ml67x_quad.o
 obj-$(CONFIG_MACH_EB67XDIP) += oki_ml67x.o
 obj-$(CONFIG_SERIAL_ML67XXXX) += serial_ml67xxxx.o
Index: uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/Config.in
===================================================================
--- uClinux-dist-20051110-suzaku2.orig/linux-2.4.x/drivers/char/Config.in	2006-09-01 21:02:22.530979952 +0900
+++ uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/Config.in	2006-09-01 21:04:56.776531064 +0900
@@ -22,6 +22,7 @@
     tristate '  Rotaly code switch support' CONFIG_SUZAKU_SIL_RSW
     bool     '  RS232C support' CONFIG_SUZAKU_SIL_RS232C
   fi
+  tristate 'Test Driver support' CONFIG_SUZAKU_TEST
 fi
 
 if [ "$CONFIG_EXCALIBUR" = "y" ]; then
Index: uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/test-driver.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ uClinux-dist-20051110-suzaku2/linux-2.4.x/drivers/char/test-driver.c	2006-09-01 21:06:51.555082072 +0900
@@ -0,0 +1,75 @@
+/**
+ * drivers/char/test-driver.c -- SUZAKU-V Test Driver
+ *
+ *  Copyright (C) 2006 Atmark Techno, Inc.
+ *
+ * Tetsuya OHKAWA <email@hidden>
+ */
+
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/init.h>
+#include <linux/fs.h>
+#include <linux/sched.h>
+#include <linux/slab.h>
+#include <linux/types.h>
+#include <linux/errno.h>
+
+#define DEV_NAME           "atmark"
+#define DEV_MAJOR          253
+#define DEV_VER            "1.0.0"
+
+static ssize_t test_read(struct file *filp, char __user *buf,
+			 size_t count, loff_t *offp)
+{
+	ssize_t retval = 0;
+	return retval;
+}
+
+static ssize_t test_write(struct file *filp, const char __user *buf,
+			  size_t count, loff_t *offp)
+{
+	ssize_t retval = count;
+
+	return retval;
+}
+
+static int test_open(struct inode *inode, struct file *filp)
+{
+	return 0;
+}
+
+static int test_close(struct inode *inode, struct file *filp)
+{
+	return 0;
+}
+
+static struct file_operations test_fops = {
+	owner:   THIS_MODULE,
+	open:    test_open,
+	release: test_close,
+	read:    test_read,
+	write:   test_write,
+};
+
+static int __init test_init_module(void)
+{
+	int ret;
+
+	pr_info(DEV_NAME" ("DEV_VER") : TEST Driver of SUZAKU-V\n");
+
+	ret = register_chrdev(DEV_MAJOR, DEV_NAME, &test_fops);
+	return ret;
+}
+
+static void __exit test_cleanup_module(void)
+{
+	unregister_chrdev(DEV_MAJOR, DEV_NAME);
+}
+
+module_init(test_init_module);
+module_exit(test_cleanup_module);
+
+MODULE_AUTHOR("Tetsuya Ohkawa");
+MODULE_LICENSE("GPL v2");

Abe wrote:
> abeと申します。
> 
> distを uClinux-dist-20040408-suzaku6 から uClinux-dist-20051110-suzaku2 に 
> 
> 更新し、dateが上手くいくのは確認したのですが
> これまでinsmodで組み込めたドライバーが組み込めなくなりました。
> 
> # insmod /bin/sensor.o
> Using /bin/sensor.o
> # more /proc/devices
> Character devices:
>   1 mem
>   2 pty
>   3 ttyp
>   4 ttl
>   5 console
>  10 misc
>  90 mtd
> 162 raw
> 254 cul
> 
> Block devices:
>  31 mtdblock
> 
> 再度
> # insmod /bin/sensor.o
> Using /bin/sensor.o
> insmod: A module named sensor already exists
> 
> です。
> 
> 勿論、configはローダブルをイネーブルにしています。
> 
> どなたかお分かりの方がいらっしゃいましたら、ご教示のほど
> よろしくお願いします。
> 
> _______________________________________________
> suzaku mailing list
> email@hidden
> http://lists.atmark-techno.com/mailman/listinfo/suzaku
> 





suzaku メーリングリストの案内