JTAG (กลุ่มทดสอบร่วมกัน) เป็นโปรโตคอลที่ใช้กันอย่างแพร่หลายสำหรับการดีบักการเขียนโปรแกรมและการทดสอบวงจรรวม (ICS) ช่วยให้การสื่อสารโดยตรงกับชิปสามารถอ่านหน่วยความจำดำเนินการสแกนขอบเขตหรือเฟิร์มแวร์โหลด บทช่วยสอนนี้จะแนะนำคุณเกี่ยวกับพื้นฐานของการใช้ JTAG เพื่ออ่านชิปรวมถึงการตั้งค่าเครื่องมือและแนวทางปฏิบัติที่ดีที่สุด
jtag คืออะไร?
JTAG เป็นอินเทอร์เฟซมาตรฐาน (IEEE 1149.1) ที่ให้วิธีการทดสอบและดีบักฮาร์ดแวร์ที่ระดับชิป มันมักใช้ใน:
- การพัฒนาเฟิร์มแวร์และการดีบัก
- ทดสอบการเชื่อมต่อ PCB
- เฟิร์มแวร์กระพริบบนอุปกรณ์
- แยกหน่วยความจำออกจาก ICS
JTAG ใช้อินเทอร์เฟซ 4 หรือ 5-pin:
เข็มหมุด | คำอธิบาย |
---|---|
TDI | ทดสอบข้อมูลใน |
TDO | ทดสอบข้อมูล |
TCK | นาฬิกาทดสอบ |
TMS | เลือกโหมดทดสอบ |
trst | ทดสอบรีเซ็ต (ไม่บังคับ) |
สิ่งที่คุณต้องการ
- อะแดปเตอร์ jtag: อุปกรณ์ฮาร์ดแวร์ในการเชื่อมต่อกับชิป (เช่น Segger J-Link, อะแดปเตอร์ที่รองรับ OpenOCD)
- อุปกรณ์เป้าหมาย: IC หรือระบบที่คุณต้องการอ่าน
- เครื่องมือซอฟต์แวร์: แอปพลิเคชันสำหรับการดีบัก JTAG เช่น OpenOCD, URJTAG หรือเครื่องมือที่เป็นกรรมสิทธิ์
- เอกสาร JTAG Pinout: แผนภาพ Pinout สำหรับอุปกรณ์เป้าหมาย
- อุปกรณ์เสริมการเชื่อมต่อ: สายไฟส่วนหัวและเขียงหั่นขนม (ถ้าจำเป็น)
ขั้นตอนที่ 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 ขั้นพื้นฐาน
- ติดตั้งผ่าน เว็บไซต์ของ Urjtag.
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
- ตัวอย่างสำหรับ OpenOCD:
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
- รักษาความปลอดภัยการเชื่อมต่อ: ใช้สายสั้นและเชื่อถือได้เพื่อลดเสียงรบกวน
- ตรวจสอบ pinout: ตรวจสอบการเชื่อมต่อ PIN JTAG อีกครั้งเพื่อหลีกเลี่ยงการทำลายอุปกรณ์
- เฟิร์มแวร์สำรอง: สำรองเฟิร์มแวร์ดั้งเดิมเสมอก่อนที่จะทำการเปลี่ยนแปลง
- ใช้ซอฟต์แวร์ที่ถูกต้อง: ตรวจสอบให้แน่ใจว่าเครื่องมือที่คุณใช้รองรับอุปกรณ์เป้าหมาย
- ตรวจสอบแรงดันไฟฟ้า: ตรวจสอบให้แน่ใจว่าอุปกรณ์เป้าหมายทำงานในระดับแรงดันไฟฟ้าที่ถูกต้อง
แอปพลิเคชันของ JTAG
- การดีบักเฟิร์มแวร์และซอฟต์แวร์
- กระพริบเฟิร์มแวร์ใหม่หรือ bootloaders
- Extracting data from memory for analysis
- Diagnosing PCB manufacturing defects
- ฮาร์ดแวร์วิศวกรรมย้อนกลับ
การแก้ไขปัญหา
-
ไม่พบอุปกรณ์:
- Verify the wiring and pinout.
- Ensure the target device is powered on.
- ตรวจสอบระดับแรงดันไฟฟ้าเพื่อความเข้ากันได้
-
ข้อผิดพลาด JTAG:
- ตรวจสอบให้แน่ใจว่ามีการใช้ไฟล์การกำหนดค่าที่ถูกต้อง
- ลองลดความเร็วนาฬิกา JTAG หากการสื่อสารล้มเหลว
-
ปัญหาการอนุญาต:
- บน Linux ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ที่เหมาะสมในการเข้าถึงอุปกรณ์ USB (ใช้งาน
sudo
หรือกำหนดค่าudev
กฎ).
- บน Linux ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ที่เหมาะสมในการเข้าถึงอุปกรณ์ USB (ใช้งาน
บทสรุป
JTAG เป็นเครื่องมือที่มีค่าสำหรับการดีบักและชิปการเขียนโปรแกรมในระดับต่ำ โดยการทำความเข้าใจพื้นฐานของฮาร์ดแวร์และซอฟต์แวร์ JTAG คุณสามารถอ่านหน่วยความจำชิปเฟิร์มแวร์ดีบักและทำการสแกนขอบเขต ทดลองใช้เครื่องมือและการกำหนดค่าที่แตกต่างกันเพื่อใช้ JTAG อย่างเต็มที่ในโครงการของคุณ!