เมื่อวานนี้ ควบคู่ไปกับการประกาศของ Raspberry Pi ในราคา $12 ใหม่ Debug Probe ฉันได้รับหนึ่งรายการทางไปรษณีย์ (ตามภาพด้านบน)
Debug Probe ใช้พลังงานจาก RP2040 และ ให้คุณเชื่อมต่อจาก USB เข้ากับ UART (ซีเรียล) หรือ SWD (Serial Wire Debug) ซึ่งเหมาะสำหรับการดีบักอุปกรณ์ฝังตัวส่วนใหญ่
UART มีประโยชน์ในการเชื่อมต่อกับคอนโซลของอุปกรณ์เมื่อคุณไม่มีจอแสดงผลหรือ วิธีอื่นในการควบคุม และคุณจะพบพอร์ต UART/ซีเรียล/คอนโซลบนอุปกรณ์เกือบทุกชนิดที่มีโปรเซสเซอร์หรือไมโครคอนโทรลเลอร์
SWD มีประโยชน์เมื่อทำการดีบัก ARM SoC เช่น RP2040 ที่ใช้กับ Raspberry Pi Pico. ฉันยังใช้มันในอดีตเมื่ออัปเดตเฟิร์มแวร์บน Turing Pi 2 ของฉัน ซึ่งใช้ชิป ARM อื่นเพื่อเรียกใช้ BMC หรือตัวควบคุมการจัดการบอร์ด
แต่เดิม คุณสามารถหาอะแดปเตอร์ USB เป็น UART ด้วยระดับการสนับสนุนที่แตกต่างกันตั้งแต่สองสามเหรียญจนถึงหลายสิบดอลลาร์ แต่เมื่อดูในถังขยะ UART ของฉัน ฉันคิดว่าฉันครอบคลุมอะแดปเตอร์ที่ไม่ใช่แบรนด์ยอดนิยมบางตัวที่ผู้สนใจด้านอิเล็กทรอนิกส์จำนวนมากอาจมีอยู่:
Debug Probe เพิ่มใน SWD และมีพอร์ตแยกสำหรับสิ่งนั้น ดังนั้นมันจึงแข่งขันกับอุปกรณ์ SWD เช่น ของเลียนแบบของ SEGGER J-ลิงก์ BASE Debugger ซึ่งมีค่าใช้จ่าย $500!
SEGGER EDU สามารถ ซื้อเพื่อใช้ในการศึกษาและไม่ใช่เชิงพาณิชย์ในราคา 70 ดอลลาร์ แต่ก็ยังเป็นราคาที่ค่อนข้างสูงที่จะจ่ายเพื่อเข้าสู่เกมดีบั๊ก SWD
ดังนั้นสำหรับเงินรวมทั้งหมด 12 ดอลลาร์สำหรับ Debug Probe ของ Pi คุณจะทำอย่างไร ได้อะไร
สิ่งที่คุณได้รับ—และบน—กล่อง
ผู้คนจำนวนมากถามว่า”ทำไมคุณถึงซื้อ Raspberry Pi ในเมื่อมีบอร์ดแบบน็อคออฟในต่างประเทศกว่าพันตัวซึ่งถูกกว่าครึ่งหนึ่ง ราคาหรือไม่”
มาเปิด Debug Probe กัน แล้วผมจะแสดงเหตุผลดีๆ ข้อหนึ่งให้คุณดู—ใต้ฝา คุณจะพบกับภาพประกอบง่ายๆ ซึ่งอธิบายวัตถุประสงค์ของอุปกรณ์เสริมที่ให้มาและ pinout สำหรับสายไฟที่ให้มา
เป็นส่วนเพิ่มเติมที่แปลกใหม่และเรียบง่ายที่ทำให้การทำงานกับผลิตภัณฑ์ Pi ดีขึ้นมาก อุปกรณ์อื่นๆ จำนวนมากมาในถุงป้องกันไฟฟ้าสถิตย์ หรือโยนใส่ถุงพลาสติกปิดสนิท และคุณมักจะใช้บล็อกโพสต์หรือบันทึกที่ด้านล่างของหน้าผลิตภัณฑ์ Adafruit เพื่อเริ่มต้นใช้งาน
หากฉันไปที่ หน้าผลิตภัณฑ์ Debug Probe มีรูปภาพที่มีรายละเอียดและเอกสารประกอบของบุคคลที่หนึ่งครบถ้วนและย่อยง่าย!
แต่หลังจากเปิดแผ่นพับเอกสารเหล่านั้นแล้ว โพรบตรวจแก้จุดบกพร่องในกล่องเชื่อมต่อกันโปร่งแสงขนาดเล็กน่ารัก:
และนอกเหนือจากนั้น สายเคเบิลจะถูกบรรจุอย่างเรียบร้อยด้านล่าง:
เป็นเรื่องน่ารำคาญเล็กน้อยที่ Pi ติด micro USB บนบอร์ดนี้:
ตอนนี้ USB-C ก็พอใช้ได้แล้ว มาตรฐานสำหรับอุปกรณ์ฝังตัวที่หลากหลาย ดังนั้นการมีอุปกรณ์อื่นที่จำเป็นต้องห้อยเข้ากับสายไมโคร USB จึงเป็นเรื่องที่น่ารำคาญเล็กน้อย บางทีพวกเขาอาจจะสร้าง v2 ด้วย USB-C เมื่อพวกเขาผ่านพอร์ต micro USB และสายเคเบิลที่มีอยู่มากมาย อย่างน้อยก็สอดคล้องกันในการใช้งานกับผลิตภัณฑ์ที่”ฝังตัว”และผลิตภัณฑ์ที่ใช้พลังงานต่ำ (Pico, Zero, Debug Probe และ Keyboard)
การดีบัก UART แบบอนุกรม
ตั้งแต่ฉัน’ไม่ได้ตั้งค่าให้ดีบั๊กสิ่งใดโดยเฉพาะใน Pico ในขณะนี้ และบอร์ดที่ใช้ ARM อื่น ๆ ของฉันบางตัวก็เต็มไปแล้วในตอนนี้ ฉันต้องการทดสอบ Probe บน Raspberry Pi อย่างรวดเร็ว แค่ตรวจสอบว่าฉันเห็นคอนโซลของมันหรือไม่ เอาต์พุตผ่าน UART (ดูบทความเก่าของฉันที่ลงลึกมากขึ้นเกี่ยวกับการดีบัก UART/Serial บน Raspberry Pi)
ฉันเสียบกล่องเข้ากับพินที่เหมาะสมบน Pi 4—Black ถึง GND สีส้มเป็น GPIO 14/พิน 8 (UART TX และสีเหลืองเป็น GPIO 15/พิน 10 (UART RX):
จากนั้นฉันก็เสียบ Probe เข้ากับพอร์ต USB ของ Mac และเรียกใช้ lsusb และเลื่อย:
Bus 002 Device 001: ID 2e8a:000c 2e8a Debug Probe (CMSIS-DAP) Serial: E6616407E330212C
สัญญาณแรกที่ดี Debug Probe มีไฟ LED สีแดงสว่างเมื่อเปิดเครื่อง ซึ่งเป็นสัมผัสที่ดี:
ฉันดูข้างในด้วย/dev และพบอุปกรณ์/dev/tty.usbmodem2102. ฉันเปิด CoolTerm และตั้งค่าพอร์ตเป็น usbmodem2102 และอัตรารับส่งข้อมูลเป็น 115200 จากนั้น หลังจากแน่ใจว่า Pi มี enable_uart=1 กำหนดค่าในไฟล์/boot/config.txt ฉันรีบูต Pi และดู CoolTerm:
ใช้งานได้จริง
เพื่อให้การทำงานผ่านการเชื่อมต่อแบบอนุกรมง่ายขึ้นเล็กน้อย ฉันยังตั้งค่า’โหมดดิบ’สำหรับโหมดเทอร์มินัลของ CoolTerm ปิดใช้งาน’เสียงสะท้อนในเครื่อง’และตั้งค่าการจำลองคีย์ Enter เป็น’CR’ดังนั้นฉันจะไม่ได้รับบรรทัดที่ซ้ำกันเมื่อกดปุ่ม Enter
การดีบัก Pico
ดังที่ฉันได้กล่าวไว้ก่อนหน้านี้ ฉันไม่มีโครงการ Pico ที่ใช้งานอยู่ซึ่งฉันสามารถใช้ SWD ได้และไม่มีเวลาตั้งค่าการสาธิต—ฉันเชื่อว่าเอกสารประกอบของ Raspberry Pi มั่นคง
แต่ฉันต้องการชี้ให้เห็นความแตกต่างของฮาร์ดแวร์ระหว่าง Pico และ Pico W:
พิโก ส่วนหัวจะอยู่ที่ขอบของบอร์ด ในขณะที่ส่วนหัวของ Pico W จะอยู่ตรงกลาง ใกล้กับชิป RP2040 มาก
Raspberry Pi ขายรุ่นที่ผมมีภาพ หรือพันธุ์’H’ที่มีบัดกรีล่วงหน้า ส่วนหัว JST— ดูภาพที่ 2 และ 4 ในชุดนี้ จากเว็บไซต์ของ Pi:
หากคุณมีเวอร์ชันที่ไม่มีส่วนหัว อาจเป็นการง่ายที่สุดที่จะบัดกรีบนส่วนหัวของตัวผู้ จากนั้นใช้ตัวแปลงพินตัวเมีย แม้ว่าคุณอาจพบส่วนหัวของรูทะลุ JST ที่คุณสามารถบัดกรีในพินบนบอร์ดที่ไม่ใช่ H ได้
บทสรุป
นอกจาก SEGGER J-Link แล้ว ยังมีอุปกรณ์อื่นๆ อย่างน้อยที่สุดก็ไม่ทำลายธนาคาร:
Black Magic Probe ($75): นี่ อาจเป็นสิ่งที่ใกล้เคียงที่สุดกับ Debug Probe ด้วยจิตวิญญาณ ราคาค่อนข้างแพงแต่ให้ JTAG เพิ่มเติมจาก SWD และมีการรองรับการทดสอบมากมายสำหรับ SoC ต่างๆ—Debug Probe รองรับอุปกรณ์ Pi อย่าง Pico อย่างเป็นทางการ ไม่ใช่ทุกสิ่งภายใต้ดวงอาทิตย์ SAMD11C SWD Programmer Stick (OSHW): นี่คืออุปกรณ์ฮาร์ดแวร์แบบโอเพ่นซอร์สที่คุณสามารถสร้างได้ด้วยตัวเอง หากคุณ ดังนั้นเลือก SWD Programmer & Debugger ($15): แค่ SWD แต่ก็เป็นทางเลือกเล็กๆ น้อยๆ ที่เรียบร้อย
ท้ายที่สุด ฉันยินดีที่จะทิ้ง Debug Probe นี้ลงในถังขยะพร้อมกับโพรบอื่นๆ ความจริงที่ว่ามันทำงานบน RP2040 เอง หมายความว่าเฟิร์มแวร์จะได้รับการบำรุงรักษาและอัปเดตเมื่อเวลาผ่านไป และมีแนวโน้มว่าข้อบกพร่องด้านความเข้ากันได้จำนวนมากจะได้รับการแก้ไข ดังนั้น Debug Probe จะได้รับระยะทางที่มากสำหรับอุปกรณ์ราคา $12!
เนื่องจากฉันปัดส่วนที่สนับสนุน SWD ฉันจึงไม่ได้พูดถึงซอฟต์แวร์ปัจจุบันด้วยซ้ำ โดยใช้ OpenOCD
สำหรับการอ่านเพิ่มเติมเกี่ยวกับ SWD และ OpenOCD โปรดดูบทความเหล่านี้: