ข่าว
ข่าว
จะตรวจสอบได้อย่างไรว่า STM32/GD32 เป็นของปลอมที่ผ่านการปรับปรุงใหม่?
2022-03-16 261




เมื่อเร็วๆ นี้ embedded ARM ได้เผยแพร่บทความเรื่อง "GD32 เริ่มมีสินค้าลอกเลียนแบบเข้ามามากมายเช่นกัน》บทความเรื่อง Stronger Huang ซึ่งเป็นเพื่อนเก่าของ ARM embedded ยังกล่าวอีกว่ากลุ่มแลกเปลี่ยนทางเทคนิคของเขากำลังหารือเรื่องนี้อยู่ราคาชิปสูงขึ้นและขายมันฝรั่งทอดบนปลาเค็มหัวข้อนี้และบทความที่เปิดเผยเบื้องหลังและวิธีการระบุของปลอมที่ได้รับการปรับปรุงใหม่ บทความดังกล่าวได้รับการคัดลอกมาไว้เพื่อเป็นข้อมูลอ้างอิงของคุณ


                           

1

ที่มาของการเพิ่มขึ้นของราคาชิป    
สงครามระหว่างจีนและสหรัฐฯ ในช่วงสองปีที่ผ่านมาส่งผลกระทบต่อบริษัทเทคโนโลยีขนาดใหญ่ในประเทศบางแห่ง เช่น หัวเว่ย อย่างไรก็ตาม บริษัทที่เกี่ยวข้องกับอิเล็กทรอนิกส์ส่วนใหญ่ได้รับผลกระทบน้อยมาก  
ในปี 2020 โรคระบาดได้สร้างความเสียหายอย่างหนักให้กับบริษัทผลิตเซมิคอนดักเตอร์บางแห่ง เช่น การประท้วงหยุดงานของคนงาน  
จากนั้น ราคาวัตถุดิบบางชนิดก็เริ่มปรับตัวสูงขึ้นในระดับที่แตกต่างกัน โดยเฉพาะอย่างยิ่งตั้งแต่ต้นปีนี้ ราคาวัตถุดิบส่วนใหญ่ เช่น โลหะและพลาสติก ได้เพิ่มสูงขึ้น ราคาของทุกอย่างตั้งแต่ตัวต้านทานและตัวเก็บประจุ ไปจนถึงเครื่องใช้ไฟฟ้าสำหรับผู้บริโภค เช่น โทรทัศน์และตู้เย็น ต่างก็เพิ่มสูงขึ้นในระดับที่แตกต่างกัน  
  (ที่มาของภาพจากอินเทอร์เน็ต ละเมิดลิขสิทธิ์และถูกลบแล้ว)
เช่นเดียวกับชิป ราคาของไมโครคอนโทรลเลอร์ (MCU) ที่เราคุ้นเคยกันดีนั้นเพิ่มขึ้นในระดับที่แตกต่างกันไป ผมเชื่อว่าทุกคนคงทราบดี โดยเฉพาะอย่างยิ่ง ราคาของ STM32 บางรุ่นเพิ่มขึ้นหลายเท่าตัวด้วยซ้ำ  
ในบริบทของการขึ้นราคาเช่นนี้ ย่อมต้องมีพ่อค้าที่ไม่ซื่อสัตย์อยู่บ้าง และนั่นก็ทำให้โอกาสที่จะมีสินค้าปลอมเพิ่มสูงขึ้น    
                           

2

STM32/GD32 ที่ได้รับการซ่อมแซมใหม่หรือของปลอม    
วิศวกรผู้มีประสบการณ์อาจเคยพบปัญหาเกี่ยวกับ STM32/GD32 ที่ได้รับการซ่อมแซมใหม่หรือของปลอม รวมถึงตัวผมเองด้วย ที่เคยลบโลโก้ GD32 ออกแล้วเปลี่ยนเป็น STM32 หรือ STM32 ที่ได้รับการซ่อมแซมใหม่โดยถอดมาจากบอร์ดเก่า  
เรามาพูดถึงสถานการณ์บางอย่างเกี่ยวกับการซ่อมแซมชิปหรือสินค้าลอกเลียนแบบกัน:
  1. ลบธง  
