ข้ามไปยังเนื้อหา

STM32F103 vs GD32F103: ทางเลือกทดแทนแบบ Pin-Compatible

เปรียบเทียบ STM32F103 และ GD32F103 ในด้าน Core, Clock, Register Map, Peripherals และขั้นตอนการพอร์ต Firmware เพื่อการเปลี่ยนทดแทนอย่างสมบูรณ์

PinCompatible Engineering Team • • อัปเดตเมื่อ: 7/10/2569
STM32F103 vs GD32F103 comparison showing the LQFP48 pinout and firmware migration
STM32F103 vs GD32F103 comparison showing the LQFP48 pinout and firmware migration

STM32F103 vs GD32F103 คือการเปรียบเทียบที่สำคัญที่สุดในตลาดอุปกรณ์ทดแทนภายในประเทศ เนื่องจาก GD32F103 เป็นความพยายามที่เป็นที่รู้จักมากที่สุดในการผลิต STM32F103 ซ้ำ ซึ่งเป็นหนึ่งในไมโครคอนโทรลเลอร์ที่ใช้กันอย่างแพร่หลายที่สุดในยุคที่ผ่านมา โดยใช้พินเดียวกันและซอฟต์แวร์ส่วนใหญ่เหมือนกัน STM32F103 คือไมโครคอนโทรลเลอร์ Cortex-M3 สุดคลาสสิกของ STMicroelectronics ซึ่งเป็นชิ้นส่วนที่ขับเคลื่อนบอร์ดรุ่นต่างๆ ตั้งแต่ระบบควบคุมอุตสาหกรรมไปจนถึง Blue Pill อันโด่งดัง และ GD32F103 คือทางเลือกที่ใช้งานร่วมกันได้ทางพินจาก GigaDevice ซึ่งเป็นชิ้นส่วน Cortex-M3 ที่สร้างขึ้นเพื่อให้พอดีกับฟุตพริ้นท์ LQFP48 เดียวกันและรันเฟิร์มแวร์ส่วนใหญ่ได้เหมือนกัน การเปรียบเทียบนี้มีความสำคัญเนื่องจาก STM32F103 ขาดแคลน มีราคาสูงขึ้น และมีข้อจำกัดด้านการจัดหา และ GD32F103 คือคำตอบที่ใช้งานได้จริงสำหรับผู้ซื้อหรือวิศวกรที่ต้องการให้บอร์ดอยู่รอดได้โดยไม่ต้องออกแบบใหม่ คู่มือนี้จะเปรียบเทียบทั้งสองรุ่นในด้านแพ็คเกจ, คอร์, คล็อก, แผนผังหน่วยความจำ, รีจิสเตอร์, อุปกรณ์ต่อพ่วง และการย้ายเฟิร์มแวร์ โดยมีความซื่อสัตย์อย่างจงใจเกี่ยวกับความเข้ากันได้: GD32F103 สามารถใช้งานร่วมกันได้ทางพินและเข้ากันได้ทางซอฟต์แวร์เป็นส่วนใหญ่ โดยมีความแตกต่างที่บันทึกไว้ซึ่งจะปรากฏขึ้นเมื่อทำการทดสอบการเริ่มต้นระบบ และคู่มือนี้จะระบุว่าความแตกต่างเหล่านั้นอยู่ที่ใด

การเปรียบเทียบนี้ยังเป็นตัวอย่างการทำงานของการเปลี่ยนทดแทนที่เข้ากันได้ทั้งพินและโค้ดซึ่งเป็นพื้นฐานของแคตตาล็อกในไซต์นี้ และเป็นกรณีศึกษาที่สอนให้เข้าใจหมวดหมู่ทั้งหมด บอร์ดที่ใช้ STM32F103 ไม่จำเป็นต้องออกแบบใหม่เพื่อใช้ GD32F103 เนื่องจากฟุตพริ้นท์ LQFP48 ตรงกัน และเฟิร์มแวร์ไม่จำเป็นต้องเขียนใหม่ทั้งหมดตั้งแต่ต้น เนื่องจากคอร์และแผนผังรีจิสเตอร์ส่วนใหญ่ตรงกัน แต่การสลับเปลี่ยนก็ไม่ใช่การใส่แทนที่โดยไม่ต้องคิดเช่นกัน: การกำหนดค่าคล็อก, การเริ่มต้นใช้งานอุปกรณ์ต่อพ่วง และพฤติกรรมของอุปกรณ์ต่อพ่วงบางอย่างมีความแตกต่างกัน และความแตกต่างเหล่านี้คือสิ่งที่การพอร์ตและการเริ่มต้นระบบอย่างมีโครงสร้างต้องตรวจสอบ คู่มือนี้จะให้โครงสร้างนั้น และเป็นการเปรียบเทียบที่เน้นด้านวิศวกรรมอย่างตรงไปตรงมาที่นักออกแบบต้องการก่อนที่จะตัดสินใจใช้ชิ้นส่วนทางเลือกในสายการผลิต

STM32F103 vs GD32F103: ข้อกล่าวอ้างเรื่องความเข้ากันได้ (Compatibility)

การเปรียบเทียบ GD32F103 กับ STM32F103 คือการกล่าวอ้างถึงความเข้ากันได้ในสองระดับ และการอ่านข้อกล่าวอ้างอย่างแม่นยำคือขั้นตอนแรกของการเปรียบเทียบ ความเข้ากันได้ของพิน (Pin compatibility) คือระดับทางกายภาพ: GD32F103 มีจำหน่ายในแพ็คเกจ LQFP48 แบบเดียวกัน และวางฟังก์ชันเดียวกันไว้บนพินเดียวกับแพ็คเกจ LQFP48 ของ STM32F103 ดังนั้นบอร์ดที่ติดตั้ง STM32 จึงสามารถติดตั้ง GD32 ได้โดยไม่ต้องออกแบบเลย์เอาต์ใหม่ โดยที่ระบบไฟ, กราวด์, ออสซิลเลเตอร์, การรีเซ็ต, การบูต รวมถึงพิน GPIO และอุปกรณ์ต่อพ่วง (peripheral) นั้นตรงกัน ความเข้ากันได้ทางซอฟต์แวร์คือระดับที่สอง และเป็นข้อกล่าวอ้างที่มีเงื่อนไข: GD32F103 ใช้คอร์ Cortex-M3 และ register map ที่ออกแบบมาให้เข้ากันได้กับ STM32F103 เป็นส่วนใหญ่ ดังนั้นเฟิร์มแวร์จำนวนมากจึงสามารถคอมไพล์และรันได้หลังจากการย้ายระบบ (migration) แต่ความเข้ากันได้นั้นไม่สมบูรณ์ทั้งหมด และความแตกต่างจะอยู่ที่ clock tree, เรจิสเตอร์ของอุปกรณ์ต่อพ่วงบางตัว, ADC และรายละเอียดอื่นๆ ที่บันทึกการย้ายระบบและการทดสอบการเริ่มระบบ (bring-up test) จะเผยให้เห็น สรุปอย่างตรงไปตรงมาคือ GD32F103 มีความเข้ากันได้ทางพินและมีความเข้ากันได้ทางเรจิสเตอร์และซอฟต์แวร์เป็นส่วนใหญ่ และคู่มือนี้จะอ่านข้อกล่าวอ้างในระดับนั้นมากกว่าที่จะเป็นคำสัญญาว่าจะสามารถทดแทนกันได้อย่างสมบูรณ์แบบ (drop-in)

ชิ้นส่วนทั้งสองยังตรงกันในเรื่องแพ็คเกจหลักและความจุ ซึ่งเป็นข้อเท็จจริงที่ทำให้การเปรียบเทียบนี้ใช้งานได้จริง STM32F103C8T6 และ GD32F103C8T6 ประชันกันโดยตรง: ทั้งคู่เป็น Cortex-M3, ทั้งคู่เป็น LQFP48, ทั้งคู่มีแฟลชขนาด 64 กิโลไบต์ และ SRAM ขนาด 20 กิโลไบต์ของเกรด C8 และทั้งคู่รันบนสัญญาณนาฬิการะดับ 72 เมกะเฮิรตซ์ที่เป็นเอกลักษณ์ของตระกูลนี้ โดยที่ชิ้นส่วนของ GD32 มีขีดความสามารถที่เหนือกว่านั้นในบางเกรด ข้อมูลหลักที่ตรงกันนี้บอกผู้ซื้อว่า GD32F103 ถูกสร้างขึ้นเพื่อแทนที่ตำแหน่งของ STM32F103 อย่างเจาะจง และความแตกต่างจะอยู่ที่การนำไปใช้งานจริงมากกว่ารูปทรง ซึ่งเป็นเหตุผลว่าทำไมการเปรียบเทียบนี้จึงเป็นเรื่องราวของการย้ายระบบมากกว่าเรื่องราวของการออกแบบใหม่ ข้อกล่าวอ้างเรื่องความเข้ากันได้คือกรอบของการเปรียบเทียบทั้งหมด และส่วนที่เหลือของคู่มือนี้จะอ่านข้อกล่าวอ้างนั้นเทียบกับแพ็คเกจ, คอร์, เรจิสเตอร์ และพฤติกรรมการทำงาน

ความเข้ากันได้ที่ GD32F103 มอบให้จริง

GD32F103 มอบความเข้ากันได้ทางพินในฐานะการรับประกัน และความเข้ากันได้ทางซอฟต์แวร์ในฐานะข้อกล่าวอ้างที่มีเอกสารรับรองและเป็นจริงส่วนใหญ่ และความแตกต่างนี้คือการแถลงข้อเท็จจริงของตลาด ผู้ออกแบบที่ต้องการฟุตพริ้นท์ LQFP48 และฟังก์ชันของพินสามารถติดตั้ง GD32F103 และเชื่อมั่นในพินได้ เนื่องจากพินเอาต์ถูกออกแบบมาให้ตรงกันและดาต้าชีทระบุไว้เช่นนั้น ผู้ออกแบบที่ต้องการให้เฟิร์มแวร์ทำงานได้ทันทีจะอยู่ในสถานะที่ต่างออกไป: GD32F103 รันชุดคำสั่ง Cortex-M3 และมี register map ที่เข้ากันได้เป็นส่วนใหญ่ ดังนั้นเฟิร์มแวร์จึงคอมไพล์สำหรับ GD32 ด้วย CMSIS และการเริ่มต้นระบบ (startup) ของมันเอง และความแตกต่างจะปรากฏที่การกำหนดค่าสัญญาณนาฬิกาและการเริ่มต้นอุปกรณ์ต่อพ่วง ความเข้ากันได้ที่ GD32 มอบให้จริงจึงเป็นการผสมผสานกัน ระหว่างพินที่เป็นการรับประกัน และซอฟต์แวร์ที่เป็นข้อกล่าวอ้างว่าเข้ากันได้และต้องตรวจสอบ และการใช้งานชิ้นส่วนนี้ในระดับมืออาชีพจะต้องอ่านบันทึกการย้ายระบบ ปรับปรุงเฟิร์มแวร์ และทำการทดสอบการเริ่มระบบ แทนที่จะสมมติว่าไฟล์ไบนารีจาก STM32 จะทำงานได้โดยไม่มีการเปลี่ยนแปลง

Package, Pinout, และ Footprint: STM32F103 เทียบกับ GD32F103

Package และ Pinout เป็นชั้นแรกและเป็นส่วนที่แข็งแกร่งที่สุดของการเปรียบเทียบ และ GD32F103 นั้นตรงกับ STM32F103 ในส่วนที่ติดตั้งบนบอร์ด ทั้งสองส่วนมาใน Package แบบ LQFP48 ซึ่งเป็น Low-profile quad flat pack ขนาด 7 คูณ 7 มิลลิเมตร จำนวน 48 พินเหมือนกัน โดยมีระยะห่างระหว่างพิน (Pin pitch) และรูปทรงของ Pad เหมือนกัน ดังนั้นบอร์ดที่ออกแบบมาสำหรับ Footprint แบบ LQFP48 ของ STM32F103 จึงสามารถรองรับตัวถัง LQFP48 ของ GD32F103 ได้โดยไม่ต้องแก้ไข ฟังก์ชันของพินมีความตรงกันทั้งในส่วนของแหล่งจ่ายไฟ, กราวด์, VDDA และ VSSA, ออสซิลเลเตอร์และรีเซ็ต, พิน Boot, พินสำหรับ Debug แบบ SWD รวมถึง GPIO และฟังก์ชันทางเลือก (Alternate functions) ของอุปกรณ์ต่อพ่วง และการกำหนดตำแหน่งขาถูกออกแบบมาให้ตรงกัน Footprint คือข้อตกลงของการสลับเปลี่ยน และเป็นเหตุผลที่สำคัญที่สุดที่ทำให้ GD32F103 เป็นตัวแทนทดแทนมากกว่าการออกแบบใหม่ เพราะบอร์ด, การประกอบ, อุปกรณ์ทดสอบ และโปรแกรม Pick-and-place ทั้งหมดสามารถใช้งานต่อได้หลังการเปลี่ยนแปลง

Pinout ยังรวมถึงการพิจารณาฟังก์ชันทางเลือกอย่างระมัดระวัง เนื่องจากพินของไมโครคอนโทรลเลอร์รองรับหลายฟังก์ชันผ่าน Multiplexer และแผนผังฟังก์ชันทางเลือกคือจุดที่การกล่าวอ้างว่าพินเข้ากันได้อาจซ่อนความแตกต่างไว้ พอร์ต GPIO และ USART, SPI, I2C, ช่องสัญญาณไทม์เมอร์ และช่องสัญญาณ ADC ที่เฟิร์มแวร์กำหนดผ่านรีจิสเตอร์ฟังก์ชันทางเลือกจะต้องอยู่ที่พินเดียวกันบน GD32F103 เช่นเดียวกับบน STM32F103 ซึ่งเอกสารการย้ายระบบ (Migration note) และตารางใน Datasheet ได้ระบุการจับคู่นี้ไว้ ผู้ออกแบบที่ทำการพอร์ตเฟิร์มแวร์จะต้องตรวจสอบการวางตำแหน่งฟังก์ชันทางเลือกที่เฟิร์มแวร์ใช้ แทนที่จะสมมติว่าชื่อพินที่เหมือนกันหมายถึงฟังก์ชันที่เหมือนกันในทุก Multiplex และการตรวจสอบนี้เป็นส่วนหนึ่งของรายการตรวจสอบการพอร์ตระบบ Package และ Pinout คือจุดยึดทางกายภาพของการเปรียบเทียบ และการตรวจสอบฟังก์ชันทางเลือกคือรายละเอียดที่ทำให้จุดยึดนั้นถูกต้องแม่นยำ

การเปรียบเทียบ Footprint แบบ LQFP48 และการจับคู่พิน

