如何编程读取内存的SPD信息?包括manufactuer、part number、serial number......
给个思路,最好贴上代码

解决方案 »

  1.   

    这个和bcb没什么关系嘛,spd写在eprom里,应该和内存一起编址,估计应该是用bios调用读取某个内存地址吧。
      

  2.   

    就是cpuz测试软件中看到的那个spd
      

  3.   

    找到了一个相关的网页
    http://www.biosrepair.com/pic/pic98.htm
      

  4.   

    1.spd信息在smbus上
    2.不同的chipset读取方式不同
    3.xp下面穿透端口比较复杂贴一个pascal语言的98下面能工作的代码 for sis onlyprogram SMBus_Read;
    uses crt;
    label Check_Host_Status;
    var
       i,value:byte;
       SMB_Base:word;
       Slave_Address:byte;function InPort(Port:word):byte; {从port指定端口读取一个byte}
    var temp:byte;
    begin
      asm
         push ax
         push dx
         mov  dx,Port
         in   al,dx
         mov  temp,al
         pop  dx
         pop ax
      end;
      InPort:=temp;
    end;procedure OutPort(Port:Word;Value:byte); {向指定的端口port发送一个value}
    begin
      asm
         push ax
         push dx
         mov  al,Value
         mov  dx,Port
         out  dx,al
         pop  dx
         pop ax
      end;
      Delay(1);
    end;begin
      Clrscr;  write('Please input SMBUS Base Address:'); Readln(SMB_Base);
      write('Please input Slave Address:'); Readln(Slave_Address);  for i:=0 to 127 do
        begin      {Reset }
            OutPort(SMB_Base,$ff);
            OutPort(SMB_Base,$ff);
            OutPort(SMB_Base,$ff);      {SMB_Kill}
            OutPort(SMB_Base+3,$20);
          OutPort(SMB_Base+5,i);
          OutPort(SMB_Base+4,Slave_Address or 1);
          OutPort(SMB_Base+3, $12);      Check_Host_Status:
            value:=InPort(SMB_Base);
            if ((Value and 1<>0) or (Value and 2=0))
               and (value and 4<>0)
               then Goto Check_Host_Status;
          write(InPort(SMB_Base+8):4);
        end;
        readln;
    end.