คู่มือเครื่องมือและเทคนิคการดีบักของมืออาชีพสำหรับอุปกรณ์ IoT
Contributed By DigiKey's North American Editors
2021-03-23
การพัฒนาระบบสมองกลฝังตัวที่ซอฟต์แวร์และฮาร์ดแวร์ต้องทำงานร่วมกันเป็นอย่างดีได้กลายเป็นสิ่งที่ซับซ้อนและท้าทายเป็นอย่างยิ่ง แม้กระทั่งกับอุปกรณ์ Internet of Things (IoT) ที่ดูเหมือนง่ายที่สุด ง่ายมากเสียจนเมื่อมีสิ่งผิดปกติอย่างที่หลีกเลี่ยงไม่ได้ แม้ว่าเวลาในการดีบักมักใช้เวลาไม่นานนัก แต่บางครั้งอาจใช้เวลาเป็นสัปดาห์หรือเป็นเดือน ความล่าช้าเหล่านี้เพิ่มต้นทุนการพัฒนา ขัดขวางไม่ให้ผลิตภัณฑ์ออกสู่ตลาดตรงเวลา ชะลอกำหนดการผลิต และทำลายซัพพลายเชนและแผนธุรกิจ
วิธีที่ดีที่สุดในการลดเวลาที่ใช้ในการดีบักและการทำให้โครงการให้เป็นไปตามเป้าหมาย คือการใช้เครื่องมือดีบักฮาร์ดแวร์และซอฟต์แวร์ที่มีร่วมกันอย่างอิสระ เพื่อรับข้อมูลเชิงลึกเกี่ยวกับวิธีการทำงานของระบบและจุดที่ปัญหาเกิดขึ้น ดังนั้น สำหรับมืออาชีพและมือสมัครเล่น การมีเครื่องมือที่เหมาะสมจะช่วยให้งานสำเร็จอย่างรวดเร็วและถูกต้อง
บทความนี้จะกล่าวถึงเครื่องมือและซอฟต์แวร์การพัฒนาที่สามารถใช้ในการดีบักและวิเคราะห์ประสิทธิภาพของอุปกรณ์ IoT โดยจะใช้บอร์ดพัฒนาจาก STMicroelectronics เป็นตัวอย่างอุปกรณ์ IoT และใช้เครื่องมือและซอฟต์แวร์ของ ระบบ SEGGER Microcontroller เพื่อทำความเข้าใจและดีบักระบบ นอกจากนี้ยังจะกล่าวถึงเคล็ดลับและกลเม็ดต่าง ๆ เกี่ยวกับวิธีการลดเวลาดีบักและส่งมอบโครงการ IoT ตามกำหนดเวลา
อุปกรณ์ IoT ทั่วไปที่จะดีบัก
อุปกรณ์ IoT เป็นที่แพร่หลายในแทบทุกอุตสาหกรรม ตั้งแต่บ้านอัจฉริยะไปจนถึงการควบคุมตรวจสอบทางอุตสาหกรรม แม้จะมีการใช้งานที่หลากหลาย แต่ก็มีส่วนประกอบทั่วไปหลายอย่างที่อุปกรณ์ IoT มี ได้แก่:
- ไมโครโปรเซสเซอร์
- วิทยุสำหรับการเชื่อมต่อ
- เซ็นเซอร์
นักพัฒนาซอฟต์แวร์ไม่ต้องการปรับแต่งบอร์ดของตัวเองเพื่อค้นหาเทคนิคการดีบักหรือเพื่อทดสอบแอปพลิเคชันรหัสของพวกเขา นั้นใช้เวลานานเกินไป แต่จะทำงานบนบอร์ดพัฒนาที่มีต้นทุนต่ำอย่างชุด Discovery Kit B-L4S5I-IOT01A ของ STMicroelectronics สำหรับโหนด IoT ซึ่งมีเกือบทุกอย่างที่พบในอุปกรณ์ IoT ทั่วไป (รูปที่ 1)
รูปที่ 1: ชุด Discovery Kit B-L4S5I-IOT01A ของ STMicroelectronics สำหรับ IoT Node ที่มีส่วนประกอบทั้งหมดที่จำเป็นในอุปกรณ์ IoT (แหล่งรูปภาพ: STMicroelectronics)
บอร์ดประกอบด้วย STM32L4S5VIT6 ไมโครคอนโทรลเลอร์ Arm® Cortex®-M4 ทำงานที่ 120 เมกะเฮิรตซ์ (MHz) รองรับแฟลชสูงสุด 2 เมกะไบต์ (Mbytes) และ RAM 640 กิโลไบต์ (Kbytes) บอร์ดนี้ประกอบด้วย Wi-Fi และเซ็นเซอร์จำนวนมากที่สามารถใช้เพื่อสร้างอุปกรณ์ทดสอบ IoT จำลองได้อย่างรวดเร็ว ซึ่งเป็นสิ่งสำคัญสำหรับวัตถุประสงค์ของการใช้งานบอร์ดนี้
เครื่องมือฮาร์ดแวร์ดีบักระดับมืออาชีพ
บอร์ดพัฒนาส่วนใหญ่มาพร้อมกับอินเทอร์เฟซ JTAG/SWD ในตัว ดังนั้นนักพัฒนาจึงไม่จำเป็นต้องขอความช่วยเหลือจากโปรแกรมเมอร์ ซึ่งสามารถทำงานร่วมกับบอร์ดพัฒนาได้ทันทีตั้งแต่แกะกล่อง แม้ว่าสิ่งนี้จะดีสำหรับวัตถุประสงค์ทางการตลาด แต่ก็ไม่เหมาะกับงานวิศวกรรมที่แท้จริง: ดีบักเกอร์ในตัวมักจะถูกลดขนาดลงอย่างมากในแบบที่มีข้อจำกัด เช่น จำนวนจุดพักที่มีและอัตราบอดของอินเทอร์เฟซ สำหรับมือใหม่ ข้อจำกัดเหล่านี้อาจดูเหมือนไม่ใช่เรื่องใหญ่ แต่การมีจุดพักแบบไม่จำกัดจะช่วยหลีกเลี่ยงไม่ให้ต้องเปิดใช้งานและปิดใช้งานจุดพักอย่างต่อเนื่อง และต้องใช้อัตราบอดที่รวดเร็วสำหรับการติดตามแอปพลิเคชัน (นอกจากการติดตามในส่วนเครื่องมือซอฟต์แวร์)
มีเครื่องมือต่าง ๆ มากมายที่สามารถมอบประสบการณ์การดีบักแบบมืออาชีพได้ แต่เครื่องมือเหล่านี้เป็นเพียงแค่ครึ่งเดียวของโซลูชัน ซึ่งต้องได้รับการสนับสนุนจากซอฟต์แวร์ที่ดีด้วย ชุดเครื่องมือหนึ่งที่โดดเด่นทั้งในด้านฮาร์ดแวร์และซอฟต์แวร์คือ ชุดเครื่องมือซีรีส์ SEGGER J-Link ซีรีส์นี้มีเวอร์ชันดีบักเกอร์สำหรับนักพัฒนาเกือบทุกประเภท ตั้งแต่นักเรียนและมือสมัครเล่นไปจนถึงมืออาชีพที่ไม่ย่อท้อ
จากประสบการณ์ มีสองรุ่นที่แสดงให้เห็นว่ามีประโยชน์มากที่สุดสำหรับนักพัฒนาทั่วไป: J-Link Base และ J-Link Ultra+ (รูปที่ 2) ทั้งสองโมเดลมีรูปแบบที่เหมือนกัน แต่ J-Link Ultra+ ให้ความเร็วในการดาวน์โหลดไปยัง RAM ที่เร็วขึ้นให้แก่นักพัฒนา (3 Mbytes/s เทียบกับ 1.0 Mbyte/s) รวมทั้งความเร็วอินเทอร์เฟซ SWD ที่เร็วขึ้น (100 MHz มากกว่า 30 MHz ) ความเร็วที่เร็วขึ้นสร้างความแตกต่าง เมื่อนักพัฒนาต้องการติดตามแอปพลิเคชันของตนเพื่อรับข้อมูลเชิงลึกเกี่ยวกับประสิทธิภาพ, พฤติกรรม RTOS และการดีบักระบบของพวกเขา
รูปที่ 2: SEGGER J-Link Ultra+ ช่วยให้นักพัฒนาได้รับประสบการณ์ดีบักเกอร์ผ่านอินเทอร์เฟซเป้าหมาย 50 MHz (แหล่งรูปภาพ: SEGGER Microcontroller Systems)
ข้อดีของ J-Link และบอร์ดพัฒนา B-L4S5I-IOT01A คือสามารถเชื่อมต่อทั้งสองผ่านสาย Tag-ConnecTC2050-IC-NL และคลิปยึด TC2050-CLIP-3PACK ซึ่งช่วยให้ดีบักเกอร์เชื่อมต่อกับบอร์ดพัฒนาผ่าน "นีลส์แพด" (รูปที่ 3) อาจจำเป็นต้องปรับขั้วต่อ 20 พินของ J-Link เป็นขั้วต่อ 10 พินที่ต่อกับสาย TC-2050 ทางเลือกหนึ่งที่สามารถใช้ได้คือ อะแดปเตอร์เข็ม 8.06.04 J-Link แบบ 10 พิน
รูปที่ 3: บนบอร์ดพัฒนา B-L4S5I-IOT01A ชุดสายเคเบิล Tag-Connect สามารถเชื่อมต่อผ่านฟุตปริ้นของบอร์ดพีซีที่มีลักษณะแผ่นตะปู (ขวา) (แหล่งรูปภาพ: STMicroelectronics)
เมื่อนักพัฒนาดำเนินการด้านฮาร์ดแวร์สำเร็จแล้ว พวกเขาสามารถใช้เครื่องมือซอฟต์แวร์เพื่อวิเคราะห์และแก้ไขข้อบกพร่องของแอปพลิเคชันของตนได้
เครื่องมือซอฟต์แวร์ดีบักระดับมืออาชีพ
มีเครื่องมือซอฟต์แวร์ไม่มากนักที่ทำงานกับเครื่องมือ SEGGER J-Link ได้ดี ซึ่งน่าประหลาดใจที่ SEGGER ไม่มีให้ ต่อไปนี้จะกล่าวถึงเครื่องมือฟรี และดูว่านักพัฒนาสามารถใช้เครื่องมือแต่ละอย่างเพื่อดีบักซอฟต์แวร์ของตนได้อย่างไร
อันดับแรกคือ J-Scope J-Scope เป็นเครื่องมือคล้ายออสซิลโลสโคปที่แสดงค่าตัวแปรเมื่อเวลาผ่านไป นักพัฒนาสามารถตรวจสอบตัวแปรเดียวหรือตัวแปรหลายสิบตัวได้ อย่างไรก็ตาม แม้ว่าจะมีการตรวจสอบตัวแปรมากขึ้น แต่ก็สามารถเก็บตัวอย่างได้น้อยก่อนที่บัฟเฟอร์ตัวอย่างจะล้นและข้อมูลจะสูญหาย
ตัวแปรจะถูกเลือกโดยการจัดเตรียม J-Scope ด้วยไฟล์ elf ที่คอมไพเลอร์ส่งออก ซึ่งจะระบุตำแหน่งหน่วยความจำที่จะอ่าน จากนั้นนักพัฒนาสามารถกำหนดอัตราการสุ่มตัวอย่างและติดตามการเปลี่ยนแปลงของตัวแปรเมื่อเวลาผ่านไป ตัวอย่างง่าย ๆ สำหรับการติดตามสามตัวแปรสามารถเห็นได้ใน รูปที่ 4
รูปที่ 4: J-Scope สามารถใช้เพื่อตรวจสอบตัวแปรผ่าน J-Link โดยที่แอปพลิเคชันทำงานแบบเรียลไทม์ (แหล่งรูปภาพ: SEGGER Microcontroller Systems)
ต่อไปคือ Ozone Ozone เป็นอินเตอร์เฟสดีบักเกอร์และโปรแกรมวิเคราะห์ประสิทธิภาพ นักพัฒนาสามารถโหลดไฟล์ elf ของตนลงในเครื่องมือและดำเนินการดีบักระดับต้นทางได้ พวกเขาสามารถตั้งค่าจุดพักและอัปเดตรหัสของตนได้ คุณลักษณะที่มีประโยชน์อย่างยิ่งสำหรับนักพัฒนาคือ พวกเขาสามารถดำเนินการติดตามคำสั่ง (หากฮาร์ดแวร์ของพวกเขาสนับสนุน) และระบุส่วนประกอบและเรียกใช้รหัส C สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการตรวจสอบความครอบคลุมรหัสของการทดสอบ hardware-in-loop (HiL)
นอกจากนั้น Ozone ยังสามารถช่วยให้นักพัฒนาวิเคราะห์ประสิทธิภาพของระบบได้ (ภาพที่ 5) และแสดงภาพตัวแปรเมื่อเวลาผ่านไป ซึ่งทำให้มีความสามารถเหมือน J-Scope แต่ในลักษณะที่มีการบูรณาการมากขึ้น โดยสามารถใช้เพื่อตรวจสอบการใช้พลังงานและซิงโครไนซ์เหตุการณ์ทั้งหมดเหล่านี้ร่วมกันในที่เดียว
รูปที่ 5: Ozone สามารถใช้เพื่อติดตามตัวแปรผ่าน J-Link ด้วยแอปพลิเคชันทำงานแบบเรียลไทม์นอกเหนือจากการครอบคลุมของรหัสและการดีบักการรับรู้ RTOS (แหล่งรูปภาพ: SEGGER Microcontroller Systems)
เครื่องมือที่สามคือ SystemView SystemView ช่วยให้นักพัฒนาสามารถวิเคราะห์พฤติกรรมรันไทม์ของระบบ RTOS ได้ การสลับงานจะถูกบันทึกในบัฟเฟอร์การติดตาม จากนั้นรายงานไปยัง SystemView ผ่านดีบักเกอร์ (รูปที่ 5) SystemView จะแสดงข้อมูลนี้ในลักษณะที่ช่วยให้นักพัฒนาสามารถดูการสลับการทำงานและวัดประสิทธิภาพของระบบได้ นี่เป็นวิธีที่ยอดเยี่ยมในการแสดงภาพระบบและค้นหาจุดบกพร่องและปัญหาอื่น ๆ
รูปที่ 6: SystemView มีการเชื่อมโยงไปยัง RTOS ซึ่งช่วยให้นักพัฒนาสามารถวัดประสิทธิภาพของงานและเห็นภาพว่า RTOS ทำอะไรและเมื่อใด (แหล่งรูปภาพ: SEGGER Microcontroller Systems)
เคล็ดลับและกลเม็ดสำหรับการดีบักระบบสมองกลฝังตัว
การดีบักอุปกรณ์ IoT ต้องการให้นักพัฒนามีเครื่องมือที่เหมาะสมจากทั้งด้านฮาร์ดแวร์และซอฟต์แวร์ ทั้งสองส่วนจะต้องเข้าที่ หากนักพัฒนาจะลดเวลาที่ใช้ในการดีบักให้เหลือน้อยที่สุด การดีบักจะสำเร็จได้ จะต้องมี "เคล็ดลับและกลเม็ด" หลายประการที่นักพัฒนาควรคำนึงถึง เช่น:
- ใช้ดีบักเกอร์มืออาชีพที่เพิ่มอัตราบอดของอินเทอร์เฟซให้สูงสุด จำนวนข้อมูลที่เป็นประโยชน์ที่สามารถรับได้จากระบบจะขึ้นอยู่กับว่าสามารถรับข้อมูลได้เร็วเพียงใด ความเร็วที่ช้าลงส่งผลให้เซสชันการดีบักนานขึ้น
- ตั้งค่าซอฟต์แวร์ดีบักในช่วงต้นของวงจรการพัฒนา นักพัฒนาไม่ควรรอจนกว่าจะมีปัญหาในการตั้งค่าเครื่องมือดีบัก
- ใช้เครื่องมือติดตามตั้งแต่เริ่มต้นการพัฒนา ซึ่งจะช่วยให้นักพัฒนาสามารถตรวจสอบประสิทธิภาพของระบบและเข้าใจได้ทันทีว่าการเปลี่ยนแปลงซอฟต์แวร์ส่งผลกระทบอย่างไร
- ใช้ประโยชน์จากการติดตามคำสั่งหรือการสุ่มตัวอย่างตัวนับโปรแกรม เพื่อทำความเข้าใจความครอบคลุมของรหัสของระบบในระหว่างการทดสอบ ข้อบกพร่องจะมีอยู่ในแขนงและรหัสที่มีเงื่อนไขที่ยังไม่ได้ทดสอบ
- ใช้ประโยชน์จากโปรโตคอลการถ่ายโอนที่รวดเร็วเพื่อรับข้อมูลนอกชิป เช่น ไลบรารี Real-time Transfer (RTT)
นักพัฒนาที่ปฏิบัติตาม “เคล็ดลับและกลเม็ด” เหล่านี้จะพบว่าพวกเขาประหยัดเวลาและความเศร้าโศกได้ไม่น้อยเมื่อพยายามพัฒนาอุปกรณ์ IoT
สรุป
ซอฟต์แวร์อุปกรณ์ IoT นั้นซับซ้อน แต่นั่นไม่ได้หมายความว่านักพัฒนามืออาชีพหรือมือสมัครเล่นจะต้องติดขัดในการดีบักระบบอย่างต่อเนื่อง การใช้เครื่องมือและซอฟต์แวร์สำหรับการพัฒนาแบบมืออาชีพสามารถให้ข้อมูลเชิงลึกแก่นักพัฒนาที่พวกเขาต้องการ ไม่ใช่แค่การดีบักระบบ แต่เพื่อวิเคราะห์และปรับปรุงประสิทธิภาพของระบบ การลงทุนในเครื่องมือเหล่านี้ จะช่วยผู้ใช้สามารถลดเวลาที่ใช้ในการดีบักได้อย่างมาก และทำให้โครงการของพวกเขาสำเร็จและออกสู่ตลาดในช่วงเวลาที่เหมาะสม

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.