เครื่องหมายลบบนชิปนั้นพบเห็นได้ทั่วไป รวมถึงในผลิตภัณฑ์ที่เราพัฒนาขึ้นมาบางครั้ง เพื่อป้องกันการลอกเลียนแบบชิป เครื่องหมายบนพื้นผิวของชิปอาจถูกลบออกเพื่อป้องกันการปลอมแปลง
 
ธุรกิจบางแห่งจะใช้กลวิธี "แลกแมวชะมดกับเจ้าชาย" นี้เพื่อแสวงหาผลกำไร ชิปที่ใช้งานร่วมกันได้บางรุ่น เช่น STM32 ในยุคแรกๆ ผมรู้ว่าหลายตัวเป็น GD32 ปลอม  
  2. โมเดลปลอม  
ขนาดจริงของหน่วยความจำแฟลชภายใน STM32 อาจไม่ตรงกับรุ่นที่ระบุไว้ ตัวอย่างเช่น ความจุมาตรฐานของ STM32F103RF คือ 768K แต่ขนาดหน่วยความจำแฟลชจริงอาจมากกว่า 768K  
   
  คำถามนี้ต่อยอดจากหัวข้อเดิม: ความจุของหน่วยความจำ FLASH ในชิป STM32 ของคุณดีจริงตามคู่มือการเลือกอย่างเป็นทางการของ ST หรือไม่?  
 

1. มาคุยเรื่องอื่นกันก่อนดีกว่า


 
โดยทั่วไปแล้ว สำหรับผู้เริ่มต้น หน่วยความจำ FLASH ภายในนั้นเพียงพอแล้ว การรันเดโมแบบ bare metal อย่างง่าย หรือเดโม RTOS บวกกับสองงานนั้น ไม่ได้สร้างภาระให้กับ MCU รุ่นปัจจุบันเลย  
อย่างไรก็ตาม เมื่อคุณได้สัมผัสกับโครงการจริง ๆ คุณจะพบว่าหลายแห่งจะใช้ FLASHและบางโปรเจ็กต์ก็ใช้พื้นที่ FLASH มาก ตัวอย่างเช่น อัลกอริทึมเฉพาะ การโหลดไลบรารีฟอนต์ หรือแม้แต่การใส่รูปภาพสองรูปในรูปแบบ FLASH  
ลองพิจารณาตัวอย่างอื่นของการเขียนโปรแกรมแอปพลิเคชัน IAP: โดยทั่วไปแล้ว ผู้ที่ทำการอัปเกรดฟังก์ชันนี้ได้ดีกว่า จะมีพื้นที่ FLASH (พื้นที่สำรองข้อมูล) ที่มีขนาดใกล้เคียงกับแอปพลิเคชัน กล่าวคือ เพื่อความปลอดภัย ให้บันทึกการดาวน์โหลดโปรแกรมของคุณในพื้นที่สำรองข้อมูล แล้วอัปเดตแอปพลิเคชันหลังจากดาวน์โหลดสำเร็จแล้ว จุดประสงค์ของการทำเช่นนี้คือ:เพื่อป้องกันไม่ให้การดาวน์โหลดถูกตัดการเชื่อมต่อกลางคัน ซึ่งอาจทำให้การดาวน์โหลดล้มเหลว.  
ผมเจอรูปภาพรูปหนึ่งที่แบ่งพื้นที่ FLASH ออกเป็นสามส่วนคร่าวๆ (พื้นที่ FLASH สำหรับโปรแกรมบูต พื้นที่ FLASH สำหรับแอปพลิเคชัน และพื้นที่ FLASH สำหรับโปรแกรมสำรองข้อมูล) ลองคิดดูนะครับ  
 
   
 
 
 

2. การเลือกชิป STM32


 
โดยทั่วไป หลังจากที่โครงการของเราได้กำหนดข้อกำหนดแล้ว เราจะเลือกไมโครคอนโทรลเลอร์ (MCU) ที่เหมาะสม สิ่งแรกที่นึกถึงคือการตรวจสอบ [คู่มือการเลือก] นอกจากการเลือกทรัพยากรอุปกรณ์ต่อพ่วงแล้ว ยังมีการเลือกความจุ FLASH ที่เหมาะสมอีกด้วย กฎคำสั่งของผลิตภัณฑ์ STM32 มีดังนี้:
   
