MCU內(nèi)核版本、廠商及型號(hào)的識(shí)別
之前21ic家曾發(fā)過(guò)《GD32也開(kāi)始假貨泛濫了》一文,也曾轉(zhuǎn)發(fā)過(guò)黃工撰寫(xiě)的辨別方法《如何識(shí)別STM32/GD32是否為翻新假貨?》,不過(guò)最近類似的問(wèn)題又出現(xiàn)在了21ic論壇。
一位網(wǎng)友在21ic論壇提出疑問(wèn)表示:“我用的STM32F103VBT6原本是在嘉立創(chuàng)買(mǎi)的,但沒(méi)辦法現(xiàn)在太貴了,而且還沒(méi)貨,就想在天貓上買(mǎi),找到一個(gè)39元的,但聽(tīng)說(shuō)淘寶上假貨或拆機(jī)的舊貨很多,請(qǐng)教如何識(shí)別是不是假貨? 假的是不是用GD這類假冒?但GD的如果我直接用原來(lái)ST的程序應(yīng)該是不能直接用的,它們的外設(shè)初等始化程序是不一樣的,是不是還有連外設(shè)初等始化程序都仿造成一樣的?拆機(jī)的舊貨就更難識(shí)別了,請(qǐng)老鳥(niǎo)們教教我,在天貓上能買(mǎi)到真貨嗎?”
熱心網(wǎng)友解答表示:“說(shuō)真的,這款芯片一年前是9塊多,現(xiàn)在天貓上各種價(jià)都有,39元是貴還是便宜真不知道,至于絲印很難看出吧?,F(xiàn)在激光打印機(jī)那么便宜,誰(shuí)都可以激光打印,封裝管腳不一樣的話直接就不能用了,性能不穩(wěn)定這個(gè)最難判別,我現(xiàn)在用的就遇到一些無(wú)法下載程序的,也找不到原因,但都是在嘉立創(chuàng)買(mǎi)的啊?!?/span>
網(wǎng)友玄德則為該網(wǎng)友支了一招——所謂“假貨”,其實(shí)都是拆機(jī)件。廠家說(shuō)“原裝正品”,這話不算錯(cuò),因?yàn)闆](méi)人能假冒。多數(shù)商家不會(huì)在網(wǎng)頁(yè)上明說(shuō)這是別人用過(guò)的,需要你在聊天里問(wèn)。能假冒出來(lái),說(shuō)明能力已經(jīng)媲美ST公司了,何必再干假冒的活?他認(rèn)為應(yīng)該這樣辨別假貨:
1、看單個(gè)芯片,咱們一般人是辨別不出來(lái)的。拆機(jī)件似乎都是散著裝的,新貨似乎是帶裝?!孟袷沁@樣,我不敢打包票。
2、你用旺旺問(wèn)商家,是全新還是拆機(jī),商家一般會(huì)實(shí)話實(shí)說(shuō),因?yàn)閮r(jià)錢(qián)擺著呢,沒(méi)必要騙人。有大把人能夠接受拆機(jī),不必要騙你一個(gè)。
3、如果想壓低成本,拆機(jī)件照樣可以用。壽命完全可以應(yīng)對(duì)用戶需要。
其中也有一位大佬也表示,可以使用ID來(lái)識(shí)別MCU的各種信息,他所舉例的是AT32系列,其他系列也可以參考這種方法來(lái)鑒別:
前言
本應(yīng)用筆記介紹了在AT32微控制器上如何實(shí)現(xiàn)當(dāng)前使用內(nèi)核版本、MCU廠商及型號(hào)的識(shí)別。
支持型號(hào)
AT32F403xx AT32F413xx AT32F415xx AT32F403Axx AT32F407xx
功能實(shí)現(xiàn) 識(shí)別內(nèi)核版
本所有的MCU內(nèi)部都包含一顆內(nèi)核(CPU),數(shù)據(jù)處理等操作都由它來(lái)完成。各MCU廠商在設(shè)計(jì)MCU的時(shí)候會(huì)根據(jù)使用場(chǎng)景等不同來(lái)選擇不同的內(nèi)核版本滿足需求。該部分就是提供一種方法自動(dòng)識(shí)別MCU的內(nèi)核版本。
通常本應(yīng)用設(shè)計(jì)到的MCU使用的內(nèi)核情況如表一所示:
表1 MCU 使用的內(nèi)核情況
內(nèi)核的系統(tǒng)控制塊(SCB)中存在一個(gè)名為CPU ID基本寄存器的寄存器,它是只讀的,其中包括處理器類型和版本號(hào),即為表1所示的CPU ID(內(nèi)核版本號(hào))。該寄存器的地址為0XE000ED00(只支持特權(quán)訪問(wèn)),在程序中,可以利用SCB->CPUID訪問(wèn)該寄存器,也可通過(guò)絕對(duì)地址訪問(wèn),如*(uint32_t *)0xE000ED00。本指南的配套程序就是通過(guò)這種方式獲取到內(nèi)核版本號(hào)并判斷出MCU所使用的內(nèi)核版本。
注:如需增加其他內(nèi)核版本的識(shí)別,自行添加即可。
識(shí)別MCU廠商
識(shí)別AT32 MCU
AT32 MCU內(nèi)部包含PID和UID編碼。UID總共為96bit,基地址為0x1FFFF7E8。這里只需要最高地址的一個(gè)Byte的數(shù)據(jù),則地址為0x1FFFF7F3,該地址中的內(nèi)容可以識(shí)別AT32系列MCU為403系列還是413系列。得到UID后還需要獲取PID以得到MCU的其他信息(例如封裝、內(nèi)部FLASH大小,SRAM大小等)從而達(dá)到區(qū)分的情況,PID的基地址為0xE0042000。本指南配套的程序中將獲取到的信息組裝成一個(gè)64bit的數(shù)據(jù),它可以區(qū)分出是AT32系列下的哪一種型號(hào),但是程序中只是判斷是否為AT32的MCU系列,并沒(méi)有做其它的細(xì)分判斷。
AT32系列MCU的PID/UID以及型號(hào)的對(duì)照表詳見(jiàn)附錄文檔中的表2(點(diǎn)擊閱讀原文內(nèi)下載)
....................................................................................
....................................................................................
配套程序通過(guò)對(duì)表2進(jìn)行遍歷查找,判斷當(dāng)前MCU是否為AT32系列。
注:表格2中所列為AT32系列MCU的F403、F413、F415、F403A和F407,若需支持更多型號(hào)的MCU,添加到程序內(nèi)的數(shù)組表中即可。
識(shí)別SXX32 MCU
配套程序支持對(duì)SXX32系列MCU的簡(jiǎn)易識(shí)別,通過(guò)讀取SXX32 MCU的PID便可識(shí)別是否為SXX32系列的MCU。配套程序支持對(duì)SXX32系列MCU的SXX32F1XXX和SXX32F4XXX系列的識(shí)別。
SXX32 MCU識(shí)別碼如表三所示:
表3 SXX 32 MCU 型號(hào)表
配套程序只支持對(duì)SXX32的簡(jiǎn)易識(shí)別,并且SXX32編碼方式與AT32不同,但是其PID的存放地址是與AT32是相同的。程序中對(duì)表3進(jìn)行遍歷查找,如果找到則返回。
注:本應(yīng)用指南主要為識(shí)別AT32系列MCU,若需對(duì)更多SXX32或其他MCU廠商的MCU識(shí)別支持,自行添加即可。
功能演示
AT32 MCU被識(shí)別實(shí)驗(yàn):
步驟:①下載程序到AT32 MCU中并運(yùn)行;②查看打印值,如圖1;
圖1 識(shí)別 AT32 F403A MCU 實(shí)驗(yàn)
從打印結(jié)果可知目前程序運(yùn)行的MCU為AT32系列的MCU且內(nèi)核版本為Cortex-M4。
AT32 MCU被識(shí)別實(shí)驗(yàn):
步驟:①下載程序到AT32 MCU中并運(yùn)行;②查看打印值,如圖2;
圖 2 識(shí)別 AT 32 F407 MCU 實(shí)驗(yàn)
從打印結(jié)果可知目前程序運(yùn)行的MCU為AT32系列的MCU且內(nèi)核版本為Cortex-M4。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問(wèn)題,請(qǐng)聯(lián)系我們,謝謝!






