新聞
新聞
如何辨識STM32/GD32是否為翻新仿品?
2022-03-16 261




最近,嵌入式ARM分享了一篇文章“GD32也開始充滿大量假貨。》文章中,嵌入式ARM的老朋友黃強也表示,他的技術交流小組正在討論…晶片價格上漲以及 販售鹹魚薯條我撰寫了一篇關於翻新假貨鑑別背景和方法的文章,現轉載供您參考。


                           

1

晶片價格上漲的背景    
過去兩年的中美戰爭對華為等一些國內大型科技公司造成了影響,但大多數電子相關公司受到的影響甚微。  
2020年,一場疫情對一些半導體公司造成了巨大打擊,例如工人罷工。  
隨後,部分原物料價格開始不同程度上漲。尤其自今年年初以來,包括金屬和塑膠在內的大多數原物料價格均有所上漲。從電阻器和電容器到電視機和冰箱等消費性電子產品,所有商品的價格都出現不同程度的上漲。  
  (圖片來源:網絡,侵權必定)
晶片的情況也是如此。我們熟悉的MCU價格都出現了不同程度的上漲,我想大家都知道這一點。特別是某些STM32型號的價格甚至上漲了好幾倍。  
在物價上漲的背景下,必然會出現一些不法商家,假貨的機率也會隨之增加。    
                           

2

STM32/GD32翻新機或假貨    
經驗豐富的工程師可能遇到過翻新或假冒的 STM32/GD32 的問題,包括我以前也遇到過這種情況:擦掉了 GD32 的標誌,然後把它變成了 STM32,或者從舊板上拆下來的翻新 STM32。  
我們來談談晶片翻新或假冒產品的一些情況:
  1. 擦除標誌  
晶片擦除標記非常常見,包括我們有時開發的產品中也包含這種標記。為了防止他人複製晶片,晶片表面的標記也可能被擦除,以防止仿冒。
 
有些商家會利用這種「麝香貓換王子」的伎倆牟利。早期的一些相容晶片,像是STM32,我知道很多都是假冒的GD32。  
  2.假模型  
STM32內部快閃記憶體的實際容量可能與型號不符。例如:STM32F103RF的標準容量為768K,但實際快閃記憶體容量大於768K。  
   
  這進一步引出了一個問題:您的 STM32 晶片的 FLASH 容量真的像 ST 官方選型手冊中所描述的那樣好嗎?  
 

我們先聊聊別的吧。


 
一般來說,對於初學者而言,內部快閃記憶體完全足夠。運行簡單的裸機演示程序,或一個包含兩個任務的即時作業系統演示程序,對目前的微控制器來說沒有任何壓力。  
然而,一旦你接觸到實際項目,你就會發現…許多地方會花費 FLASH有些專案會佔用大量 Flash 空間。例如:特定的演算法、載入字型庫,甚至在 Flash 中插入兩張圖片。  
再舉一個應用程式內購買 (IAP) 應用程式編程的例子:通常,那些升級功能做得更好的程式會設定一個與應用程式大小大致相同的快閃記憶體區域(備份區域)。也就是說:為了確保安全,請將程式下載儲存到備份區域中,然後在下載成功後更新應用程式。這樣做的目的是:這是為了防止下載過程中途斷開連接,導致下載失敗。。  
我找到一張圖,大致如下,它將快閃記憶體分為三個區域(啟動程式快閃記憶體區、應用程式快閃記憶體區和備份程式快閃記憶體區)。請思考一下。  
 
   
 
 
 

2. STM32晶片選擇


 
通常情況下,在專案提出需求後,我們會選擇合適的MCU。首先想到的就是查閱【選用手冊】。除了選擇外設資源外,還需要選擇合適的FLASH容量。 STM32產品的指令規則如下:
   
選型手冊地址:https://www.stmcu.com.cn/upload/selection_Guide.pdf (微信公眾號碼不支援外部鏈接,請複製連結開啟)
 
 
 

3. 確認STM32的內部快閃記憶體容量有多大


 
在討論了一些關於 Flash 的話題之後,讓我們回到本文的重點:我們的 STM32 內部 FLASH 容量可能比上述選用手冊中所述的容量更大。。  
例如:我的MCU晶片的具體型號是STM32F103RF。查看手冊,我發現它的容量是768K,但實際上它的FLASH容量是1M。  
   
這裡我將介紹兩種簡單的驗證方法:
1. 透過程式驗證  
簡單來說,就是透過擦除、寫入和讀取指定的位址(即超出 FLASH 大小的位址)來實現的。  
  FLASH_EraseSector FLASH_ProgramWord  
  2. 透過工具讀取 FLASH 數據  
這種方法是最直接、最簡單的方法。以STM32 ST-LINK Utility下載工具為例:
 
   
關鍵點其實已經在圖中描述了:如果位址超過 768K,則可以實際讀取資料。(上圖是我用STM32F103RF實際MCU讀取到的內容。應用程式的起始位址是0x080C0000,並且應用程式正在運行。)
說了這麼多,我真正想說的是:有很多STM32晶片都類似,不僅僅是我上面舉的STM32F103RF的例子。 103RC標稱容量是256K,但實際可用空間遠不止256K。如果你發現FLASH空間不足,可以用上述方法查看是否還有剩餘空間。  
  3. 翻新為原廠正品這種晶片在某些產品上最常見,看起來很廉價。如果你在零售店購買一些,它們會一起出貨。這些很可能是翻新晶片。
 
