JTAG: การอ่านชิปพร้อมโปรโตคอลกลุ่มทดสอบร่วมกัน

JTAG: Reading Chips with Joint Test Action Group Protocol

JTAG (กลุ่มทดสอบร่วมกัน) เป็นโปรโตคอลที่ใช้กันอย่างแพร่หลายสำหรับการดีบักการเขียนโปรแกรมและการทดสอบวงจรรวม (ICS) ช่วยให้การสื่อสารโดยตรงกับชิปสามารถอ่านหน่วยความจำดำเนินการสแกนขอบเขตหรือเฟิร์มแวร์โหลด บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของการใช้ JTAG เพื่ออ่านชิปรวมถึงการตั้งค่าเครื่องมือและแนวทางปฏิบัติที่ดีที่สุด


jtag คืออะไร?

JTAG เป็นอินเทอร์เฟซมาตรฐาน (IEEE 1149.1) ที่ให้วิธีการทดสอบและดีบักฮาร์ดแวร์ที่ระดับชิป มันมักใช้ใน:

  • การพัฒนาเฟิร์มแวร์และการดีบัก
  • ทดสอบการเชื่อมต่อ PCB
  • เฟิร์มแวร์กระพริบบนอุปกรณ์
  • แยกหน่วยความจำออกจาก ICS

JTAG ใช้อินเทอร์เฟซ 4 หรือ 5-pin:

เข็มหมุด คำอธิบาย
TDI ทดสอบข้อมูลใน
TDO ทดสอบข้อมูล
TCK นาฬิกาทดสอบ
TMS เลือกโหมดทดสอบ
trst ทดสอบรีเซ็ต (ไม่บังคับ)

สิ่งที่คุณต้องการ

  1. อะแดปเตอร์ jtag: อุปกรณ์ฮาร์ดแวร์ในการเชื่อมต่อกับชิป (เช่น Segger J-Link, อะแดปเตอร์ที่รองรับ OpenOCD)
  2. อุปกรณ์เป้าหมาย: IC หรือระบบที่คุณต้องการอ่าน
  3. เครื่องมือซอฟต์แวร์: แอปพลิเคชันสำหรับการดีบัก JTAG เช่น OpenOCD, URJTAG หรือเครื่องมือที่เป็นกรรมสิทธิ์
  4. เอกสาร JTAG Pinout: แผนภาพ Pinout สำหรับอุปกรณ์เป้าหมาย
  5. อุปกรณ์เสริมการเชื่อมต่อ: สายไฟส่วนหัวและเขียงหั่นขนม (ถ้าจำเป็น)

ขั้นตอนที่ 1: การตั้งค่าฮาร์ดแวร์ JTAG

1. ระบุอินเทอร์เฟซ JTAG บนอุปกรณ์เป้าหมาย

  • อ้างถึงแผ่นข้อมูลแผ่นข้อมูลหรือ PCB ของชิปเพื่อค้นหาหมุด JTAG
  • ฉลากทั่วไปสำหรับหมุด JTAG รวมถึง TDI, TDO, TCK, และ TMS.
  • บอร์ดบางตัวมีป้ายกำกับ JTAG (เช่นตัวเชื่อมต่อ 10 พินหรือ 20 พิน)

2. เชื่อมต่ออะแดปเตอร์ JTAG

  • เชื่อมต่ออะแดปเตอร์ไปยังอุปกรณ์เป้าหมายที่ตรงกับ JTAG Pinout:
    • TDI บนอะแดปเตอร์เชื่อมต่อกับ TDI บนอุปกรณ์และอื่น ๆ
    • ตรวจสอบให้แน่ใจว่า GND เชื่อมต่อระหว่างอะแดปเตอร์และเป้าหมาย
    • ให้พลังงานแก่อุปกรณ์เป้าหมายหากจำเป็น

3. ตรวจสอบระดับแรงดันไฟฟ้า

  • ตรวจสอบให้แน่ใจว่าอะแดปเตอร์ JTAG รองรับระดับแรงดันไฟฟ้าของอุปกรณ์เป้าหมาย (เช่น 3.3V หรือ 1.8V)
  • อะแดปเตอร์บางตัวมีการตั้งค่าแรงดันไฟฟ้าที่กำหนดค่าได้

ขั้นตอนที่ 2: การติดตั้งเครื่องมือซอฟต์แวร์ JTAG

1. OpenOCD (เปิดตัวดีบั๊กชิป)

OpenOCD เป็นเครื่องมือโอเพ่นซอร์สที่ใช้กันอย่างแพร่หลายสำหรับการดีบัก JTAG

  • ติดตั้งโดยใช้ตัวจัดการแพ็คเกจของคุณ (เช่น apt install openocd บน Linux)
  • ตรวจสอบให้แน่ใจว่าอะแดปเตอร์ JTAG ของคุณได้รับการสนับสนุนโดย OpenOCD

2. urjtag

เครื่องมือที่มีน้ำหนักเบาสำหรับการสแกนขอบเขตและการดำเนินการ JTAG ขั้นพื้นฐาน

3. เครื่องมือเฉพาะของผู้ขาย

สำหรับอะแดปเตอร์ที่เป็นกรรมสิทธิ์เช่น Segger J-Link หรือ Xilinx ให้ใช้ซอฟต์แวร์อย่างเป็นทางการของพวกเขา:

  • Segger J-Link: ดาวน์โหลดเครื่องมือ j-link จาก เว็บไซต์ของ Segger.
  • เครื่องมือ Xilinx: ใช้ Vivado หรือผลกระทบสำหรับการดีบัก FPGA

ขั้นตอนที่ 3: การอ่านข้อมูลจากชิป

1. กำหนดค่าซอฟต์แวร์ JTAG

  • สร้างหรือโหลดไฟล์การกำหนดค่าที่ระบุอะแดปเตอร์ JTAG และอุปกรณ์เป้าหมาย
    • ตัวอย่างสำหรับ OpenOCD:
      source [find interface/jlink.cfg]
      transport select jtag
      source [find target/stm32f4x.cfg]
      init
      halt
      

2. ตรวจจับอุปกรณ์เป้าหมาย

เรียกใช้คำสั่งเพื่อสแกนโซ่ JTAG และระบุอุปกรณ์ที่เชื่อมต่อ

  • สำหรับ OpenOCD:
    openocd -f interface/jlink.cfg -f target/stm32f4x.cfg
    
    มองหาอุปกรณ์ที่ตรวจพบในบันทึกเอาต์พุต

3. เนื้อหาหน่วยความจำการถ่ายโอนข้อมูล

ใช้คำสั่ง JTAG เพื่ออ่านภูมิภาคหน่วยความจำ:

  • สำหรับ OpenOCD:
    dump_image memory.bin 0x08000000 0x10000
    
    • memory.bin: ไฟล์เพื่อบันทึกการถ่ายโอนข้อมูลหน่วยความจำ
    • 0x08000000: เริ่มต้นที่อยู่
    • 0x10000: จำนวนไบต์ที่จะอ่าน

4. ดำเนินการสแกนขอบเขต

การสแกนขอบเขตตรวจสอบการเชื่อมต่อและการทำงานของพิน IC

  • ใช้ URJTAG หรือ OpenOCD เพื่อทำการสแกนขอบเขต
  • ตัวอย่างใน urjtag:
    cable jtagkey
    detect
    bsdl path/to/bsdl/file.bsd
    svf boundary_scan.svf
    

ขั้นตอนที่ 4: แนวทางปฏิบัติที่ดีที่สุดสำหรับการดีบัก JTAG

  1. รักษาความปลอดภัยการเชื่อมต่อ: ใช้สายสั้นและเชื่อถือได้เพื่อลดเสียงรบกวน
  2. ตรวจสอบ pinout: ตรวจสอบการเชื่อมต่อ PIN JTAG อีกครั้งเพื่อหลีกเลี่ยงการทำลายอุปกรณ์
  3. เฟิร์มแวร์สำรอง: สำรองเฟิร์มแวร์ดั้งเดิมเสมอก่อนที่จะทำการเปลี่ยนแปลง
  4. ใช้ซอฟต์แวร์ที่ถูกต้อง: ตรวจสอบให้แน่ใจว่าเครื่องมือที่คุณใช้รองรับอุปกรณ์เป้าหมาย
  5. ตรวจสอบแรงดันไฟฟ้า: ตรวจสอบให้แน่ใจว่าอุปกรณ์เป้าหมายทำงานในระดับแรงดันไฟฟ้าที่ถูกต้อง

แอปพลิเคชันของ JTAG

  1. การดีบักเฟิร์มแวร์และซอฟต์แวร์
  2. กระพริบเฟิร์มแวร์ใหม่หรือ bootloaders
  3. Extracting data from memory for analysis
  4. Diagnosing PCB manufacturing defects
  5. ฮาร์ดแวร์วิศวกรรมย้อนกลับ

การแก้ไขปัญหา

  • ไม่พบอุปกรณ์:

    • Verify the wiring and pinout.
    • Ensure the target device is powered on.
    • ตรวจสอบระดับแรงดันไฟฟ้าเพื่อความเข้ากันได้
  • ข้อผิดพลาด JTAG:

    • ตรวจสอบให้แน่ใจว่ามีการใช้ไฟล์การกำหนดค่าที่ถูกต้อง
    • ลองลดความเร็วนาฬิกา JTAG หากการสื่อสารล้มเหลว
  • ปัญหาการอนุญาต:

    • บน Linux ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ที่เหมาะสมในการเข้าถึงอุปกรณ์ USB (ใช้งาน sudo หรือกำหนดค่า udev กฎ).

บทสรุป

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

แสดงความคิดเห็น

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.