สารบัญ:

การดีบักแบบอนุกรมด้วย CloudX: 3 ขั้นตอน
การดีบักแบบอนุกรมด้วย CloudX: 3 ขั้นตอน

วีดีโอ: การดีบักแบบอนุกรมด้วย CloudX: 3 ขั้นตอน

วีดีโอ: การดีบักแบบอนุกรมด้วย CloudX: 3 ขั้นตอน
วีดีโอ: ESP-PROG Debugging Probe Explained 2024, พฤศจิกายน
Anonim
การดีบักแบบอนุกรมด้วย CloudX
การดีบักแบบอนุกรมด้วย CloudX

ในโครงการนี้ ฉันตั้งเป้าที่จะอธิบายแนวคิดของการดีบักผ่านเทอร์มินัลอนุกรม แต่ก่อนอื่น เรามาอธิบายแนวคิดผ่านความหมายกันก่อน

1. การสื่อสารแบบอนุกรม

การสื่อสารแบบอนุกรมใช้สำหรับการสื่อสารระหว่างบอร์ด CloudX กับคอมพิวเตอร์หรืออุปกรณ์อื่นๆ บอร์ด CloudX ทั้งหมดมีพอร์ตอนุกรมที่เห็นอย่างน้อยหนึ่งพอร์ต (หรือที่เรียกว่า UART หรือ USART): อนุกรม มันสื่อสารบนพิน RX และ TX แบบดิจิตอลกับฮาร์ดแวร์อื่น ๆ หรือโมดูลการสื่อสารแบบอนุกรม (เช่น gsm และ gps) เช่นเดียวกับคอมพิวเตอร์ผ่าน USB โดยใช้ SoftCard ดังนั้น หากคุณใช้ฟังก์ชันเหล่านี้ คุณจะไม่สามารถใช้ TX และ RX สำหรับอินพุตหรือเอาต์พุตดิจิทัลได้ คุณสามารถใช้จอภาพอนุกรมในตัวของสภาพแวดล้อม CloudX เพื่อสื่อสารกับบอร์ด CloudX คลิกปุ่มมอนิเตอร์แบบอนุกรมในแถบเครื่องมือและเลือกอัตราบอดเดียวกับที่ใช้ในพารามิเตอร์ที่เรียกว่า serialBegin()

2. ดีบัก

การดีบักหมายถึงการระบุและลบข้อผิดพลาดจาก (ฮาร์ดแวร์หรือซอฟต์แวร์ของคอมพิวเตอร์) การดีบักเกี่ยวข้องกับการค้นหาและแก้ไขข้อผิดพลาดของโค้ดในโปรแกรมคอมพิวเตอร์ การดีบักเป็นส่วนหนึ่งของกระบวนการทดสอบซอฟต์แวร์และเป็นส่วนสำคัญของวงจรการพัฒนาซอฟต์แวร์ทั้งหมด ให้ยกตัวอย่างว่าโค้ดของคุณคอมไพล์สำเร็จแล้ว และคุณกำลังทดสอบฮาร์ดแวร์และไม่ทำงานตามที่คาดไว้ แม้ว่าจะมีหลายวิธีในการดีบักโค้ดของคุณ วิธีที่ง่ายและมีประสิทธิภาพในการดีบักคือการใช้การดีบักแบบอนุกรม CloudX IDE สร้างไฟล์ 2 ประเภทจากการคอมไพล์ที่ประสบความสำเร็จ ไฟล์ HEX และ COFF ไฟล์ HEX เป็นรหัสเครื่องอย่างเคร่งครัด ซึ่งเป็นสิ่งที่บูตโหลดเข้าสู่บอร์ดเพื่อดำเนินการในโลกแห่งความเป็นจริง แต่ยังสามารถเรียกใช้บนซอฟต์แวร์จำลองพีซีของคุณ เช่น Proteus Isis ในขณะที่ไฟล์ COFF เป็นรูปแบบที่สามารถอ่านได้บนซอฟต์แวร์จำลอง PC ของคุณ (Proteus Isis). สำหรับขอบเขตนี้ เราจะพิจารณาการดีบักพื้นฐานสองประเภทบนโปรโตคอลอนุกรม

1. การดีบักแบบอนุกรมแบบอ่อน:

ในวิธีนี้ ทุกการทดสอบและการดีบักจะทำบนพีซีผ่านซอฟต์แวร์ที่มีประโยชน์ เช่น Proteus ISIS เนื่องจากโดยทั่วไป CloudX สร้างไฟล์ COFF ฉันขอแนะนำให้ใช้สิ่งนี้สำหรับการจำลองพีซีเพราะโดยพื้นฐานแล้วคุณสามารถก้าวระหว่างบรรทัดของรหัสและค้นหาว่าปัญหามาจากที่ใด และหากรหัสของคุณต้องทำงานโดยไม่ก้าว ให้ใช้ virtual teminal จาก "virtual โหมดเครื่องมือ" คุณสามารถทราบได้ตลอดเวลาว่าตัวควบคุมกำลังทำงานอยู่ที่บรรทัดใด มาดูตัวอย่างโค้ดนี้กัน

