我读取SMBus 的 PCI配置寄存器得到他的io base address是500h,但是对500h好像访问不了,不管我写进什么读出来都是0ffffh,请高手看看我的代码有什么问题moveax,8000fb20h ;base address ...
全文
回复(44) 2004-06-28 12:15 来自版块 - 内核编程
表情
xyz332_outp(SmbusBase+2, 0x54); //start to this SMBus 上面这句体现了是读block数据。但是我不明白的是block读出来的数据是来自哪些寄存器的呢?datasheet上好像找不出来相关信息。 还有下面这句, _outp(Smbu...(2005-06-14 13:34)
sharporvoid ReadSmbus(WORD SmbusBase,DWORD DeviceId) { BYTE buffer[0x80]; DWORD nPort=0x80; BYTE temp_al; const char *outputfilena...(2005-06-09 11:51)
xyz332sharpor,你的意思是读完第一个block的数据后重写smbase+03h,然后到smbase+07h去读数吗? 按理说我输入register index到smbase+03h后要读多少位应该由我决定,为什么要到smbase+05h去得到数值呢? 还有,我头痛的是为什么第...(2005-06-08 14:33)
sharpor如果采用block方式读的话,我怎么确定读到的数值是来自register1和register2的呢?是把这两个地址都写到smbase+03h上去吗?写的过程中需不需要什么间隔之类的? smbase+7h是block的数据,smbase+5h读到的是block的data个数 ...(2005-06-08 10:34)
xyz332如果采用block方式读的话,我怎么确定读到的数值是来自register1和register2的呢?是把这两个地址都写到smbase+03h上去吗?写的过程中需不需要什么间隔之类的?(2005-06-06 13:33)
xyz332那实际中该怎么写呢? 不知道有经验的人可不可以介绍一下? 用sharpor的方法我现在还有两个问题没有解决. 1.我每次开机第一次读的数值都是错误的,第二次才能得到正确数值. 2.同时读取两个寄存器数值的时候还是得到两个相同的错误数值. 仔细看了datasheet,各种...(2005-06-06 12:24)
boly81datasheet 上的例子 只是show just as this ,实际应用不能靠他的(2005-05-31 14:10)
sharpor[quote我看到一些smbus例程也这样写。但是这句我不大明白: out dx,al and al,NOT 40h ;强制把al的bit6标记为0?这样做有什么意义呢?datasheet上没有体现这一点啊 or al,al ...(2005-05-31 10:15)
xyz332[quote ] Check_Busy proc near mov dx,SM_Base+00h xx: in al,dx IODELAY ;I/O delay. out dx,al and al,NOT 40h ;mask the INUSE bit ...(2005-05-31 08:41)
sharpor我读的是byte。就是按你说的方法读的。每次先向smbase写0ffh重置状态,然后check 它的bit6。然后分别向偏移地址04h,03h,02h发命令,最后从05h读数据。两次唯一不同的是03h发送register index的数值不同。如果分别写成两个汇编函数读取(C内嵌...(2005-05-30 16:44)

返回顶部