ลิงก์ไปยังคู่มือการคัดเลือก: https://www.stmcu.com.cn/upload/selection_Guide.pdf (บัญชี WeChat อย่างเป็นทางการไม่รองรับลิงก์ภายนอก โปรดคัดลอก URL เพื่อเปิด)
 
 
 

3. ตรวจสอบขนาดของหน่วยความจำแฟลชภายในของ STM32


 
หลังจากพูดคุยเกี่ยวกับหัวข้อต่างๆ เกี่ยวกับ FLASH ไปแล้ว เรามากลับมาที่ประเด็นสำคัญของบทความนี้กันอีกครั้ง:หน่วยความจำ FLASH ภายในของ STM32 ของเราอาจมีขนาดใหญ่กว่าที่ระบุไว้ในคู่มือการเลือกข้างต้น.  
ตัวอย่างเช่น: รุ่นเฉพาะของชิป MCU ของฉันคือ STM32F103RF เมื่อดูจากคู่มือแล้ว ฉันพบว่าความจุของมันคือ 768K แต่จริงๆ แล้วมีความจุ FLASH เพียง 1M เท่านั้น  
   
ต่อไปนี้ผมจะพูดถึงวิธีการตรวจสอบความถูกต้องสองวิธีง่ายๆ:
1. ตรวจสอบผ่านการเขียนโปรแกรม  
กล่าวโดยสรุปคือ เป็นการลบ เขียน และอ่านที่อยู่ตามที่กำหนด (ซึ่งก็คือที่อยู่ที่มีขนาดเกินขนาดของหน่วยความจำ FLASH)  
  FLASH_EraseSector FLASH_ProgramWord  
  2. อ่านข้อมูล FLASH ผ่านเครื่องมือต่างๆ  
วิธีนี้เป็นวิธีที่ตรงไปตรงมาและง่ายที่สุด ยกตัวอย่างเช่น เครื่องมือดาวน์โหลด STM32 ST-LINK Utility:
 
   
ประเด็นสำคัญต่างๆ ได้ถูกอธิบายไว้ในภาพแล้ว:หากที่อยู่เกิน 768K ข้อมูลก็จะสามารถอ่านออกมาได้จริง(ภาพด้านบนคือข้อมูลที่ผมอ่านได้จากไมโครคอนโทรลเลอร์ STM32F103RF จริง ๆ ที่อยู่เริ่มต้นของแอปพลิเคชันคือ 0x080C0000 และแอปพลิเคชันกำลังทำงานอยู่จริง)
หลังจากที่พูดมามากแล้ว สิ่งที่ผมอยากจะบอกจริงๆ ก็คือ มีชิป STM32 หลายตัวที่มีลักษณะคล้ายกัน ไม่ใช่แค่ STM32F103RF ที่ผมยกตัวอย่างไปข้างต้นเท่านั้น ชิป 103RC นั้นระบุพื้นที่ไว้ 256K แต่จริงๆ แล้วมีพื้นที่มากกว่า 256K หากคุณพบว่าพื้นที่ FLASH ไม่เพียงพอ คุณสามารถใช้วิธีข้างต้นเพื่อตรวจสอบว่ามีพื้นที่เหลือมากกว่านั้นหรือไม่  
  3. ปรับปรุงใหม่ให้เป็นผลิตภัณฑ์ดั้งเดิมและแท้จริงชิปประเภทนี้พบได้บ่อยในสินค้าบางประเภท เป็นแบบที่ดูราคาถูก ถ้าซื้อจากร้านค้าปลีก ชิปเหล่านั้นมักจะเป็นชิปที่ผ่านการซ่อมแซมแล้ว
 