การเปรียบเทียบ Footprint แบบ LQFP48 เคียงข้างกันทำให้เห็นว่าชิ้นส่วนทั้งสองอยู่บนบอร์ดเดียวกัน ทั้งคู่เป็น Quad flat pack แบบ 48 พินที่มีตัวถังขนาด 7 มิลลิเมตรและระยะห่างพิน 0.5 มิลลิเมตร โดยการวางตำแหน่งพิน 1 และรูปแบบของ Pad นั้นเหมือนกัน ดังนั้นกระบวนการ Reflow และการตรวจสอบจึงใช้สูตรเดียวกัน การจับคู่พินเป็นไปตามลำดับเดียวกัน ทั้งตำแหน่งไฟเลี้ยงและกราวด์ที่คงที่, พินออสซิลเลเตอร์, การรีเซ็ต NRST, พิน BOOT0, พิน SWD และ GPIO ที่จัดกลุ่มตามพอร์ตพร้อมฟังก์ชันทางเลือกที่กำหนดโดยระบบ Multiplexer เดียวกัน บอร์ดที่เคยติดตั้ง STM32F103 และบอร์ดที่ติดตั้ง GD32F103 ใช้สัญลักษณ์ Footprint เดียวกัน และส่วนประกอบทางกายภาพของการเปรียบเทียบนี้ถือว่าตรงกัน การจับคู่แบบ LQFP48 คือเหตุผลที่การสลับเปลี่ยนยังคงรักษาบอร์ดเดิมไว้ได้ และเป็นส่วนของการเปรียบเทียบที่ไม่ต้องการเงื่อนไขเพิ่มเติม ซึ่งเป็นข้อความที่ชัดเจนตามที่ Datasheet ระบุไว้

Core, Clock, and Performance: STM32F103 vs GD32F103

Core และประสิทธิภาพคือจุดที่ส่วนประกอบทั้งสองมีความเหมือนกันในหัวใจสำคัญแต่แตกต่างกันในการนำไปใช้งาน ทั้งคู่ใช้ core ARM Cortex-M3 ซึ่งเป็นสถาปัตยกรรม 32-bit แบบเดียวกัน พร้อมชุดคำสั่ง Thumb-2 เดียวกัน รวมถึงโครงสร้างพื้นฐานด้านการ debug และ interrupt ที่เหมือนกัน ดังนั้นพฤติกรรมในระดับคำสั่งของ firmware ที่ถูก compile แล้วจึงเหมือนกัน และใช้ toolchain กับ debugger ตัวเดียวกัน Clock คือจุดที่การนำไปใช้งานมีความแตกต่างกัน: STM32F103 ทำงานที่ความเร็วสูงสุด 72 megahertz และ GD32F103 ถูกสร้างมาเพื่อให้ทำงานในระดับ 72-megahertz เช่นเดียวกันโดยมี headroom ในการออกแบบตัวอุปกรณ์ และ clock tree ที่สร้าง system clock จาก oscillator ผ่าน PLL นั้นมีการกำหนดค่าเฉพาะของ GD32 เอง ดังนั้น code การเริ่มต้นระบบ clock ของ firmware จึงต้องได้รับการปรับให้เข้ากับ register ของ PLL ใน GD32 แทนที่จะคัดลอกมาโดยไม่มีการเปลี่ยนแปลง การเปรียบเทียบประสิทธิภาพจึงเป็นการใช้ core เดียวกันที่ clock ที่เข้ากันได้ โดยมีงานแรกในการ port คือการกำหนดค่า clock ซึ่งเป็นการอ่านค่าทางวิศวกรรมที่ตรงไปตรงมาของส่วนประกอบทั้งสอง

ตัว compiler และ toolchain ควรได้รับการบันทึกไว้เป็นพิเศษ เนื่องจากการย้ายระบบต้องผ่านเครื่องมือเหล่านี้ ทั้งสองส่วนประกอบได้รับการรองรับโดย ARM toolchain และ IDE กระแสหลัก และ GD32F103 มาพร้อมกับ CMSIS device header ของตัวเอง, startup file ของตัวเอง, system-clock file ของตัวเอง และ standard peripheral library ของตัวเอง ซึ่งวิศวกรต้องเพิ่มเข้าไปในโปรเจกต์แทนที่ firmware library ของ ST ตัว firmware ที่เขียนขึ้นโดยใช้ peripheral library ของ ST หรือ low-level drivers ของ ST จะต้องได้รับการปรับให้เข้ากับ library ของ GD32 และ firmware ที่เขียนในระดับ register จะต้องได้รับการตรวจสอบ register ต่อ register ซึ่งเป็นจุดที่คำกล่าวอ้างเรื่องความเข้ากันได้กลายเป็นภาระงาน การ port คือต้นทุนที่แท้จริงของการสลับเปลี่ยน และเป็นเหตุผลที่การเปรียบเทียบถือว่า GD32F103 เป็นส่วนประกอบที่เข้ากันได้เป็นส่วนใหญ่โดยต้องมีการย้ายระบบ ไม่ใช่การเปลี่ยนแทนที่ได้ทันทีแบบร้อยเปอร์เซ็นต์ Core คือสิ่งที่เหมือนกัน Clock คือความแตกต่าง และการย้ายระบบคือเนื้องานที่อยู่ตรงกลาง

ความแตกต่างของการกำหนดค่า clock ระหว่างทั้งสอง

การกำหนดค่า clock เป็นงานแรกและเป็นงานการ port ที่เป็นรูปธรรมที่สุด เพราะ STM32F103 และ GD32F103 สร้าง system clock ผ่านรูปแบบ PLL ที่คล้ายคลึงกันแต่ไม่เหมือนกันทั้งหมด Firmware ที่กำหนดค่า clock ของ ST, oscillator, PLL, system clock switch และ bus prescalers จะต้องถูก port ไปยัง clock-control registers ของ GD32 ซึ่งการวางตำแหน่ง bit และค่า reset มีความแตกต่างกันในรายละเอียด และการ port จะตั้งค่า system clock ตามที่ datasheet ของ GD32 และบันทึกการย้ายระบบระบุไว้ การกำหนดค่านี้ยังรวมถึง peripheral clocks, APB1 และ APB2 ซึ่ง prescalers จะจ่ายสัญญาณให้กับ timers, USARTs, SPI และ ADC และความผิดพลาดในการ port clock จะแสดงออกมาในรูปแบบของ baud rates ที่ผิดเพี้ยน, รอบเวลาของ timer ที่ไม่ถูกต้อง และการ sampling ของ ADC ที่ผิดพลาด นี่คือสาเหตุที่การตรวจสอบ clock เป็นสิ่งแรกที่ต้องทำในการตรวจสอบระบบ (bring-up) การ port clock เป็นงานที่ต้องทำ แต่เป็นงานที่มีขอบเขตชัดเจน เพราะสถาปัตยกรรมเป็น Cortex-M3 เหมือนกันและ clock tree มีรูปแบบเดียวกัน และบันทึกการย้ายระบบได้ระบุความแตกต่างไว้แล้ว Clock คือจุดที่ GD32F103 หยุดการเป็นอุปกรณ์ที่เปลี่ยนแทนได้ทันทีและเริ่มกลายเป็นทางเลือกที่ต้องผ่านการรับรอง และการ port คือหน้าแรกของการรับรองนั้น

Memory Map และความเข้ากันได้ของ Register: STM32F103 เทียบกับ GD32F103

