คู่มือเครื่องมือและเทคนิคการดีบักของมืออาชีพสำหรับอุปกรณ์ IoT

By Jacob Beningo

Contributed By DigiKey's North American Editors

การพัฒนาระบบสมองกลฝังตัวที่ซอฟต์แวร์และฮาร์ดแวร์ต้องทำงานร่วมกันเป็นอย่างดีได้กลายเป็นสิ่งที่ซับซ้อนและท้าทายเป็นอย่างยิ่ง แม้กระทั่งกับอุปกรณ์ Internet of Things (IoT) ที่ดูเหมือนง่ายที่สุด ง่ายมากเสียจนเมื่อมีสิ่งผิดปกติอย่างที่หลีกเลี่ยงไม่ได้ แม้ว่าเวลาในการดีบักมักใช้เวลาไม่นานนัก แต่บางครั้งอาจใช้เวลาเป็นสัปดาห์หรือเป็นเดือน ความล่าช้าเหล่านี้เพิ่มต้นทุนการพัฒนา ขัดขวางไม่ให้ผลิตภัณฑ์ออกสู่ตลาดตรงเวลา ชะลอกำหนดการผลิต และทำลายซัพพลายเชนและแผนธุรกิจ

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

บทความนี้จะกล่าวถึงเครื่องมือและซอฟต์แวร์การพัฒนาที่สามารถใช้ในการดีบักและวิเคราะห์ประสิทธิภาพของอุปกรณ์ IoT โดยจะใช้บอร์ดพัฒนาจาก STMicroelectronics เป็นตัวอย่างอุปกรณ์ IoT และใช้เครื่องมือและซอฟต์แวร์ของ ระบบ SEGGER Microcontroller เพื่อทำความเข้าใจและดีบักระบบ นอกจากนี้ยังจะกล่าวถึงเคล็ดลับและกลเม็ดต่าง ๆ เกี่ยวกับวิธีการลดเวลาดีบักและส่งมอบโครงการ IoT ตามกำหนดเวลา

อุปกรณ์ IoT ทั่วไปที่จะดีบัก

อุปกรณ์ IoT เป็นที่แพร่หลายในแทบทุกอุตสาหกรรม ตั้งแต่บ้านอัจฉริยะไปจนถึงการควบคุมตรวจสอบทางอุตสาหกรรม แม้จะมีการใช้งานที่หลากหลาย แต่ก็มีส่วนประกอบทั่วไปหลายอย่างที่อุปกรณ์ IoT มี ได้แก่:

  • ไมโครโปรเซสเซอร์
  • วิทยุสำหรับการเชื่อมต่อ
  • เซ็นเซอร์

นักพัฒนาซอฟต์แวร์ไม่ต้องการปรับแต่งบอร์ดของตัวเองเพื่อค้นหาเทคนิคการดีบักหรือเพื่อทดสอบแอปพลิเคชันรหัสของพวกเขา นั้นใช้เวลานานเกินไป แต่จะทำงานบนบอร์ดพัฒนาที่มีต้นทุนต่ำอย่างชุด Discovery Kit B-L4S5I-IOT01A ของ STMicroelectronics สำหรับโหนด IoT ซึ่งมีเกือบทุกอย่างที่พบในอุปกรณ์ IoT ทั่วไป (รูปที่ 1)

แผนภาพชุด Discovery Kit B-L4S5I-IOT01A ของ STMicroelectronics รูปที่ 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 และการดีบักระบบของพวกเขา

ภาพของ SEGGER J-Link Ultra+ รูปที่ 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 พิน

ภาพของบอร์ดพัฒนา STMicroelectronics B-L4S5I-IOT01Aรูปที่ 3: บนบอร์ดพัฒนา B-L4S5I-IOT01A ชุดสายเคเบิล Tag-Connect สามารถเชื่อมต่อผ่านฟุตปริ้นของบอร์ดพีซีที่มีลักษณะแผ่นตะปู (ขวา) (แหล่งรูปภาพ: STMicroelectronics)

เมื่อนักพัฒนาดำเนินการด้านฮาร์ดแวร์สำเร็จแล้ว พวกเขาสามารถใช้เครื่องมือซอฟต์แวร์เพื่อวิเคราะห์และแก้ไขข้อบกพร่องของแอปพลิเคชันของตนได้

เครื่องมือซอฟต์แวร์ดีบักระดับมืออาชีพ

มีเครื่องมือซอฟต์แวร์ไม่มากนักที่ทำงานกับเครื่องมือ SEGGER J-Link ได้ดี ซึ่งน่าประหลาดใจที่ SEGGER ไม่มีให้ ต่อไปนี้จะกล่าวถึงเครื่องมือฟรี และดูว่านักพัฒนาสามารถใช้เครื่องมือแต่ละอย่างเพื่อดีบักซอฟต์แวร์ของตนได้อย่างไร

อันดับแรกคือ J-Scope J-Scope เป็นเครื่องมือคล้ายออสซิลโลสโคปที่แสดงค่าตัวแปรเมื่อเวลาผ่านไป นักพัฒนาสามารถตรวจสอบตัวแปรเดียวหรือตัวแปรหลายสิบตัวได้ อย่างไรก็ตาม แม้ว่าจะมีการตรวจสอบตัวแปรมากขึ้น แต่ก็สามารถเก็บตัวอย่างได้น้อยก่อนที่บัฟเฟอร์ตัวอย่างจะล้นและข้อมูลจะสูญหาย

ตัวแปรจะถูกเลือกโดยการจัดเตรียม J-Scope ด้วยไฟล์ elf ที่คอมไพเลอร์ส่งออก ซึ่งจะระบุตำแหน่งหน่วยความจำที่จะอ่าน จากนั้นนักพัฒนาสามารถกำหนดอัตราการสุ่มตัวอย่างและติดตามการเปลี่ยนแปลงของตัวแปรเมื่อเวลาผ่านไป ตัวอย่างง่าย ๆ สำหรับการติดตามสามตัวแปรสามารถเห็นได้ใน รูปที่ 4

รูปภาพของ SEGGER J-Scope สามารถใช้ในการตรวจสอบตัวแปรได้ รูปที่ 4: J-Scope สามารถใช้เพื่อตรวจสอบตัวแปรผ่าน J-Link โดยที่แอปพลิเคชันทำงานแบบเรียลไทม์ (แหล่งรูปภาพ: SEGGER Microcontroller Systems)

ต่อไปคือ Ozone Ozone เป็นอินเตอร์เฟสดีบักเกอร์และโปรแกรมวิเคราะห์ประสิทธิภาพ นักพัฒนาสามารถโหลดไฟล์ elf ของตนลงในเครื่องมือและดำเนินการดีบักระดับต้นทางได้ พวกเขาสามารถตั้งค่าจุดพักและอัปเดตรหัสของตนได้ คุณลักษณะที่มีประโยชน์อย่างยิ่งสำหรับนักพัฒนาคือ พวกเขาสามารถดำเนินการติดตามคำสั่ง (หากฮาร์ดแวร์ของพวกเขาสนับสนุน) และระบุส่วนประกอบและเรียกใช้รหัส C สิ่งนี้มีประโยชน์อย่างยิ่งสำหรับการตรวจสอบความครอบคลุมรหัสของการทดสอบ hardware-in-loop (HiL)

นอกจากนั้น Ozone ยังสามารถช่วยให้นักพัฒนาวิเคราะห์ประสิทธิภาพของระบบได้ (ภาพที่ 5) และแสดงภาพตัวแปรเมื่อเวลาผ่านไป ซึ่งทำให้มีความสามารถเหมือน J-Scope แต่ในลักษณะที่มีการบูรณาการมากขึ้น โดยสามารถใช้เพื่อตรวจสอบการใช้พลังงานและซิงโครไนซ์เหตุการณ์ทั้งหมดเหล่านี้ร่วมกันในที่เดียว

ภาพของ SEGGER Ozone สามารถใช้ติดตามตัวแปรผ่าน J-Linkรูปที่ 5: Ozone สามารถใช้เพื่อติดตามตัวแปรผ่าน J-Link ด้วยแอปพลิเคชันทำงานแบบเรียลไทม์นอกเหนือจากการครอบคลุมของรหัสและการดีบักการรับรู้ RTOS (แหล่งรูปภาพ: SEGGER Microcontroller Systems)

เครื่องมือที่สามคือ SystemView SystemView ช่วยให้นักพัฒนาสามารถวิเคราะห์พฤติกรรมรันไทม์ของระบบ RTOS ได้ การสลับงานจะถูกบันทึกในบัฟเฟอร์การติดตาม จากนั้นรายงานไปยัง SystemView ผ่านดีบักเกอร์ (รูปที่ 5) SystemView จะแสดงข้อมูลนี้ในลักษณะที่ช่วยให้นักพัฒนาสามารถดูการสลับการทำงานและวัดประสิทธิภาพของระบบได้ นี่เป็นวิธีที่ยอดเยี่ยมในการแสดงภาพระบบและค้นหาจุดบกพร่องและปัญหาอื่น ๆ

แผนภาพของ SEGGER SystemView ที่เชื่อมโยงไปยัง RTOS รูปที่ 6: SystemView มีการเชื่อมโยงไปยัง RTOS ซึ่งช่วยให้นักพัฒนาสามารถวัดประสิทธิภาพของงานและเห็นภาพว่า RTOS ทำอะไรและเมื่อใด (แหล่งรูปภาพ: SEGGER Microcontroller Systems)

เคล็ดลับและกลเม็ดสำหรับการดีบักระบบสมองกลฝังตัว

การดีบักอุปกรณ์ IoT ต้องการให้นักพัฒนามีเครื่องมือที่เหมาะสมจากทั้งด้านฮาร์ดแวร์และซอฟต์แวร์ ทั้งสองส่วนจะต้องเข้าที่ หากนักพัฒนาจะลดเวลาที่ใช้ในการดีบักให้เหลือน้อยที่สุด การดีบักจะสำเร็จได้ จะต้องมี "เคล็ดลับและกลเม็ด" หลายประการที่นักพัฒนาควรคำนึงถึง เช่น:

  • ใช้ดีบักเกอร์มืออาชีพที่เพิ่มอัตราบอดของอินเทอร์เฟซให้สูงสุด จำนวนข้อมูลที่เป็นประโยชน์ที่สามารถรับได้จากระบบจะขึ้นอยู่กับว่าสามารถรับข้อมูลได้เร็วเพียงใด ความเร็วที่ช้าลงส่งผลให้เซสชันการดีบักนานขึ้น
  • ตั้งค่าซอฟต์แวร์ดีบักในช่วงต้นของวงจรการพัฒนา นักพัฒนาไม่ควรรอจนกว่าจะมีปัญหาในการตั้งค่าเครื่องมือดีบัก
  • ใช้เครื่องมือติดตามตั้งแต่เริ่มต้นการพัฒนา ซึ่งจะช่วยให้นักพัฒนาสามารถตรวจสอบประสิทธิภาพของระบบและเข้าใจได้ทันทีว่าการเปลี่ยนแปลงซอฟต์แวร์ส่งผลกระทบอย่างไร
  • ใช้ประโยชน์จากการติดตามคำสั่งหรือการสุ่มตัวอย่างตัวนับโปรแกรม เพื่อทำความเข้าใจความครอบคลุมของรหัสของระบบในระหว่างการทดสอบ ข้อบกพร่องจะมีอยู่ในแขนงและรหัสที่มีเงื่อนไขที่ยังไม่ได้ทดสอบ
  • ใช้ประโยชน์จากโปรโตคอลการถ่ายโอนที่รวดเร็วเพื่อรับข้อมูลนอกชิป เช่น ไลบรารี Real-time Transfer (RTT)

นักพัฒนาที่ปฏิบัติตาม “เคล็ดลับและกลเม็ด” เหล่านี้จะพบว่าพวกเขาประหยัดเวลาและความเศร้าโศกได้ไม่น้อยเมื่อพยายามพัฒนาอุปกรณ์ IoT

สรุป

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

DigiKey logo

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.

About this author

Image of Jacob Beningo

Jacob Beningo

Jacob Beningo เป็นที่ปรึกษาด้านซอฟต์แวร์แบบฝังตัว เขาได้ตีพิมพ์บทความมากกว่า 200 บทความเกี่ยวกับเทคนิคการพัฒนาซอฟต์แวร์แบบฝังตัวเป็นวิทยากรและผู้ฝึกสอนด้านเทคนิคที่เป็นที่ต้องการและสำเร็จการศึกษา 3 ปริญญา รวมถึง ปริญญาโทวิศวกรรมศาสตร์จากมหาวิทยาลัยมิชิแกน

About this publisher

DigiKey's North American Editors