一:WINDOWS下,用VC++编译,需要加载WINIO驱动。
读取方法:通过PCI DEVICE上SMBUS来读取。
1,找SMBUS BASE ADDRESS,查INTEL 南桥SPEC得到SMBUS的BUS#,DEVICE#,FUCTION#,OFFSET#,---------------0X8000FB20.
#define IO_SC 0x0cf8 //config space control address
#define IO_DA 0x0cfc //config space data address
dataddr=0x8000fb20; //for intel
// Call InitializeWinIo to initialize the WinIo library.
bResult = InitializeWinIo();
if(bResult)
{
//Get SMBus base address
SetPortVal(IO_SC,dataddr,4);
GetPortVal(IO_DA,&dwPortVal,4);
baseddr=dwPortVal&0xfffffff0;
printf("SMBus base address=%08X/n",baseddr);
2,读SPD信息,需要读SPD的哪个信息需要查SPD SPEC.
BYTE ReadSPD(DWORD base,BYTE offset,BYTE DEVID)
{
DWORD RetVal=0;
SetPortVal(base,0x0fe,1);
//output