Memory map และความเข้ากันได้ของ register คือเลเยอร์ซอฟต์แวร์ของการเปรียบเทียบ และเป็นตัวกำหนดว่า firmware จะสามารถพอร์ตได้มากน้อยเพียงใด Memory map นั้นมีความเข้ากันได้เป็นส่วนใหญ่: flash และ SRAM อยู่ในตำแหน่ง address เดียวกัน, peripheral registers ของบล็อกหลักอยู่ที่ base addresses เดียวกัน และส่วน system และ debug ของ Cortex-M3 เป็นไปตามมาตรฐาน ดังนั้น linker script และ memory layout จึงสามารถนำมาใช้ต่อได้ด้วยการกำหนดค่า device ใหม่ ความเข้ากันได้ของ register เป็นสิ่งที่ต้องพิจารณาเป็นกรณีไป: peripheral หลักๆ อย่าง GPIO, timers, USART, SPI และ I2C มี register อยู่ที่ address เดียวกันพร้อมฟิลด์ที่เหมือนกันเป็นส่วนใหญ่ ส่วนความแตกต่างจะอยู่ในรายละเอียดเชิงลึก เช่น control bits บางตัว, status bits บางตัว, ค่า reset และ register เฉพาะของ peripheral บางอย่างที่ GD32 ออกแบบในแบบของตัวเอง มุมมองระดับมืออาชีพคือ register map มีความเข้ากันได้สูงในระดับที่ driver มาตรฐานใช้งาน และ firmware ที่เขียนในระดับ driver สามารถพอร์ตได้ด้วยการปรับเปลี่ยน library ในขณะที่ firmware ที่เขียนในระดับ raw-register จำเป็นต้องมีการตรวจสอบ register ต่อ register

Register map ยังแสดงให้เห็นถึงส่วนที่อุปกรณ์ทั้งสองมีความแตกต่างกันอย่างแท้จริง และความแตกต่างเหล่านี้คือสิ่งที่การ migration และการ bring-up ต้องให้ความสำคัญ การกำหนดค่า ADC, การคำนวณ baud-rate ของ USART, การทำงานของ USB peripheral และพฤติกรรมของ timer บางอย่าง เป็นส่วนที่ทราบกันดีว่าการทำงานของ GD32F103 แตกต่างจาก STM32F103 และ firmware ที่ควบคุม peripheral เหล่านั้นโดยคาดหวังพฤติกรรมที่แม่นยำของ ST จะต้องได้รับการปรับปรุงและทดสอบแทนที่จะสมมติว่าเข้ากันได้ เอกสาร migration note และ peripheral library ของ GD32 ได้ระบุความแตกต่างเหล่านี้ไว้ และวิศวกรควรอ่านข้อมูลสำหรับ peripheral ที่ firmware ใช้งานจริงก่อนเริ่มการ bring-up สรุปคือ memory map เป็นรากฐานที่เข้ากันได้, register map เป็นส่วนกลางที่เข้ากันได้เป็นส่วนใหญ่ และความแตกต่างของ peripheral คือส่วนงานเฉพาะทาง ทั้งสามส่วนนี้คือเหตุผลที่ทำให้ GD32F103 เป็นทางเลือกที่แข็งแกร่งซึ่งมีการพอร์ตที่ระบุไว้ในเอกสารชัดเจน มากกว่าที่จะเป็นตัวแทนที่เปลี่ยนแทนกันได้ทันทีโดยไม่ต้องตรวจสอบ

ความแตกต่างของ Peripheral ระหว่าง STM32 และ GD32

ความแตกต่างของ peripheral คือรายละเอียดที่แท้จริงของการเปรียบเทียบ และการระบุความแตกต่างเหล่านี้คือวินัยที่ช่วยให้การ migration ไม่เกิดการสมมติเอาเองว่าเข้ากันได้ ADC เป็นส่วนที่ทราบกันดี เพราะการกำหนดค่า ADC ของ GD32F103, การทำ channel mapping และพฤติกรรมการสุ่มตัวอย่างมีความแตกต่างกันในลักษณะที่การทำ initialization ของ firmware และ loop การอ่านค่าต้องได้รับการปรับเปลี่ยนและตรวจสอบกับผลลัพธ์ของตัวแปลงจริง USART เป็นอีกส่วนหนึ่ง เนื่องจาก baud-rate register และ control bits บางตัวมีความแตกต่างกัน ดังนั้นการทำ serial initialization จึงต้องพอร์ตไปยัง library ของ GD32 และตรวจสอบ baud rate จริงผ่านสายสัญญาณ USB peripheral เป็นส่วนที่สามที่ชุมชนผู้ใช้งานรายงานว่าต้องให้ความสนใจ เพราะการทำงานของ USB ใน GD32F103 แตกต่างจาก ST และ USB stack ที่เขียนขึ้นสำหรับ peripheral ของ ST จำเป็นต้องมีการปรับปรุง ชุด timer เป็นส่วนที่สี่ของรายละเอียด เนื่องจากคุณสมบัติและพฤติกรรมของ timer บางอย่างแตกต่างกันในการออกแบบของ GD32 ความแตกต่างเหล่านี้ไม่ใช่กำแพงที่เป็นอุปสรรค แต่แต่ละส่วนคืองานที่ต้องทำ และวิศวกรที่พอร์ต firmware ซึ่งมีการใช้งาน ADC, USART, USB หรือ timers ควรวางแผนงานและตรวจสอบผลลัพธ์ในช่วง bring-up แทนที่จะสมมติว่าการพอร์ตนั้นไม่มีค่าใช้จ่ายหรือขั้นตอนเพิ่มเติม

Firmware Porting และ Bring-Up: STM32F103 เทียบกับ GD32F103

การ Porting firmware จาก STM32F103 ไปยัง GD32F103 เป็นการย้ายระบบที่มีโครงสร้างชัดเจน และการทดสอบ bring-up คือด่านสำคัญที่ใช้รับรองผล การ port ดำเนินการเป็นขั้นตอน: เพิ่ม device files ของ GD32 และ library เข้าไปในโปรเจกต์, port การตั้งค่า clock ไปยัง clock registers ของ GD32, ปรับการเริ่มต้นทำงานของ peripheral ให้เข้ากับ library ของ GD32 หรือ register fields ที่ผ่านการตรวจสอบแล้ว และ rebuild firmware สำหรับ device definition ของ GD32 จากนั้นการ bring-up จะรันขั้นตอนเดียวกันบนฮาร์ดแวร์: ยืนยันว่า toolchain สามารถ build และโปรแกรมลงเป้าหมายได้, ยืนยันการ boot และ clock โดยการวัด system clock และ peripheral clocks, ทดสอบการทำงานของแต่ละ peripheral ที่ firmware ใช้งาน ทั้ง GPIO, USART, SPI, timers, ADC และ USB พร้อมทั้งเปรียบเทียบพฤติกรรมและ timing กับ STM32F103 ตัวเดิมบนบอร์ดเดียวกัน การ bring-up คือตัวตัดสินของการสลับเปลี่ยนทั้งหมด เพราะมันยืนยันความเข้ากันได้ของ pin บนชิ้นส่วนที่ติดตั้งและความเข้ากันได้ของซอฟต์แวร์ในโค้ดที่รันอยู่ และเป็นขั้นตอนที่เปลี่ยนการย้ายระบบจากการกล่าวอ้างให้เป็นการรับรองคุณภาพ

การ bring-up ยังสร้างบันทึกที่จำเป็นสำหรับการสลับเปลี่ยน เพราะการเปลี่ยนแปลงในสายการผลิตจะถูกตัดสินด้วยหลักฐาน บันทึกค่าการวัด clock, ผลการ bring-up ของ peripheral, serial traffic, ค่า ADC, timer waveforms และ USB enumeration ควบคู่ไปกับค่าที่อ่านได้จาก STM32F103 พร้อมบันทึกความแตกต่างและการปรับแต่งที่การ port จำเป็นต้องใช้ บันทึกนี้คือหลักฐานที่กระบวนการ change-control ยอมรับและผู้ตรวจสอบคนถัดไปจะใช้งาน และเป็นเหตุผลที่ทำให้การสลับเป็น GD32F103 สามารถเป็นทางเลือกที่มีเอกสารรับรองและผ่านการตรวจสอบ มากกว่าจะเป็นเพียงการทดลองบนโต๊ะทำงาน การ bring-up ยังช่วยกำหนดระยะเวลาการ port อย่างตรงไปตรงมา: firmware ที่ใช้ GPIO, serial ports และ timers จะ port เสร็จในไม่กี่วัน ส่วน firmware ที่ขับเคลื่อน ADC, USB และฟีเจอร์ timer ที่ซับซ้อนจะใช้เวลานานกว่า โดยการประมาณการจะมาจาก peripheral map ที่อธิบายไว้ในส่วนก่อนหน้า การ port คือการทำงานที่มีขอบเขต และการ bring-up คือข้อพิสูจน์ของขอบเขตนั้น และทั้งสองอย่างรวมกันคือวิธีการที่รับรองคุณภาพของทางเลือกใหม่

วิธีดำเนินการย้ายระบบจาก STM32 ไปยัง GD32

การดำเนินการย้ายระบบจาก STM32F103 ไปยัง GD32F103 คือรายการตรวจสอบที่วิศวกรทุกคนปฏิบัติตามในลำดับเดียวกัน เก็บข้อมูลโปรเจกต์ต้นฉบับและ firmware พร้อมตรวจสอบว่ามีการใช้ peripherals และ driver layers ใดบ้าง เพราะขอบเขตการย้ายระบบจะถูกกำหนดโดย peripheral map มากกว่าหมายเลขพาร์ท เพิ่ม CMSIS ของ GD32, startup, system clock และ peripheral library สำหรับ GD32F103 แล้ว build โปรเจกต์เทียบกับ device definition ของ GD32 พร้อมแก้ไขข้อผิดพลาดของ compiler และ linker ที่เกิดจากการเปลี่ยนอุปกรณ์ Port การตั้งค่า clock, oscillator, PLL และ bus prescalers ไปยัง clock registers ของ GD32 และ port การเริ่มต้นทำงานของ peripheral ไปยัง library ของ GD32 โดยตรวจสอบแต่ละ field ที่ firmware สั่งการ Flash ตัว GD32 ลงบนบอร์ดที่เคยติดตั้ง STM32 และรันขั้นตอน bring-up ทั้งการ boot และ clock, peripherals, system test และการทดสอบ soak ตลอดช่วงอุณหภูมิ บันทึกผลลัพธ์ควบคู่ไปกับค่าของ STM32 และการสลับเปลี่ยนจะถือว่าผ่านการรับรองเมื่อ GD32 ทำงานได้ตรงกับ STM32 ภายใต้ค่าความคลาดเคลื่อนที่ผลิตภัณฑ์ยอมรับได้ รายการตรวจสอบนี้คือรูปแบบการดำเนินงานของการย้ายระบบ และเป็นรูปแบบเดียวกันไม่ว่า firmware จะมีขนาดเล็กหรือใหญ่

เมื่อใดควรเลือก STM32F103 หรือ GD32F103

การเลือกระหว่าง STM32F103 และ GD32F103 คือการตัดสินใจระหว่างความเข้ากันได้เทียบกับความพร้อมในการจัดหา ซึ่งสรุปเป็นกฎที่ชัดเจนได้ดังนี้ เลือก STM32F103 เมื่อเฟิร์มแวร์ต้องทำงานบนอุปกรณ์ดั้งเดิมโดยไม่มีการแก้ไข เมื่อการออกแบบขึ้นอยู่กับพฤติกรรมของอุปกรณ์ต่อพ่วงที่ GD32 ไม่ได้เลียนแบบมาอย่างแม่นยำ เมื่อต้องใช้เครื่องมือและไลบรารีของ ST หรือเมื่อการรับรองและการอนุมัติ (certification) ได้รับการรับรองตามชิ้นส่วนของ ST และอุปกรณ์ดั้งเดิมนั้นมีพร้อมจำหน่ายในราคาที่เหมาะสม เลือก GD32F103 เมื่อบอร์ดต้องการการสลับเปลี่ยนในแพ็คเกจ LQFP48 เมื่อชิ้นส่วนของ ST ขาดแคลนหรือมีราคาสูงขึ้น เมื่อการออกแบบสามารถใช้เวลาและแรงงานในการพอร์ต (porting) และการเริ่มระบบ (bring-up) ได้ และเมื่ออุปกรณ์ต่อพ่วงที่เฟิร์มแวร์ใช้เป็นรุ่นที่เข้ากันได้ เพราะ GD32 ช่วยให้ผลิตบอร์ดเดิมได้ด้วยซัพพลายที่ไม่ถูกจำกัดโดยความขาดแคลนของ ST กฎนี้คือกรวยของการเปรียบเทียบ: ความพร้อมในการจัดหาเป็นตัวตัดสินจุดเริ่ม แผนผังอุปกรณ์ต่อพ่วงเป็นตัวตัดสินต้นทุนการพอร์ต และการเริ่มระบบเป็นตัวตัดสินการรับรองคุณภาพ และการเลือกคือการรวมกันของทั้งสามปัจจัยมากกว่าจะเป็นเพียงหัวข้อเดียว

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

คู่มือการตัดสินใจอย่างรวดเร็วสำหรับ STM32 และ GD32

การตัดสินใจ STM32F103 GD32F103
แพ็คเกจและพินเอาต์ LQFP48, ฟุตพริ้นท์อ้างอิง LQFP48, พินเข้ากันได้
คอร์ Cortex-M3 Cortex-M3
หน่วยความจำ (เกรด C8) 64 KB flash, 20 KB SRAM 64 KB flash, 20 KB SRAM
ความเข้ากันได้ของซอฟต์แวร์ ตัวอ้างอิง เข้ากันได้เป็นส่วนใหญ่ พร้อมการพอร์ตที่มีเอกสารรองรับ
สัญญาณนาฬิกา การกำหนดค่า PLL ของ ST การกำหนดค่า PLL ของ GD, ต้องมีการพอร์ต
ความแตกต่างที่ทราบ ตัวอ้างอิง ADC, USART baud, USB, รายละเอียดไทม์เมอร์บางส่วน
ความพร้อมในการจัดหา ขาดแคลนและมีข้อจำกัดด้านราคาในบางครั้ง ซัพพลายในประเทศ, จุดแข็งของทางเลือก
การใช้งานที่ดีที่สุด ระบบนิเวศ ST เดิม, เฟิร์มแวร์ที่ไม่มีการแก้ไข การสลับเปลี่ยนโดยรักษาบอร์ดเดิมเมื่อ ST ขาดแคลน

ขั้นตอนการพอร์ตที่ใช้งานจริง: เฟิร์มแวร์ GPIO, Timer และ UART

