2013-03-14 29 views

回答

0

不確定這是多麼重要,但它可能有助於指向正確的方向。

使用PICBASIC與PICAXE MCU的(不是PIC MCU的)出現了名爲「READSILICON」

的編程語言中的關鍵字/語句這READSILICON行動將讀取的硅的未指定區域,並返回一個值,在轉/被用來識別MCU。

所以也許在您的開發IDE中有一個類似的功能?

注意: 因爲這是一個新功能,那麼只有新的mcu支持它,顯然老的不支持。

0

在x86中,可以使用CPUID指令檢索芯片名稱; Wikipedia article on CPUID給出瞭如何查詢處理器品牌名稱字符串的示例代碼。

有關CPUID的主要參考信息,請參見Intel's App Note,在撰寫本文時,品牌字符串標識爲第7.2節。

在GCC內聯彙編,你可以這樣做:

unsigned int cpuid = 0x80000000; 

__asm__ __volatile__("cpuid\n\t" : "+a" (cpuid)); 
if (cpuid >= 0x80000004) { // brand name query supported 
    union { char brandstr[48]; unsigned int i[12] } i; 
    __asm__ ("cpuid\n\t" 
     : "=a"(i.i[0]), "=b" (i.i[1]), "=c"(i.i[2]), "=d"(i.i[3]) 
     : "a"(0x80000002)); 
    __asm__ ("cpuid\n\t" 
     : "=a"(i.i[4]), "=b" (i.i[5]), "=c"(i.i[6]), "=d"(i.i[7]) 
     : "a"(0x80000003)); 
    __asm__ ("cpuid\n\t" 
     : "=a"(i.i[8]), "=b" (i.i[9]), "=c"(i.i[10]), "=d"(i.i[11]) 
     : "a"(0x80000004)); 
    printf ("This CPU brand name is: %48s\n", i.brandstr); 
} else { 
    printf ("This x86 CPU doesn't support brand name queries\n"); 
} 

確定內存佈局/大小沒有 BIOS在x86機器上是儘可能多的方式也幾乎是不可能直接做在硬件上是非常特定於CPU /芯片組的組合以及供應商的開發指南(BKCD-BIOS和內核開發者指南)通常僅在公衆(不需要NDA)版本中提供關於此的參考文獻部分。記錄的方法是查詢ACPI BIOS獲取此信息。

相關問題