[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 メーリングリストの案内