如果你買的是翻新晶片,可以寫個LED運行燈程式來測試,不會有問題。但是,一旦你參與到一個專案中,特別是那些需要更多周邊、功能更複雜的項目,你的本性可能很快就會暴露出來。  
如果你運氣不好,可能會出現以下情況:
  • 軟體連續加班運行數日卻沒有任何結果,於是人們把責任推給了硬體;
  • 對硬體飛線進行各種測試,更換晶片以解決問題;
  • 軟體工程師和硬體工程師之間會發生爭執;
  • ······

因此,目前市場上充斥著大量假冒或缺陷晶片也就不足為奇了,包括嵌入式ARM晶片,有人說「GD32也開始充斥假貨了」。我認為這種情況肯定存在。  
   
                           

3

識別翻新或仿冒品要鑑別翻新或假冒的STM32/GD32,通常的做法是先將其焊接在PCB板(或工裝夾具)上,然後通電檢查是否正常。如果晶片發熱、電流過大甚至冒煙,則需謹慎。  
然後讀取晶片信息,例如閃存容量、UID 信息、選項位元組等。  
這裡分享之前的文章:您了解STM32的這些暫存器嗎?  
具體閱讀方法如下:
 

1. 快閃記憶體容量暫存器


  1. 透過查閱登記冊  
在 STM32 的「參考手冊」中,有一個暫存器,例如 Flash 大小資料暫存器(通常在手冊的末尾),並且清楚地寫明了該暫存器的基底位址。  
  暗示不同的晶片型號可能具有不同的寄存器位址。例如,F103 的基底位址為:0x1FFFF7E0。  
   
這是一個16位元的值,出廠時已寫入,只能由程式讀取。讀取方法非常簡單,如下所示:
  uint16_t Flash_size;   Flash_size = *(uint16_t *)0x1FFFF7E0;  
  2. 透過 STM32 ST-LINK 實用程式直接讀取
 
透過ST-Link連接晶片並直接讀取,即可查看容量資訊:
   
 

2 UID 註冊


之前有人問過我,能否透過STM32的UID進行加密?這當然可以。  
但他又問我另一個問題,我不想讀取全部(96 位元),暫存器中只能讀取一部分資訊作為識別符嗎?讀取的部分會重複嗎?  
STM32 UID 唯一識別符適用於
  • 用作序號。
  • 它被用作密碼。在寫入快閃記憶體時,這個唯一識別碼與軟體加密和解密演算法結合使用,以提高快閃記憶體中程式碼的安全性。
  • 用於啟動具有安全機制的啟動過程。

STM32的UID總共有96位元(32 x 3)。各位朋友,我能只讀取其中的一部分作為唯一識別碼嗎?  
嚴格來說,這個問題無法回答。但如果要求不是特別嚴格,那也行。因為這個UID是照晶圓、批次等編號的。如果你購買的是同一批的產品,你會發現編號可能是連續的。  
   
 
我之前已經讀過幾塊成品板(所購MCU來自同一批次)。這些晶片的UID是連續的。如果您有興趣,可以嘗試一下。  
因此,如果將 UID 的一部分解讀為標識符,那麼只能說它並不嚴格。
 
 
 

3 暫存器偏移位址


還有很多初學者正在學習一些底層知識。例如,有些朋友想自己透過暫存器進行編程,但他們不知道什麼是暫存器基址,什麼是暫存器偏移位址。  
  1.基地址  
每個片上元件和片上裝置都有一個對應的基底位址,該位址由製造商決定,無法修改。如下圖所示:
   
程式中會包含與上述內容對應的程式碼:
   
  2. 偏移位址  
偏移位址是基於基底位址的偏移量(通常會增加 4 個位元組),例如 TIM 定時器的偏移位址:
   
類似地,程式中的對應程式碼透過結構體實現偏移量:
   
關於基底位址和偏移位址,無論是標準週邊程式庫或 HAL 庫,它們都是透過上面所示的基底位址+偏移方法實現的。  
正如本文之前多次提到的,如果要理解暫存器的原理或透過暫存器實現功能,最好參考「標準週邊程式庫」(SPLC)例程。 HAL庫封裝起來相對複雜,不適合研究底層暫存器。  
進一步驗證、寫入資料(RAM、Flash)測試、各種週邊設備的基本功能測試等。  
   
                           

4

推薦的正式管道購買假冒偽劣商品的代價非常高昂。在早期研發階段發現問題尚可接受,但大規模生產後問題可能會暴露出來。  
更可怕的是,由於假冒晶片,大量產品被運往客戶手中,導致產品出現問題。  
今天,溝通群組裡有人在討論鹹魚片賣薯片的情況。我想,你可以買薯片來玩,但在製作產品時最好謹慎一點。  
例如,在淘寶上找到的十幾元以上的STM32晶片,居然還是進口正品,你信嗎?  
   
  對於透過正規管道購買的晶片,問題仍有可能由晶片本身引起,更不用說像閒魚這樣的平台了。我之前也遇到過類似的問題,是從一家規模較大的正規代理商購買的STM32晶片。他們的現場應用工程師(FAE)曾多次前往公司檢查,但始終找不到問題所在。最後,我把原廠晶片拿回去拆解,發現確實是晶片本身的問題。  
 

因此,不要因為淘寶或閒魚等平台的晶片價格便宜就購買,建議透過正規管道購買,否則可能會付出更高的代價。


免責聲明:本文轉載自“strongerHuang”,該平台支持智慧財產權保護。轉載請註明原出處及作者。如有侵權,請聯絡我們刪除。


公司電話號碼:+86-0755-83044319
傳真:+86-0755-83975897
郵箱:1615456225@qq.com
QQ:3518641314 李經理

QQ:332496225 邱經理

地址:深圳市龍華新區民治大道1079號展濤科技大樓C座809室

whatsapp

WhatsApp

Whatsapp:+8618073002950