ขั้นตอนการพอร์ตที่ใช้งานจริงจะช่วยให้การย้ายระบบมีความชัดเจนขึ้น โดยเฟิร์มแวร์ที่ใช้ GPIO, Timer สำหรับ PWM และ UART ที่ความเร็ว 115200 baud จะครอบคลุมพื้นฐานทั่วไป ขั้นตอนแรกคือ Toolchain: เพิ่ม Device Pack ของ GD32F103 และไลบรารีเฟิร์มแวร์ลงในโปรเจกต์ แทนที่ไฟล์ Startup และ Device Header ของ STM32 ด้วยของ GD32 จากนั้นทำการ Build เพื่อแก้ไขข้อผิดพลาดของ Compiler และ Linker ที่เกิดจากการเปลี่ยนอุปกรณ์ ขั้นตอนที่สองคือ Clock: พอร์ตการกำหนดค่า System-Clock ไปยังเรจิสเตอร์ควบคุม Clock ของ GD32 ทั้ง Oscillator, PLL และ Bus Prescalers เนื่องจากโครงสร้าง PLL ของ GD32 แตกต่างกันในส่วนของ Register Layout และตรวจสอบ System Clock ที่ได้ด้วย Oscilloscope บนพิน MCO หรือพิน Clock ขั้นตอนที่สามคือการกำหนดค่าเริ่มต้นของอุปกรณ์ต่อพ่วง (Peripheral Initialization): พอร์ต GPIO, Timer และ UART ไปยังไลบรารีของ GD32 โดย UART เป็นกรณีศึกษาที่สำคัญ เนื่องจากเรจิสเตอร์ Baud-rate ของ GD32 แตกต่างจาก ST ดังนั้นการกำหนดค่า 115200 จึงต้องคำนวณใหม่ตามสูตรของ GD32 แทนที่จะคัดลอกมา และการทดสอบผ่าน Terminal จะช่วยยืนยันความเร็ว Baud จริงที่เกิดขึ้น ขั้นตอนที่สี่คือ Firmware Loop: รันแอปพลิเคชันเดิมและยืนยันว่า GPIO สลับสถานะได้, PWM ขับเอาต์พุตได้ และ UART รับส่งข้อมูลได้ ซึ่งขั้นตอนจะเสร็จสมบูรณ์เมื่อแอปพลิเคชันทำงานบน GD32 ได้เหมือนกับบน STM32

ขั้นตอนการพอร์ตนี้ยังช่วยให้เห็นความแตกต่างของอุปกรณ์ต่อพ่วง โดย Timer และ UART มักเป็นจุดที่ต้องใช้ความพยายามในการพอร์ตมากที่สุด เรจิสเตอร์ Prescaler และ Period ของ Timer รวมถึงช่องสัญญาณ PWM ที่เฟิร์มแวร์ขับอยู่นั้น จะต้องถูกตรวจสอบกับ Register Map ของ GD32 เพราะ Timer ที่มีการจัดการ Prescaler ต่างกันจะสร้างความถี่ PWM ที่ผิดเพี้ยนไปจนกว่าจะมีการพอร์ตการกำหนดค่า เรจิสเตอร์ Baud ของ UART คือความแตกต่างที่พบบ่อยที่สุด และเฟิร์มแวร์ที่คัดลอกค่าของ ST มาโดยไม่พอร์ตจะทำให้ข้อมูลที่แสดงบน Terminal อ่านไม่รู้เรื่อง ซึ่งเป็นความล้มเหลวที่ชี้ให้เห็นถึงความจำเป็นในการพอร์ต ขั้นตอนการพอร์ตจะบันทึกทุกขั้นตอน ตั้งแต่การเปลี่ยน Toolchain, การพอร์ต Clock, การพอร์ตอุปกรณ์ต่อพ่วง และการทดสอบแอปพลิเคชัน ซึ่งบันทึกนี้คือหลักฐานที่จำเป็นสำหรับไฟล์การย้ายระบบ ตัวอย่างที่ใช้งานจริงนี้เป็นต้นแบบสำหรับการย้ายระบบทั้งหมด และเป็นโมเดลที่ส่วนของข้อผิดพลาดที่พบบ่อยจะนำไปใช้เปรียบเทียบต่อไป

Measuring the Clock and the Peripherals During Bring-Up

Measuring the clock and the peripherals during the bring-up คือการตรวจสอบความถูกต้องครึ่งหนึ่งของการย้ายระบบ (migration) ซึ่งดำเนินการบน oscilloscope และ terminal ให้วัด system clock เป็นอันดับแรก โดยการ probe ที่เอาต์พุต MCO หรือ crystal และการกำหนดค่า PLL เพื่อยืนยันว่า GD32 ทำงานที่ความถี่ที่ตั้งใจไว้ เนื่องจาก clock port เป็นส่วนแรกที่การ migration เข้าไปจัดการ และ clock ที่ผิดพลาดจะส่งผลกระทบไปยังทุก peripheral วัด UART ในลำดับถัดไป โดยเชื่อมต่อ terminal ที่ 115200 และส่ง test pattern ที่กำหนดไว้ แล้วยืนยันว่าตัวอักษรมาถึงโดยไม่มี framing errors เพราะข้อมูลที่อ่านไม่รู้เรื่องคือสัญญาณที่ชัดเจนของ baud-register mismatch วัด timer และ PWM โดยการ probe ที่พินเอาต์พุตและยืนยันความถี่รวมถึง duty cycle เทียบกับแบบที่วางไว้ และวัดการ toggle ของ GPIO, ค่าที่อ่านได้จาก ADC หาก firmware มีการใช้งาน และ interrupt latency ในส่วนที่แอปพลิเคชันต้องพึ่งพา ผลการวัดจะถูกบันทึกไว้ข้างๆ ค่าเดิมของ STM32 และการเปรียบเทียบนี้คือหลักฐานว่า GD32 ทำงานตรงกับต้นฉบับภายใต้ค่า tolerance ของผลิตภัณฑ์ ซึ่งเป็นด่านสำคัญที่การ migration ต้องผ่านไปให้ได้

การ bring-up ยังรวมถึงการทำ soak test ตามที่ datasheet และผลิตภัณฑ์กำหนด เพราะการ migration ที่ทำงานได้ดีบนโต๊ะทดลองอาจล้มเหลวที่สภาวะขอบเขต (margins) ให้รันแอปพลิเคชันครอบคลุมช่วงแรงดันไฟฟ้าและอุณหภูมิของผลิตภัณฑ์ ทั้งในช่วงแรงดันไฟต่ำที่ clock และ regulator ของ GD32 อาจมีพฤติกรรมต่างออกไป ช่วงอุณหภูมิสูงที่ ADC และ timing อาจเกิดการ drift และช่วงที่มีการเปลี่ยนแปลงของ load ที่พฤติกรรมของ firmware อาจเปลี่ยนไป แล้วเปรียบเทียบผลลัพธ์กับพฤติกรรมที่บันทึกไว้ของต้นฉบับ การ soak test จะเผยให้เห็นความแตกต่างที่เกิดขึ้นเป็นพักๆ ซึ่งการทดสอบบนโต๊ะปกติอาจมองข้ามไป และนี่คือเหตุผลที่การ migration ต้องได้รับการรับรองบนช่วงการทำงานจริงของผลิตภัณฑ์มากกว่าแค่บนสภาวะปกติของโต๊ะทดลอง การวัดผลและการ soak test ร่วมกันคือกระบวนการ bring-up และเป็นส่วนสำคัญของการ migration ที่เปลี่ยน firmware ที่พอร์ตมาจากการเป็นเพียงคำกล่าวอ้างให้กลายเป็นการทดแทนที่ได้รับการรับรอง ซึ่งเป็นระเบียบวินัยที่คู่มือการเปรียบเทียบนี้ได้นำมาใช้โดยตลอด