ขั้นตอนที่ 1:

ภาพ
ภาพ
ภาพ
ภาพ

/*

* ไฟล์: newmain.c

* ผู้แต่ง: OGBOYE GODWIN * * สร้างเมื่อ 28 มิถุนายน 2018, 10:15 น. */

#รวม

#รวม

/* เราจะทำให้

หมุดสีแดง1 หมุดสีเขียว2 หมุดสีเหลือง3 * หมุดปุ่ม4 */ ถ่าน *บอก= "หืม ฉันเคยสัมผัสแล้ว"; ตั้งค่า () { โหมดพิน (1, เอาต์พุต); โหมดพิน (2, เอาต์พุต); โหมดพิน (3, เอาต์พุต); โหมดพิน (4, อินพุต); Serial_begin(9600); วนซ้ำ (){ ในขณะที่ (!readPin (4)); Serial_writeText(บอก); Serial_writeText("….เปลี่ยนเป็นสีแดง"); Serial_write(0x0D); portWrite(1, 0x00); pinSelect(1, สูง); ความล่าช้า (200); // ลองลบความคิดเห็นทั้งหมดออกแล้วดูว่าเกิดอะไรขึ้น // จากนั้นแทนที่ (คุณจะต้องชอบอย่างแน่นอน!) ในขณะที่(!readPin(4)); Serial_writeText(บอก); Serial_writeText("….เปลี่ยนเป็นสีเขียว"); Serial_write(0x0D); portWrite(1, 0x00); pinSelect(2, สูง); ความล่าช้า (200); // ลองลบความคิดเห็นทั้งหมดออกแล้วดูว่าเกิดอะไรขึ้น // จากนั้นแทนที่ (คุณจะต้องชอบอย่างแน่นอน!)

ในขณะที่(!readPin(4));

Serial_writeText(บอก); Serial_writeText("….เปลี่ยนเป็นสีเหลือง"); Serial_write(0x0D); portWrite(1, 0x00); pinSelect(3, สูง); ความล่าช้า (200); // ลองลบความคิดเห็นทั้งหมดออกแล้วดูว่าเกิดอะไรขึ้น // จากนั้นแทนที่ (คุณจะต้องชอบอย่างแน่นอน!) } }

ด้วยสิ่งนี้ คุณจะเห็นว่าการดีบักแบบอนุกรมมีความสำคัญอย่างไร หากคุณลบการหน่วงเวลา ถ้าคุณทำอย่างนั้น คุณจะเห็นว่ามันสร้างปัญหาให้กับโค้ดง่ายๆ ได้อย่างไร หากมันถูกเรียกใช้งานในโลกแห่งความเป็นจริงโดยไม่เกิดความล่าช้า

ขั้นตอนที่ 2:

ภาพ
ภาพ
ภาพ
ภาพ
ภาพ
ภาพ

2. การดีบักฮาร์ดแวร์:

ในวิธีนี้ การทดสอบและการดีบักทุกอย่างทำได้โดยแนบบอร์ดต้นแบบ CloudX เข้ากับพีซีโดยใช้ซอฟต์การ์ด และใช้เทอร์มินัลซีเรียลของ CloudX IDE (แนะนำ) หรือซอฟต์แวร์ที่มีประโยชน์อื่นๆ เช่น Proteus ISIS compim, realTerm ฯลฯ สร้าง COFF ไฟล์ไม่สามารถใช้ได้ที่นี่เพราะวิธีนี้ต้องการ HEX bootloaded ลงในฮาร์ดแวร์ ฉันขอแนะนำให้ใช้สิ่งนี้สำหรับซอฟต์การ์ด CloudX โปรดทราบว่าโค้ดของคุณทำงานโดยไม่ต้องก้าว ดังนั้นคุณจึงสามารถทราบได้ตลอดเวลาว่าตัวควบคุมกำลังทำงานอยู่ที่บรรทัดใดโดยเอาต์พุตแบบอนุกรม ลองดูที่โค้ดนี้ในตัวอย่างเดียวกันกับที่กล่าวข้างต้น ตั้งค่าฮาร์ดแวร์ของคุณให้คล้ายกับเหมือง LED สีแดง --------- ไปยัง pin1 LED สีเขียว --------- ไฟ LED สีเหลือง pin2 -- -------- ปุ่ม pin3 --------- pin4

ขั้นตอนที่ 3:

ภาพ
ภาพ

ขั้นตอน

1. ใช้รหัสเดียวกับด้านบน

2. bootload ลงในบอร์ดของคุณ

3. เริ่ม CloudX Serial Terminal โดยคลิกปุ่ม "serial" ในแถบเครื่องมือ

4. เลือกพอร์ตและอัตราบอดที่ต้องการ (9600 ในบทช่วยสอนนี้)

5. เริ่มต้นเทอร์มินัลโดยคลิกที่เชื่อมต่อ (ยกเลิกการเชื่อมต่อหากคุณต้องการออก)

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

แนะนำ: