BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #1591同步于 2008/10/14
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

这个驱动小毛病搞了几个小时,谁帮我看一下呀

lester98
2008/10/14镜像同步1 回复
主要就是在驱动的init函数中调用另外一个函数发生的,linux版本为2.4 情况一: static int ds1302_rtc_probe() { ... 前面语句均无关,仅最后三行... if (!(c == 0x42)) return 1; return 0; } static int __init ds1302_rtc_init(void) { int ret; ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops); if(ret){ printk("can't register rtc0\n"); } ret=ds1302_rtc_probe(); } 这样在编译好之后insmod的时候出错如下 Using a.o insmod: init_module: a: Device or resource busy 情况二: static int ds1302_rtc_probe() { ... 前面语句均无关,仅最后三行... if (!(c == 0x42)) return 1; return 0; } static int __init ds1302_rtc_init(void) { int ret; ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops); if(ret){ printk("can't register rtc0\n"); } ret=ds1302_rtc_probe(); if(ret){ printk("can't probe rtc0\n"); } } 这样在编译好之后insmod的时候出错如下 Using a.o can't probe rtc0 insmod: init_module: a: No space left on device 情况三: static int ds1302_rtc_probe() { ... 前面语句均无关,仅最后三行... if (!(c == 0x42)) return 1; return 0; } static int __init ds1302_rtc_init(void) { int ret; ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops); if(ret){ printk("can't register rtc0\n"); } ret=ds1302_rtc_probe(); } 这样在编译好之后insmod的时候出错如下 Using a.o insmod: init_module: a: Device or resource busy 情况二: static int ds1302_rtc_probe() { ... 前面语句均无关,仅最后三行... if (!(c == 0x42)) printk("can't probe rtc0\n"); return 0; } static int __init ds1302_rtc_init(void) { int ret; ret=register_chrdev(253,DRV_NAME, &ds1302_rtc_ops); if(ret){ printk("can't register rtc0\n"); } ret=ds1302_rtc_probe(); } 这样insmod的时候不会发生任何错误 Using a.o can't probe rtc0
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
lester98机器人#1 · 2008/10/15
已解决,原因是init函数没有返回,加上return 0;即可