ความล้มเหลวในการย้ายระบบที่พบบ่อยและแนวทางการแก้ไข

การย้ายระบบจาก STM32F103 ไปยัง GD32F103 มักพบความล้มเหลวในรูปแบบเดิมๆ และการแก้ไขนั้นทำได้รวดเร็วเนื่องจากทราบสาเหตุอยู่แล้ว หากบอร์ดไม่ยอมบูต สาเหตุมักมาจากขั้นตอนการเริ่มต้นระบบหรือสัญญาณนาฬิกา เช่น ไม่ได้เพิ่มไฟล์ startup ของ GD32, ตารางเวกเตอร์ไม่ชี้ไปยังตำแหน่งที่ถูกต้อง หรือไม่ได้พอร์ตการตั้งค่า PLL ซึ่งการแก้ไขคือการทำขั้นตอน toolchain ให้ครบถ้วนและวัดสัญญาณนาฬิกาก่อนเริ่มใช้งานอุปกรณ์ต่อพ่วง หาก UART แสดงผลผิดเพี้ยน สาเหตุมาจากรีจิสเตอร์ baud ที่คัดลอกค่าของ ST มาใส่ในรีจิสเตอร์ของ GD32 ซึ่งมีการคำนวณที่แตกต่างกัน การแก้ไขคือการใช้สูตรคำนวณ baud ของ GD32 และทดสอบผ่านเทอร์มินัลโดยตรง หาก PWM หรือไทเมอร์ทำงานด้วยความถี่ที่ผิดพลาด สาเหตุมาจาก prescaler ของไทเมอร์หรือโครงสร้าง clock tree ที่อยู่เบื้องหลัง การแก้ไขคือการพอร์ตการตั้งค่าและวัดสัญญาณเอาต์พุต หาก ADC อ่านค่าผิดพลาด สาเหตุมาจากการตั้งค่า ADC หรือแผนผังช่องสัญญาณ การแก้ไขคือการพอร์ตการเริ่มต้นระบบ ADC และการทำ calibration เทียบกับค่าอ้างอิงที่ทราบผล หาก USB ไม่สามารถระบุตัวตนได้ (enumerate) สาเหตุมาจากส่วนควบคุม USB ของ GD32 มีการทำงานที่ต่างจาก ST การแก้ไขคือการใช้ตัวปรับแก้หรือการแก้ไขวงจรตามที่บันทึกการย้ายระบบระบุไว้ ซึ่งถือเป็นส่วนที่ยากที่สุดในการสลับชิป ความล้มเหลวแต่ละอย่างมีลักษณะเฉพาะและวิธีแก้ไข และการแก้ไขเหล่านี้คือเหตุผลที่การย้ายระบบที่มีการวางแผนไว้จะล้มเหลวน้อยกว่าการคาดเดาเอาเอง

การแก้ไขยังต้องอาศัยระเบียบวินัยเพื่อให้การย้ายระบบดำเนินไปตามแผน ซึ่งระเบียบวินัยนั้นคือลำดับขั้นตอนการพอร์ต แก้ไข toolchain ก่อนสัญญาณนาฬิกา แก้ไขสัญญาณนาฬิกาก่อนอุปกรณ์ต่อพ่วง และแก้ไขอุปกรณ์ต่อพ่วงก่อนแอปพลิเคชัน เพราะสัญญาณนาฬิกาที่ผิดพลาดจะทำให้อุปกรณ์ต่อพ่วงทุกตัวผิดพลาด และอุปกรณ์ต่อพ่วงที่ผิดพลาดจะทำให้แอปพลิเคชันผิดพลาด ลำดับนี้จะช่วยจำกัดขอบเขตของความล้มเหลวเมื่อมันปรากฏขึ้น ให้ทดสอบแต่ละขั้นตอนก่อนเริ่มขั้นตอนถัดไป ทั้งการคอมไพล์ การบูต สัญญาณนาฬิกา อุปกรณ์ต่อพ่วง และแอปพลิเคชัน พร้อมบันทึกผลลัพธ์แต่ละอย่าง เพื่อให้ความล้มเหลวในแอปพลิเคชันสามารถสืบย้อนกลับไปยังอุปกรณ์ต่อพ่วงที่ยังไม่ได้รับการตรวจสอบ ระเบียบวินัยนี้เป็นลำดับเดียวกับที่ใช้ในขั้นตอนการปฏิบัติงานจริง และเป็นลำดับที่เปลี่ยนการย้ายระบบจากเหตุการณ์ที่น่าประหลาดใจให้กลายเป็นลำดับของขั้นตอนที่ได้รับการยืนยันแล้ว ความล้มเหลวที่พบบ่อยและแนวทางการแก้ไขเหล่านี้ช่วยให้วิธีการย้ายระบบสมบูรณ์ และเป็นส่วนเสริมภาคปฏิบัติให้กับขั้นตอนการพอร์ต ซึ่งเป็นส่วนสำคัญของการทำงานในการย้ายระบบในคู่มือฉบับนี้

อินเทอร์เฟซ Boot และ Debug ระหว่างการ Migration

อินเทอร์เฟซ boot และ debug คือรายละเอียดที่เงียบเชียบของการ migration และควรค่าแก่การกล่าวถึงในส่วนนี้ เพราะบอร์ดที่โปรแกรมและ boot ผิดพลาดจะทำให้การพอร์ตหยุดชะงักก่อนที่จะเริ่มต้นเสียอีก พิน BOOT0 และการกำหนดค่า boot-mode ของ GD32F103 จะต้องถูกตรวจสอบเทียบกับ STM32 เนื่องจากแหล่งที่มาของ boot ไม่ว่าจะเป็น flash, system memory หรือ SRAM จะถูกเลือกโดยพิน boot และบอร์ดที่เคยยึดตามการตั้งค่า boot strapping ของ STM32 จะต้องคงค่าของ GD32 ไว้ในลักษณะเดียวกัน มิฉะนั้นชิปจะ boot เข้าสู่หน่วยความจำที่ผิดพลาดและแอปพลิเคชันจะไม่ทำงาน อินเทอร์เฟซ debug แบบ SWD คือรายละเอียดประการที่สอง เนื่องจากการ migration จะโปรแกรม GD32 ผ่านพิน SWD เดียวกัน และตัว debugger รวมถึง device pack จะต้องจดจำ ID และ debug registers ของ GD32 ได้ ซึ่งเป็นขั้นตอนใน toolchain ที่บทแนะนำการใช้งานได้ครอบคลุมไว้แล้ว จังหวะเวลาของ reset และ power-on รวมถึงพิน NRST และการเพิ่มขึ้นของแหล่งจ่ายไฟ (supply ramp) ที่ datasheet อธิบายไว้ คือประการที่สาม เพราะบอร์ดที่มี reset ที่ไม่เสถียรหรือ supply ramp ที่ช้าอาจไม่สามารถเริ่มต้นทำงานได้อย่างน่าเชื่อถือบนซิลิคอนตัวใหม่ การตรวจสอบ boot และ debug คือการเตรียมความพร้อมก่อนการ migration และเป็นการตรวจสอบที่ลำดับการ bring-up บอร์ดต้องทำเสมอ ก่อนที่จะไว้วางใจให้อุปกรณ์ต่อพ่วงทำงาน