หากคุณซื้อชิปที่ได้รับการซ่อมแซมใหม่ คุณสามารถเขียนโปรแกรมไฟวิ่ง LED เพื่อทดสอบได้ และจะไม่มีปัญหาใดๆ อย่างไรก็ตาม หลังจากที่คุณเข้าร่วมโครงการ โดยเฉพาะโครงการที่ต้องการอุปกรณ์ต่อพ่วงมากขึ้นและมีฟังก์ชันที่ซับซ้อนกว่า รูปแบบเดิมของคุณอาจจะปรากฏออกมาในไม่ช้า  
หากคุณโชคร้าย อาจเกิดสถานการณ์ต่อไปนี้:
  • ซอฟต์แวร์ทำงานหนักต่อเนื่องหลายวันโดยไม่เห็นผลใดๆ และสุดท้ายก็โทษว่าเป็นความผิดของฮาร์ดแวร์
  • มีการทดสอบต่างๆ เกี่ยวกับสายไฟที่ต่ออยู่กับฮาร์ดแวร์ รวมถึงการเปลี่ยนชิปเพื่อแก้ไขปัญหา
  • วิศวกรซอฟต์แวร์และวิศวกรฮาร์ดแวร์ทะเลาะกัน;
  • -

ดังนั้นจึงไม่น่าแปลกใจที่มีชิปปลอมหรือชิปชำรุดจำนวนมากในตลาดปัจจุบัน รวมถึงชิป ARM แบบฝังตัวด้วย โดยกล่าวว่า "ชิป GD32 ก็เริ่มมีของปลอมวางขายอยู่มากมายเช่นกัน" ผมคิดว่ามันต้องมีอยู่จริง  
   
                           

3

ตรวจสอบสินค้าที่ได้รับการซ่อมแซมใหม่หรือสินค้าปลอมในการตรวจสอบชิป STM32/GD32 ที่ได้รับการซ่อมแซมใหม่หรือของปลอม วิธีการทั่วไปคือ เริ่มจากบัดกรีลงบนแผงวงจรพิมพ์ (หรือบนแท่นยึด) จากนั้นเปิดเครื่องเพื่อตรวจสอบว่าทำงานปกติหรือไม่ หากเครื่องร้อน มีกระแสไฟเกิน หรือแม้กระทั่งมีควันออกมา ควรระมัดระวัง  
จากนั้นอ่านข้อมูลชิป เช่น ความจุแฟลช ข้อมูล UID ไบต์ตัวเลือก เป็นต้น  
ขอแชร์บทความก่อนหน้านี้ที่นี่:คุณรู้จักรีจิสเตอร์เหล่านี้ของ STM32 หรือไม่?  
วิธีการอ่านโดยละเอียดมีดังนี้:
 

1. รีจิสเตอร์ความจุแฟลช


  1. โดยการอ่านทะเบียน  
ใน "คู่มืออ้างอิง" ของ STM32 จะมีรีจิสเตอร์ตัวหนึ่ง เช่น รีจิสเตอร์ข้อมูลขนาดแฟลช (โดยปกติจะอยู่ท้ายคู่มือ) และที่อยู่ฐานของรีจิสเตอร์นั้นก็เขียนไว้อย่างชัดเจน  
  เปรยชิปรุ่นต่างๆ อาจมีที่อยู่รีจิสเตอร์ที่แตกต่างกัน ตัวอย่างเช่น ที่อยู่ฐานของ F103 คือ 0x1FFFF7E0  
   
เป็นค่า 16 บิตที่เขียนไว้จากโรงงาน และสามารถอ่านได้โดยโปรแกรมเท่านั้น วิธีการอ่านนั้นง่ายมากและสามารถทำได้ดังนี้:
  uint16_t Flash_size;   Flash_size = *(uint16_t *)0x1FFFF7E0;  
  2. อ่านข้อมูลโดยตรงผ่านโปรแกรม STM32 ST-LINK Utility
 
เชื่อมต่อชิปผ่าน ST-Link แล้วอ่านข้อมูลโดยตรง คุณจะเห็นข้อมูลความจุ:
   
 

2 การลงทะเบียน UID


มีคนเคยถามผมว่า ผมสามารถเข้ารหัสผ่าน UID ของ STM32 ได้หรือไม่? แน่นอนว่าทำได้ครับ  
แต่เขาถามผมอีกคำถามหนึ่ง ผมไม่อยากอ่านทั้งหมด (96 บิต)สามารถอ่านข้อมูลในรีจิสเตอร์ได้เพียงบางส่วนเพื่อใช้เป็นตัวระบุหรือไม่? ข้อมูลที่อ่านได้จะถูกทำซ้ำหรือไม่?  
STM32 UID ตัวระบุเฉพาะใช้ได้กับ:
  • ใช้เป็นหมายเลขประจำเครื่อง
  • ใช้เป็นรหัสผ่าน เมื่อเขียนข้อมูลลงในหน่วยความจำแฟลช ตัวระบุเฉพาะนี้จะถูกใช้ร่วมกับอัลกอริธึมการเข้ารหัสและถอดรหัสของซอฟต์แวร์ เพื่อเพิ่มความปลอดภัยของข้อมูลในหน่วยความจำแฟลช
  • ใช้เพื่อเริ่มกระบวนการบูตด้วยกลไกความปลอดภัย

UID ของ STM32 มีทั้งหมด 96 บิต (32 x 3) เพื่อนๆ ครับ ผมสามารถอ่านเฉพาะบางส่วนของมันเพื่อใช้เป็นตัวระบุที่ไม่ซ้ำกันได้หรือไม่ครับ?  
ถ้าพูดกันตามตรงแล้ว คำถามนี้ตอบไม่ได้ แต่ถ้าไม่เคร่งครัดมากนัก ก็ยังพอรับได้ เพราะ UID นี้จะถูกกำหนดหมายเลขตามเวเฟอร์ ชุดการผลิต ฯลฯ ถ้าคุณซื้อจากชุดการผลิตเดียวกัน คุณจะพบว่าหมายเลขอาจเรียงติดกัน  
   
 
ฉันเคยอ่านบอร์ดที่ผลิตมาแล้วหลายบอร์ด (ไมโครคอนโทรลเลอร์ที่ซื้อมานั้นมาจากล็อตเดียวกัน) รหัส UID ของชิปเรียงลำดับกัน หากคุณสนใจ คุณสามารถลองดูได้  
ดังนั้นการตีความส่วนหนึ่งของ UID ว่าเป็นตัวระบุ ทำให้กล่าวได้ว่ามันไม่เข้มงวดนัก.
 
 
 

3. ลงทะเบียนที่อยู่ชดเชย


ยังมีผู้เริ่มต้นอีกหลายคนที่กำลังเรียนรู้ความรู้พื้นฐานอยู่ ตัวอย่างเช่น มีเพื่อนบางคนที่อยากเขียนโปรแกรมผ่านรีจิสเตอร์ด้วยตัวเอง แต่พวกเขาไม่รู้ว่าแอดเดรสฐานของรีจิสเตอร์คืออะไร และแอดเดรสออฟเซ็ตของรีจิสเตอร์คืออะไร  
  1.ที่อยู่ฐาน  
แต่ละส่วนประกอบภายในชิปและอุปกรณ์ภายในชิปจะมีที่อยู่ฐานที่สอดคล้องกัน ซึ่งกำหนดโดยผู้ผลิตและไม่สามารถแก้ไขได้ ดังแสดงด้านล่าง:
   
ในโปรแกรม คุณจะพบโค้ดที่ตรงกับข้อความข้างต้น:
   
  2. ที่อยู่ชดเชย  
ที่อยู่แบบออฟเซ็ตคือค่าออฟเซ็ตที่อ้างอิงจากที่อยู่ฐาน (โดยปกติจะเพิ่มขึ้น 4 ไบต์) เช่น ที่อยู่แบบออฟเซ็ตของตัวจับเวลา TIM:
   
ในทำนองเดียวกัน โค้ดที่เกี่ยวข้องในโปรแกรมจะใช้โครงสร้างเพื่อกำหนดค่าออฟเซ็ต:
   
สำหรับที่อยู่ฐานและที่อยู่ชดเชย ไม่ว่าจะเป็นไลบรารีอุปกรณ์ต่อพ่วงมาตรฐานหรือไลบรารี HAL ก็ล้วนใช้วิธีที่อยู่ฐาน + ที่อยู่ชดเชยดังที่แสดงไว้ข้างต้น  
ดังที่ได้กล่าวไว้หลายครั้งในบทความนี้แล้ว หากคุณต้องการเข้าใจหลักการทำงานของรีจิสเตอร์ หรือต้องการใช้งานรีจิสเตอร์ ควรศึกษาจากรูทีนใน "Standard Peripheral Library" จะดีที่สุด ไลบรารี HAL นั้นค่อนข้างซับซ้อนในการสรุป และไม่เหมาะสำหรับการศึกษาการทำงานของรีจิสเตอร์ในระดับต่ำสุด  
การตรวจสอบเพิ่มเติม เช่น การทดสอบการเขียนข้อมูล (RAM, Flash) การทดสอบฟังก์ชันพื้นฐานของอุปกรณ์ต่อพ่วงต่างๆ เป็นต้น  
   
                           

4

ช่องทางที่เป็นทางการที่แนะนำราคาที่คุณต้องจ่ายสำหรับการซื้อสินค้าปลอมหรือสินค้าลอกเลียนแบบนั้นสูงมาก หากพบปัญหาในช่วงเริ่มต้นของการพัฒนาสินค้าก็ไม่เป็นไร แต่คุณคงกลัวว่าปัญหาเหล่านั้นจะถูกค้นพบหลังจากผลิตในปริมาณมากแล้ว  
สิ่งที่น่ากลัวยิ่งกว่าคือสถานการณ์ที่สินค้าถูกจัดส่งในปริมาณมากและเกิดปัญหาในมือลูกค้าเนื่องจากชิปปลอม  
วันนี้ มีคนในกลุ่มสื่อสารกำลังพูดคุยถึงสถานการณ์การขายมันฝรั่งทอดกรอบคู่กับปลาเค็ม ฉันคิดว่า...คุณสามารถซื้อชิปมาทานเล่นได้ แต่ควรระมัดระวังเมื่อนำไปผลิตเป็นผลิตภัณฑ์  
ตัวอย่างเช่น ชิป STM32 ที่ขายใน Taobao ในราคามากกว่าสิบหยวนนั้น ยังเป็นสินค้านำเข้าและเป็นของแท้ คุณเชื่ออย่างนั้นหรือ?  
   
  สำหรับชิปที่ซื้อผ่านช่องทางปกติ ยังมีความเป็นไปได้อยู่บ้างที่ปัญหาจะเกิดจากตัวชิปเอง ไม่ต้องพูดถึงแพลตฟอร์มอย่าง Xianyu เลยก่อนหน้านี้ผมเคยเจอปัญหาเกี่ยวกับชิป STM32 ที่ซื้อมาจากตัวแทนจำหน่ายรายใหญ่รายหนึ่ง ฝ่ายสนับสนุนด้านเทคนิคของผู้ผลิต (FAE) ไปตรวจสอบที่บริษัทหลายครั้งแต่ก็หาต้นตอของปัญหาไม่เจอ สุดท้ายผมจึงนำชิปตัวเดิมจากโรงงานกลับไปตรวจสอบและพบว่าปัญหาอยู่ที่ตัวชิปเอง  
 

ดังนั้น อย่าซื้อชิปจาก Taobao หรือ Xianyu เพียงเพราะราคาถูก แนะนำให้ซื้อผ่านช่องทางที่เป็นทางการจะดีกว่า มิเช่นนั้นอาจเสียค่าใช้จ่ายมากกว่าเดิม


ข้อสงวนสิทธิ์: บทความนี้คัดลอกมาจาก "strongerHuang" ซึ่งสนับสนุนการคุ้มครองสิทธิ์ในทรัพย์สินทางปัญญา โปรดระบุแหล่งที่มาและผู้เขียนต้นฉบับเมื่อนำไปเผยแพร่ซ้ำ หากพบการละเมิดลิขสิทธิ์ โปรดติดต่อเราเพื่อลบออก


หมายเลขโทรศัพท์ของบริษัท: +86-0755-83044319
โทรสาร: +86-0755-83975897
อีเมล์: 1615456225@qq.com
QQ: 3518641314 ผู้จัดการหลี่

QQ: 332496225 ผู้จัดการชิว

ที่อยู่: ห้อง 809 อาคาร C อาคารเทคโนโลยีจ้านเทา เลขที่ 1079 ถนนหมินจือ เขตหลงหัวใหม่ เมืองเซินเจิ้น

whatsapp

สายด่วนบริการ

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950