อะไรคือความแตกต่างระหว่างการทำงานในวงจรดีบักเกอร์และโปรแกรมจำลองวงจร?


12

In-circuit emulators (ตัวย่อ ICE) มีคุณสมบัติที่ดีเลิศในการดีบั๊กและยังมีแท็กราคาสูง

ตัวแก้จุดบกพร่องในวงจร (ICD ย่อ) สามารถทำสิ่งต่าง ๆ ที่ ICE สามารถทำได้ แต่มักจะมีค่าใช้จ่ายน้อยกว่ามาก

ฉันรู้วิธีนั้นในวันนั้น ICE จะลบชิปปัญหาออกจากซ็อกเก็ตและแทนที่ด้วยสายอีมูเลเตอร์ แต่ด้วยแพ็คเกจ QFN, BGA และแพ็คเกจ TQFP ที่ทันสมัยดูเหมือนว่าผลิตภัณฑ์ส่วนใหญ่เรียกตัวเองว่า "ICE" debuggers เชื่อมต่อกับส่วนหัวการดีบักในลักษณะเดียวกับที่ ICD จะเป็น

นี่คือตัวอย่างของผลิตภัณฑ์ที่ใช้ "ICE" ในชื่อ:

นอกจากนี้ยังมีผลิตภัณฑ์ 'ICE' ของ JTAG จากผู้จำหน่ายหลายแห่งโปรดทราบว่าฉันไม่ได้ลดราคาเหล่านี้เพราะพวกเขาไม่ได้อยู่ในวงจรทางกายภาพ

งานการพัฒนาประเภทใดที่ฉันต้องการ ICE และฉันควรจะพอใจกับ ICD เมื่อใด สมมติว่าฉันต้องการผ่านรหัสของฉันและไม่ใช้ LED และคำสั่ง printf ()

ตัวอย่างของปัญหาที่คุณแก้ไขด้วย ICE มีอะไรบ้าง แต่ไม่สามารถแก้ไขได้ (แนบเนียน)

คำตอบ:


19

ICE (In-Circuit Emulator) แทนที่ชิปเป้าหมาย มันทำหน้าที่เหมือนชิปจริงไปยังส่วนที่เหลือของวงจร แต่มีตะขอทุกชนิดอยู่ภายในเพื่อให้คุณสามารถดูว่าเกิดอะไรขึ้นตั้งจุดพักโหลดโค้ดใหม่คว้าร่องรอย ฯลฯ ใช้ ICD (In-Circuit Debugger) ฮาร์ดแวร์ดีบักพิเศษที่เพิ่มไปยังชิปเป้าหมายสำหรับวัตถุประสงค์นั้นและพยายามให้ความสามารถในการคล้ายกับ ICE น่าเสียดายที่นักการตลาดได้รับการยกย่องและพยายามที่จะนิยามคำศัพท์ที่ยืนยาวเหล่านี้ในความพยายามที่จะหลอกลวงคุณในการคิดว่าผลิตภัณฑ์ของพวกเขาดีกว่าครั้งต่อไป RealIce ของ Microchip เป็นตัวอย่างที่น่าเกรงขามในเรื่องนี้ มันเป็นเรื่องจริง แต่สิ่งหนึ่งที่ไม่ใช่ของ ICE

ICE จริง (ไม่ใช่ RealIce) คือสภาพแวดล้อมการดีบักในวงจรที่ดีที่สุด น่าเสียดายที่สิ่งเหล่านี้หายไปมากเนื่องจากค่าใช้จ่ายสูงในการสร้างชิปเป้าหมายรุ่นพิเศษสำหรับใช้ใน ICE และความจริงที่ว่าความเร็วนั้นสูงมากจนการถอดชิปเป็นปัญหา ปัญหาอีกประการหนึ่งคือ ICE ต้องการชิปเป้าหมายอยู่ในซ็อกเก็ตหรือต้องใช้อะแดปเตอร์พิเศษติดตั้งแทนที่ชิปเป้าหมายเพื่อให้ ICE สามารถเชื่อมต่อกับสายของมันได้

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

ในที่สุดทุกปัญหาสามารถแก้ไขได้ด้วยเครื่องมือที่หลากหลาย ไม่ใช่ว่าคุณจะแก้ปัญหาได้ แต่ต้องใช้เวลานานแค่ไหนและต้องใช้ความพยายามเท่าไหร่ เมื่อฉันใช้ ICE เป็นประจำ (Microchip ICE-2000 และ ICE-4000) ฉันไม่ได้ใช้คุณสมบัติการติดตามบ่อย แต่เมื่อฉันทำวิธีการอื่นจะมีค่าใช้จ่ายสูงกว่ามาก บางครั้งคุณมีข้อผิดพลาดที่ตัวแปรก็มีค่าผิดในนั้น คุณก้าวผ่านโค้ดและทุกอย่างเรียบร้อยและรูทีนที่จัดการกับตัวแปรดูเหมือนว่าจะทำทุกอย่างถูกต้อง แต่เมื่อคุณรันมันในที่สุดสิ่งที่อึออกและคุณพบว่าตัวแปรถังขยะ สาเหตุคือรหัสอื่น ๆ ที่มีตัวชี้ที่ไม่ดีบัฟเฟอร์ล้นหน่วยความจำไม่ตรงกันหรือคล้ายกัน ด้วย ICE คุณสามารถตั้งค่าเบรกพอยต์กับตัวแปรที่กำลังเปลี่ยนแปลง

เวลาส่วนใหญ่ ICD จะทำได้ดีพอ โดยเฉพาะอย่างยิ่งกับชิปขนาดใหญ่พินคู่ที่อุทิศให้กับการดีบักนั้นไม่ใช่ปัญหามากนัก ทุกวันนี้ฉันใช้ RealIce เป็นส่วนใหญ่ในการดีบัก มันมีเสถียรภาพมากขึ้นและไม่สม่ำเสมอกว่า ICD2 คุณเรียนรู้ที่จะอยู่กับมัน

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