ฉันจะดีบัก Arduino Uno ด้วย gdb บนพีซี Linux ได้อย่างไร


10

ฉันจะดีบัก (ซอร์สโค้ดขั้นตอนเดียว) Arduino Uno พร้อม gdb บนพีซี Linux ได้อย่างไร โปรดทราบว่าฉันไม่ชอบใช้ AVR Studio ใน wine หรือ VirtualBox

คำถามที่ 1:การเชื่อมต่อทางกายภาพ

ฉันจะเชื่อมต่อกับบอร์ด Uno ได้อย่างไรและอย่างไร? ฉันเดาว่าเนื่องจากบอร์ด Uno บรรจุด้วย ATmega328 ควรมีซอร์สโค้ดขั้นตอนเดียวหรือไม่ ฉันเดาด้วยว่าฉันสามารถใช้AVR JTAGICE mkIIหรือAVR Dragonบนส่วนหัว ICSP ได้หรือไม่

คำถามที่ 2:เซิร์ฟเวอร์ GDB

จากนั้นฉันสังเกตเห็นว่ามีบางโครงการเช่นAVaRICEที่ดูเหมือนว่าจะให้ฟังก์ชั่น jtag กับ gdb แต่อาจมีโครงการอื่นหรือไม่?

คำถามที่ 3: พรายอยู่ที่ไหน

และถ้าฉันได้รับมันขึ้นและทำงาน Arduino IDE จะซ่อนเอาท์พุทที่สร้างขึ้นเช่นไฟล์ elf ที่มีสัญลักษณ์แก้ปัญหา (ควรมี) หรือฉันต้องสร้าง Makefile แบบคลาสสิกที่ใช้แค่ Ardino libs?

ฉันพยายามหาข้อมูลเกี่ยวกับสิ่งที่ / วิธีการใช้ แต่ฉันได้พบเบาะแสเหล่านั้นที่บอกฉันว่าฉันจะทำอย่างไร มีคนผลักฉันไปในทิศทางที่ถูกต้องได้ไหม?


ดูเพิ่มเติมที่electronics.stackexchange.com/questions/3703/…
Chris Stratton

คำตอบ:


3

คุณสามารถค้นหาสิ่งประดิษฐ์คอมไพเลอร์โดยกดปุ่ม Shift ค้างไว้เมื่อคลิกปุ่มรวบรวมใน IDE รุ่นเก่า (อ่าน <1.0) ในรุ่นที่ใหม่กว่า (อ่าน> = 1.0) มีตัวเลือกภายใต้กล่องโต้ตอบการตั้งค่าสำหรับการแสดงผล verbose ในระหว่างการรวบรวม (ดูภาพหน้าจอ) ด้วยเอาต์พุต verbose โฟลเดอร์ที่คอมไพเลอร์เอาต์พุตผลลัพธ์ทั้งหมดถูกพิมพ์ (ซ้ำ ๆ ) ในคอนโซล คุณควรเริ่มต้นอย่างน้อย

screenshot arduino แสดงผลลัพธ์แบบ verbose ในระหว่างการคอมไพล์

ในหมายเหตุด้านข้างมีการพูดคุยกันหลายเรื่องในรายการนักพัฒนา Arduino ก่อนหน้านี้ในเดือนมิถุนายน 2012และบางคนโพสต์ประกาศไปยังรายชื่อนักพัฒนา Arduino บนวิธีการปรับปรุง / รวมแบบบูรณาการของการดีบัก GDB สำหรับ Arduino แต่ฉันยังไม่ได้ตรวจสอบ มันมากขึ้นไปอีก ฉันเดาว่าโครงการนี้เรียกว่าVisualMicro (?) ดูเหมือนว่ามันถูกสร้างขึ้นเป็นปลั๊กอิน Visual Studio ดังนั้นอาจไม่เป็นประโยชน์กับคุณในสภาพแวดล้อมของ linux และมันอยู่ในช่วงเบต้าด้านบน แต่ฉันจะให้คุณตัดสินใจ


ฉันเปิดใช้งาน "เปิดใช้งานเอาต์พุต verbose ระหว่างการคอมไพล์" และพวกเขาใช้บางอย่างเช่น /tmp/build3652385594823436592.tmp/ เป็น dir สำหรับการสร้างของพวกเขาเช่นกันเอลฟ์นั้นถูกสร้างด้วยแฟล็ก -g ดังนั้นจึงควรมีสัญลักษณ์การดีบัก นั่นหมายความว่าฉันได้พบสิ่งประดิษฐ์สร้างแล้วตอนนี้ฉันแค่ต้องการให้ jtag ทำงาน
Johan

3

Simavr AVR ตัวจำลองโปรเซสเซอร์มอบเซิร์ฟเวอร์ GDB ที่ดีสำหรับการดีบัก Firmvare AVR รวมถึง Arduino คุณสามารถใช้มันได้ด้วยตัวเอง (คุณต้องเขียนแอปพลิเคชันคอนโซลขนาดเล็กสำหรับการกำหนดค่าฮาร์ดแวร์ของคุณโดยเฉพาะ) หรือจากในสภาพแวดล้อม Simutron GUIที่คุณสามารถกำหนดค่าฮาร์ดแวร์ของคุณผ่านการจับวงจร

หมายเหตุ: ด้วยเครื่องมือเหล่านี้คุณไม่มีการเชื่อมต่อทางกายภาพเนื่องจากฮาร์ดแวร์ทั้งหมดได้รับการจำลอง


2

นี้เป็นคำตอบในบทความวารสารลินุกซ์อ้างอิงในคำถามที่คล้ายกัน: JTAG AVR

โดยทั่วไปการใช้ avr-gdb และ simulavr ควบคู่คุณสามารถรันซอฟต์แวร์ของคุณกับตัวเลือก AVR ไมโครคอนโทรลเลอร์ผ่านตัวจำลองในขณะที่ใช้ GDB เพื่อก้าวผ่านและสังเกตรหัสการดำเนินการ

หวังว่านี่จะช่วยได้!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.