免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3018 | 回复: 4
打印 上一主题 下一主题

紧急求助大家!求助dreamice大侠!SATA端口I/O读写问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-08-16 14:04 |只看该作者 |倒序浏览
本帖最后由 道无名 于 2010-08-16 16:27 编辑

关于从pci上读取SATA的问题。

#define PCI_ADDRESS     0xCF8
#define PCI_DATA        0xCFC

        iopl(3)
        addr = 0x80000000L | (0<<16) | (12<<11) | (0<<8 ) | 0x10;
        outl(addr,PCI_ADDRESS);
        data=inl(PCI_DATA);
        printf("addr : %X\n",addr);
        printf("data : %X\n",data);
        
我编程写完枚举pci设备后,想枚举硬盘,可从前面反应出的信息,我的硬盘不是ide的,是sata的。不能直接从端口读。于是我就从sata control的pci配置寄存器组开始读他的base address 10,14,18,1c.

我的这个0:12.0是pci枚举得出的:
00:12.0 SATA controller: ATI Technologies Inc SB600 Non-Raid-5 SATA

这个程序的问题,addr的输出来看,地址正确,可是为何这个pci配置寄存器组的base address 10,14,18,1c的输出数值都是0xffffffff

到底哪里出错了?还是说SATA的访问方式有其他的方式,可是既然都是连接到系统总线上,那么总线对应的配置寄存器组一定会有相关信息呀。我对这个十分困惑。

请大家帮忙看看,我是个新手,水平比较低微,听说这里强人高人老手很多,能否帮忙指点下!感谢!

论坛徽章:
0
2 [报告]
发表于 2010-08-16 14:40 |只看该作者
吧嘎!不好意思,原来是在host scsi0 下!白折腾一上午,白看了ide/sata的i/o方法。原来是scsi的。

Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: ATA      Model: ST3250310AS      Rev: 4.CC
  Type:   Direct-Access                    ANSI  SCSI revision: 05


现在新的问题,哪位大哥能帮我讲讲如何通过scsi0来探测到硬盘?

论坛徽章:
0
3 [报告]
发表于 2010-08-16 14:47 |只看该作者
是我表达的不好,还是问题太简单,怎么没人理我,我真的想了好半天!才来求助的。

自己编程扫描pci的时候很顺利,获得cpu信息的时候也很容易,一下子就ok了,可是在这里卡住了。

各位朋友,高人,帮帮忙呀!!不要嫌弃问题简单,谁都是从刚接触时的新手过来的。

谢谢大家,希望可以理解一个菜鸟迫切的心态!!

论坛徽章:
0
4 [报告]
发表于 2010-08-16 16:21 |只看该作者
本帖最后由 道无名 于 2010-08-16 16:41 编辑

我想他既然也是连在系统总线上的,那么一定顺着藤能摸到瓜。问题就是他的channel和port的问题。如果可以找到在pci分配给他的空间,也就是i/o口基地址的话,通过基地址向他发送信息就可以了。

我试验了用ide方式来读取,可是读出来的是ff,可见不是ide的模式。于是AHCI模式试图取得分配到的i/o口基地址。可是结果是ffffffff.这让我很困惑,莫非我的基地址取的不对吗?

各位前辈高人,不知道这个思路对不对。

能否指点一下,后天才能上来!见谅!

论坛徽章:
0
5 [报告]
发表于 2010-08-20 13:55 |只看该作者
阿,自己解决了,这么简单的问题,真不好意思呀!!以后一定再仔细琢磨琢磨。

os就是一个大接口呀。突然有个感觉,linux和windows,真的有什么不同吗?都是一样的呀!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP