linux IDE驱动问题
先谢谢大家帮忙!!!
版本2.6.21
系统能识别IDE硬盘但是在add_device的时候报错,芯片是6410
还有个疑问就是上面device_register(&drive->gendev);这里的参数drive->gendev初始化的地方没找到
打印信息如下:
##### s3c_ide_build_dmatable
##### s3c_ide_build_sglist
##### hwif->sg_nents 1
data: 5582f000 00001000
total size: 00001000, 1
rw: 5582f000 00001000
temp2: 00000058
wait_for_dev_ready: 0
2:S3C_ATA_CFG = 0x00000388
$WDWDBG$: set_trans_command founcation
00000000, 00000003
left: 00000ffe, 00001000
hdb: IRQ lost
hdb: lost interrupt
##### s3c_ide_dma_end
left: 00000ffe, 00001000
$WDWDBG$: s3c_ide_dma_end function
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
。。。。。。。。。
后面就一直打印这个,我看了代码,是6410的FIFO状态寄存器高三位不为0就一直检测。知道为0
我曾试过在s3c_ide_probe()函数开始的地方初始化那个寄存器,但是那样后就不认识IDE了
版本2.6.21
系统能识别IDE硬盘但是在add_device的时候报错,芯片是6410
int probe_hwif_init_with_fixup(ide_hwif_t *hwif, void (*fixup)(ide_hwif_t *hwif))
{
probe_hwif(hwif);
if (fixup)
fixup(hwif);
if (!hwif_init(hwif)) {
printk(KERN_INFO "%s: failed to initialize IDE interface\n",
hwif->name);
return -1;
}
if (hwif->present) {
u16 unit = 0;
int ret;
for (unit = 0; unit < MAX_DRIVES; ++unit) {
ide_drive_t *drive = &hwif->drives[unit];
/* For now don't attach absent drives, we may
want them on default or a new "empty" class
for hotplug reprobing ? */
if (drive->present) {
ret = device_register(&drive->gendev);//这里进去就没出来
if (ret < 0)
printk(KERN_WARNING "IDE: %s: "
"device_register error: %d\n",
__FUNCTION__, ret);
}
}
}
return 0;
}
还有个疑问就是上面device_register(&drive->gendev);这里的参数drive->gendev初始化的地方没找到
int device_register(struct device *dev)
{
device_initialize(dev);
return device_add(dev);//就是在这里面进入了死循环
}
打印信息如下:
##### s3c_ide_build_dmatable
##### s3c_ide_build_sglist
##### hwif->sg_nents 1
data: 5582f000 00001000
total size: 00001000, 1
rw: 5582f000 00001000
temp2: 00000058
wait_for_dev_ready: 0
2:S3C_ATA_CFG = 0x00000388
$WDWDBG$: set_trans_command founcation
00000000, 00000003
left: 00000ffe, 00001000
hdb: IRQ lost
hdb: lost interrupt
##### s3c_ide_dma_end
left: 00000ffe, 00001000
$WDWDBG$: s3c_ide_dma_end function
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
S3C_ATA_FIFO_STATUS: 10120000
。。。。。。。。。
后面就一直打印这个,我看了代码,是6410的FIFO状态寄存器高三位不为0就一直检测。知道为0
我曾试过在s3c_ide_probe()函数开始的地方初始化那个寄存器,但是那样后就不认识IDE了
...全文
相关推荐
vMware安装linux时提示未找到任何驱动器的解决方案
总之,当在vMware中安装Linux操作系统时遭遇“未找到任何驱动器”的错误,通过将硬盘接口从SCSI改为IDE或SATA,通常可以有效地解决问题。
Linux设备驱动开发 IDE驱动
这不仅有助于你提升Linux内核编程能力,也有助于解决实际项目中遇到的硬件兼容性和性能问题。在实践过程中,你需要阅读和理解代码结构,了解如何与内核其他部分交互,以及如何处理各种设备事件。
ide-cd.rar_linux atapi
理解并调试这样的驱动程序对于Linux系统管理员和开发者来说至关重要,尤其是当遇到设备不被识别、读取错误或性能问题时。开发者可能需要深入源代码,分析设备日志,甚至修改代码以解决特定硬件的兼容性问题。
linux-ide.vger.kernel.org.0
**开发与调试**:Linux-ide源码提供了丰富的调试工具和日志记录功能,帮助开发者调试驱动问题和优化性能。10.
ide-probe.rar_Linux/Unix编程_Unix_Linux_
`ide-probe.rar`这个压缩包中包含的`ide-probe.c`源代码文件,很可能是用于Linux内核中的IDE驱动程序探测模块。


