สายด่วนบริการ
เมื่อเร็วๆ นี้ 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 ถนนหมินจือ เขตหลงหัวใหม่ เมืองเซินเจิ้น




粤公网安备44030002007346号