|
发表于 2005-4-5 00:46:45
|
显示全部楼层
今天我试验了一下把我的字符设备驱动程序加载进内核,发现用上面的方法并不行的通
分析了一下源代码,我觉得mem.c主要是用来做集中管理devfs的,具体还不是很清楚
当我把
#ifdef CONFIG_TESTDRIVE
init_test();
#endif
这几句话加入mem.c的文件的时候,发现在用make编译内核是会发现undefined references to这类的错误
说是没有认出init_test这个标志,就算我在mem.c程序开头加了
#ifdef CONFIG_TESTDRIVE
extern int init_test(void);
#endif
也不行,没有深入了解,不知道为什么会这样,
后来干脆把这个驱动程序作成单独的模块,
这样的话我们就得在test.c文件末尾加上
module_init(init_test);
module_exit(exit_test);
把之前在mem.c的修改注释掉,make编译成功,把内核下载到内存执行
可以看到自己的设备号,以及设备名(进入/proc中执行cat devices) |
|