การอ่านบันทึกการ migration ของ GD32 จะช่วยเติมเต็มรายละเอียดให้ครบถ้วน เนื่องจากเอกสารของผู้ผลิตเองจะระบุถึงความแตกต่างที่การพอร์ตต้องปฏิบัติตาม บันทึกการ migration จะรายการความแตกต่างของ register, ความแตกต่างของ clock, ความแตกต่างของอุปกรณ์ต่อพ่วง และการเปลี่ยนแปลงของ driver โดยวิศวกรจะอ่านข้อมูลสำหรับอุปกรณ์ต่อพ่วงที่ firmware ใช้งาน พร้อมทำเครื่องหมายในส่วนที่สำคัญต่อโปรเจกต์นี้ และรายการที่ทำเครื่องหมายไว้นั้นคือขอบเขตการพอร์ตที่บทแนะนำจะดำเนินการ บันทึกการ migration ยังระบุถึงการตั้งค่า toolchain และ library, device pack, startup และโปรเจกต์ตัวอย่าง ซึ่งวิศวกรควรปฏิบัติตามแทนที่จะปรับเปลี่ยนโปรเจกต์ของ STM32 ใหม่ทั้งหมดตั้งแต่ต้น เพราะแนวทางของผู้ผลิตเองนั้นรวดเร็วและปลอดภัยที่สุด เรื่องของ boot, debug และบันทึกการ migration คือการเตรียมการสำหรับการสลับชิป และเป็นเหตุผลที่การพอร์ตซึ่งเริ่มจากเอกสารของผู้ผลิตจะล้มเหลวน้อยกว่าการพอร์ตที่เริ่มจากการคาดเดา การเตรียมการนี้ทำให้วิธีการ migration สมบูรณ์ และเป็นการเตรียมความพร้อมก่อนเริ่มงานที่ทั้งบทแนะนำการใช้งานและส่วนของข้อผิดพลาดที่พบบ่อยต่างยึดถือเป็นพื้นฐาน

มุมมองด้านการทดแทนและการจัดหา: STM32F103 เทียบกับ GD32F103

มุมมองด้านการทดแทนของการเปรียบเทียบนี้คือการจัดหาที่เปิดโอกาสให้มีการสลับเปลี่ยนโดยยังคงรักษาแผงวงจรเดิมไว้ และเป็นส่วนที่ใช้งานได้จริงสำหรับผู้ซื้อ การออกแบบที่รับรองให้ GD32F103 เป็นแหล่งที่มาคือการออกแบบที่แผงวงจรไม่ต้องขึ้นอยู่กับความพร้อมของ STM32F103 อีกต่อไป และสามารถรัน GD32 เป็นชิ้นส่วนหลักสำหรับการผลิตจำนวนมาก เป็นแหล่งที่มาสำรอง หรือเป็นแผนสำรอง โดยสามารถสลับไปมาได้บนแผงวงจร LQFP48 เดียวกันและโปรแกรมทดสอบเดียวกันในกรณีที่เฟิร์มแวร์รองรับทั้งคู่ การรับรอง GD32F103 จะดำเนินการผ่านการพอร์ตและการเริ่มต้นระบบตามที่คู่มือนี้ได้วางแนวทางไว้ และผลลัพธ์ที่ได้คือทางเลือกที่มีเอกสารรับรองซึ่งทีมจัดซื้อสามารถนำไปใช้ สั่งซื้อ และสำรองคลังสินค้าได้ การจัดหายังครอบคลุมถึงขอบเขตที่กว้างขึ้น เนื่องจากระบบนิเวศที่เข้ากันได้กับ STM32 นั้นรวมถึง AT32 และตระกูลอื่นๆ ในประเทศที่ทำหน้าที่เดียวกัน และผู้ซื้อที่รับรองทางเลือกหนึ่งแล้วสามารถประเมินทางเลือกถัดไปด้วยวิธีการเดียวกัน GD32F103 คือกรณีตัวอย่างที่สำคัญ และมุมมองด้านการจัดหาจะเปลี่ยนความเข้ากันได้นี้ให้กลายเป็นสินทรัพย์ในห่วงโซ่อุปทาน

การเปรียบเทียบนี้จบลงด้วยข้อความที่ตรงไปตรงมาซึ่งทั้งตลาดและคู่มือนี้ต่างยืนยัน GD32F103 เป็นทางเลือกที่เข้ากันได้ทางพินและเข้ากันได้ทางซอฟต์แวร์เป็นส่วนใหญ่กับ STM32F103 มันคือการทดแทนที่แท้จริงบนแผงวงจร LQFP48 และไม่ใช่การเปลี่ยนแทนแบบเงียบๆ โดยไม่ต้องแก้ไขอะไรเลย เพราะระบบสัญญาณนาฬิกา รายละเอียดของรีจิสเตอร์ ADC, USART, USB และไทม์เมอร์ มีความแตกต่างที่ต้องผ่านการรับรองจากการย้ายระบบและการเริ่มต้นระบบ วิศวกรที่อ่านการเปรียบเทียบ STM32F103 เทียบกับ GD32F103 ในลักษณะนี้จะทราบว่าส่วนใดที่ชิ้นส่วนเหมือนกัน ส่วนใดที่ต่างกัน และวิธีพอร์ตและพิสูจน์การสลับเปลี่ยน และความรู้นั้นคือสิ่งที่เปลี่ยน MCU ที่ขาดแคลนที่สุดในตลาดให้กลายเป็นแผงวงจรที่ยังคงส่งมอบได้ต่อไป การเปรียบเทียบนี้คือแผนที่การทำงานระหว่างชิ้นส่วนต้นฉบับและทางเลือก และแผนที่นี้คือเหตุผลที่การออกแบบที่เคยใช้ STM32F103 ไม่จำเป็นต้องหยุดชะงักเมื่อ STM32F103 ขาดตลาด

ขั้นตอนถัดไป

ระบุรายละเอียดโปรเจกต์โรงแรมของคุณกับวิศวกรของเรา

ส่งจำนวนห้อง ประเภทเพดาน และโปรโตคอลที่ต้องการ เราจะส่งแผนการทำตัวอย่างและใบเสนอราคากลับภายใน 24 ชั่วโมงทำการ

  • ก้าวจากคำแนะนำทั่วไปไปสู่การหารือเกี่ยวกับผลิตภัณฑ์หรือการใช้งาน
  • ใช้ RFQ เมื่อข้อมูลราคา แบบวาด MOQ หรือกำหนดการเปิดตัวต้องการความชัดเจนเป็นระบบ
  • คงช่องทางติดต่อโดยตรงให้เห็นสำหรับการขอคำชี้แจงอย่างรวดเร็วและการส่งต่อข้อมูล
พร้อมส่ง RFQ

แชร์ความต้องการผลิตภัณฑ์ของคุณและรับขั้นตอนถัดไปที่ปฏิบัติได้จริง

ส่งแบบวาด ปริมาณเป้าหมาย และไทม์ไลน์ ทีมวิศวกรรมการขายของเราจะตอบกลับภายใน 24 ชั่วโมงทำการ พร้อมขั้นตอนถัดไปที่ปฏิบัติได้จริง ใบเสนอราคา หรือแผนการทำตัวอย่าง

ส่งคำสอบถามด่วน

แจ้งหมายเลขสินค้า จำนวน และกำหนดเวลา เราตอบกลับภายใน 24 ชั่วโมงทำการ

รายการหมายเลขสินค้าและจำนวนที่ชัดเจนช่วยให้ทีมตอบกลับภายในหนึ่งวันทำการพร้อมรุ่นทางเลือกที่ตรงกัน