JTAG คืออะไร


30

ฉันค่อนข้างใหม่สำหรับระบบฝังตัวและฉันก็ยังเห็นคำนี้ใช้อยู่ตลอดเวลา แต่ฉันก็ไม่เข้าใจว่ามันคืออะไร การค้นหาออนไลน์อย่างรวดเร็วให้หน้าวิกิพีเดียนี้: https://en.wikipedia.org/wiki/Joint_Test_Action_Groupซึ่งอธิบายว่าเป็นโปรโตคอลบางอย่างสำหรับการดีบัก แต่ในบริบทอื่น ๆ มันใช้เหมือนจะสามารถเขียนโปรแกรมหน่วยความจำของชิปเช่นโปรแกรมเมอร์ มันคืออะไร?


4
มีอัญมณีที่มีประโยชน์ซ่อนอยู่ในคำถามนี้
เดวิด

2
ฉันให้ +1 กับ dwelch นอกจากนี้บางครั้ง JTAG ถูกใช้ผิดในความหมายของคำกริยา, โดยทั่วไป, "เพื่อดีบัก / ทดสอบ" สิ่ง บุคคล "JTAG'ing some" อาจใช้โปรโตคอลที่แตกต่างกันซึ่งผู้ผลิตอุปกรณ์ซ้อนทับกับหมุด JTAG ทางกายภาพ (เช่น SWD) คุณสามารถ SWD หรือ JTAG แต่ไม่ใช่ทั้งสองอย่าง แม้ว่าจะไม่มีใคร SWD's ("swoods"?) อุปกรณ์ของพวกเขา
Jon

ใช่คุณสามารถโปรแกรมกับ JTAG
Snoop

คำตอบ:


21

มันเหมือนกับ USB, SPI, I2C และ "บัส" อื่น ๆ และมีจำนวนการใช้งานที่นิยมไม่ จำกัด :

  • โดยเฉพาะอย่างยิ่งหนึ่งในการทดสอบซิลิคอนก่อนที่จะลงทุนในแต่ละส่วนมากเกินไปตัวอย่างเช่นในขณะที่ชิปยังคงอยู่บนเวเฟอร์คุณสามารถตรวจสอบส่วนใหญ่ได้ ที่ได้รับการทำแผ่นเวเฟอร์สามารถทำให้เกิดความเสียหายได้ดังนั้นคุณต้องการทดสอบอีกครั้ง แต่บางทีคุณอาจทำอย่างนั้นก่อนที่จะบรรจุ

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

  • เนื่องจากชิปมีพินเฉพาะเหล่านี้อยู่แล้วทำไมถึงไม่สำหรับโปรเซสเซอร์ใช้อินเทอร์เฟซเดียวกันกับวิธีพูดคุยกับชิพดีบั๊กเกอร์ (OCD) ออกแบบสิ่งต่างๆลงในโปรเซสเซอร์และอนุญาตให้พูดคุยผ่าน jtag

มันเป็นวิธีการแบบทั่วไปที่ช่วยให้คุณสามารถแยกสิ่งต่าง ๆ บนสายโซ่ที่คุณต้องการส่งชุดของบิตไปยังหรือรับชุดของบิตจากในแบบที่แต่ละสิ่งที่คุณต้องการที่จะพูดคุยสามารถออกแบบสำหรับตัวเลขต่างๆ ของบิตจากจำนวนน้อยไปเป็นจำนวนมาก สำหรับผู้ดีบั๊กคุณจะต้องเขียนหรืออ่านจากขนาดที่ลงทะเบียนไว้ในชิปของคุณ - อาจเป็น 16 บิตหรือ 32 บิต แต่สำหรับซิลิกอนหรือบอร์ดทดสอบโซ่สแกนของคุณอาจมีหลายสิบบิต แต่ละสิ่งที่คุณอยู่อาจแตกต่างกันในขนาดถ้าคุณต้องการจากสิ่งอื่นใดทำให้เป็นรถอเนกประสงค์ที่มีหมุดเล็ก ๆ จำนวนมากซึ่งน่าสนใจสำหรับกรณีการใช้งานประเภทนี้

บางทีอาจเป็นเพราะความนิยมในการแก้ไขข้อบกพร่องของซอฟต์แวร์ตอนนี้พวกเขามีโซลูชันพินสองตัวเพื่อบันทึกจำนวนพินสำหรับไมโครคอนโทรลเลอร์


มีแง่มุมทางเทคนิคของ JTAG ที่ให้ประโยชน์กับการใช้งานเหล่านี้หรือว่าเป็นเพราะเหตุผลทางประวัติศาสตร์?
โอเว่น

อ่านบทความวิกิพีเดียกันดีกว่า ความคิดเห็นของฉันเป็นเพราะมีอยู่แล้วและมีสายในบอร์ดและชิปและเพราะมันมีความยืดหยุ่นเพียงพอที่จะรองรับการใช้งานอื่น ๆ และอย่างน้อยบางคนมีเครื่องมือในสถานที่บางคนต้องบอกว่าทำไมไม่ใช้สิ่งเหล่านี้ ฉันคิดว่ามันมีความยืดหยุ่นกับการนับพินทำให้มันน่าสนใจ มีและยังคงเป็นโซลูชันอื่น ๆ สำหรับ debuggers หรือในการเขียนโปรแกรมวงจร แต่ต้องขอบคุณคำแนะนำ FTDI MPSSE และความสำเร็จของ FTDI โดยทั่วไปกับ USB ทุกอย่างเครื่องมือ jtag ราคาไม่แพงมีอยู่ในวงกว้าง
old_timer

10

JTAG เดิมเป็นอินเตอร์เฟสที่ใช้สำหรับทดสอบ PCB หลังจากประกอบ สาย IO บนชิปสามารถควบคุมและอ่านผ่านพอร์ต JTAG เพื่อให้สามารถทำการทดสอบบอร์ดได้ หลังจากนั้นมันก็เริ่มที่จะใช้เป็นโปรแกรมและอินเตอร์เฟซการแก้ปัญหา ฟังก์ชั่นที่มีอยู่ใน JTAG นั้นขึ้นอยู่กับ IC เฉพาะที่คุณติดต่อด้วย

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


9

JTAG ค่อนข้างเป็นคำที่แปลก ในการเริ่มต้นคำศัพท์สามารถระบุตัวเชื่อมต่อและโปรโตคอลเฉพาะซึ่งประกอบด้วยสัญญาณนาฬิกา (TCK), โหมดเลือก (TMS) และข้อมูลเข้า / ออก (TDI / TDO) ซึ่งประกอบด้วยเครือข่ายของอุปกรณ์ที่ TDO ของอุปกรณ์แต่ละตัวเชื่อมต่อกับ TDI ของอุปกรณ์ถัดไปในสายการสแกนที่เรียกว่า TMS จะใช้ในการใส่อุปกรณ์ทั้งหมดพร้อมกันลงในโหมดต่างๆ

อุปกรณ์ในห่วงโซ่การสแกนมักจะเชื่อมต่อเป็นหนึ่งในการลงทะเบียนการเปลี่ยนแปลงขนาดใหญ่ประกอบด้วยการลงทะเบียนในแต่ละอุปกรณ์ เมื่ออุปกรณ์อยู่ในสถานะ SHIFT_IR หรือ SHIFT_DR อุปกรณ์เหล่านี้จะเชื่อมต่อกับเชนการสแกนหนึ่งในสองของการลงทะเบียนชั่วคราว: การลงทะเบียนคำสั่งและการลงทะเบียนข้อมูล

เมื่อมีการเลื่อนค่าโหมด UPDATE_IR หรือ UPDATE_DR สามารถเปิดใช้งานได้โดยการตั้งค่า TMS อย่างเหมาะสมในขณะที่สลับ TCK ณ จุดนี้ค่าที่เลื่อนไปที่รีจิสเตอร์ "มีผลบังคับใช้" ตัวอย่างเช่นการเปลี่ยนลำดับต่างๆไปยัง IR ของ FPGA และการเปลี่ยนเป็น UPDATE_IR จะทำให้ FPGA เข้าสู่โหมดต่างๆเช่นการกำหนดค่าการอ่านกลับรันไทม์ปกติหรือเข้าถึงการลงทะเบียนผู้ใช้เฉพาะ

สถานะการดักจับสามารถใช้ในการ "อ่าน" ค่าจากอุปกรณ์และวางลงใน IR หรือ DR เพื่อเลื่อนออกจาก TDO และโปรแกรมเมอร์ JTAG อ่านในท้ายที่สุด


4

JTAG กำหนดโปรโตคอลอนุกรมและคำสั่งบางอย่างเพื่อให้สามารถเข้าถึงการลงทะเบียนภายในภายในไอซีที่ซับซ้อน สิ่งนี้ทำให้ผู้ทดสอบได้รับความสามารถในการสังเกตและการควบคุมในวิธีมาตรฐานโดยใช้พินน้อย

การใช้งานเดิมมีไว้สำหรับ 'การสแกนขอบเขต' ซึ่งสามารถอ่านและขับเคลื่อนหมุด I / O ทั้งหมดโดยการลงทะเบียนกะขนาดใหญ่ที่วนชิป อย่างไรก็ตามมีการเพิ่มอย่างรวดเร็วเพื่อเพิ่มการลงทะเบียนกะเพิ่มเติมเพื่อเข้าถึง internals ของชิปรวมถึงความทรงจำ

คุณแทบจะไม่หลงทาง JTAG การเข้าถึงมักจะผ่านทางห้องสมุดไดรเวอร์ที่ผู้ผลิต IC จัดทำและใช้โดยระบบทดสอบและอะแดปเตอร์เข้าถึงการทดสอบ


ดังนั้นชิปจึงจำเป็นต้องสนับสนุน JTAG ทั้งทางฮาร์ดแวร์และซอฟต์แวร์?
UnTraDe

@ UnTraDe No ชิปรองรับ JTAG ในฮาร์ดแวร์และอาจอยู่ในซอฟต์แวร์ (เช่น FPGA อาจเปิดเผยอินเตอร์เฟสบางส่วนระหว่าง JTAG และการออกแบบผู้ใช้) แต่ไม่จำเป็นต้องมีซอฟต์แวร์รองรับบนชิป เครื่องมือที่ใช้ในการโต้ตอบกับอุปกรณ์ผ่าน JTAG จะมีทั้งซอฟต์แวร์และฮาร์ดแวร์สนับสนุน (ซอฟต์แวร์บนคอมพิวเตอร์และฮาร์ดแวร์ในแง่ของโปรแกรมเมอร์ JTAG ที่ต่ออยู่กับคอมพิวเตอร์เครื่องนั้น)
ζ--

3

มีความหมายของ JTAG และ JTAG คืออะไร ตามที่คนอื่น ๆ ได้ชี้ให้เห็น JTAG 'คือ' อินเตอร์เฟสบัสมาตรฐานอุตสาหกรรมสำหรับการทดสอบการผลิตเช่นเดียวกับในJ oint T est A ction G roup

JTAG หมายถึงอะไรสำหรับผู้พัฒนาซอฟต์แวร์ฝังตัวคืออินเทอร์เฟซการตรวจแก้จุดบกพร่องบน SoC / ไมโครโปรเซสเซอร์สำหรับการดีบักภายนอกของซอฟต์แวร์ฝังตัวที่ทำงานอยู่บนชิป เกือบทุก CPU / SoC ในตลาดใช้อินเทอร์เฟซ JTAG ไม่เพียง แต่สำหรับการทดสอบการผลิต แต่สำหรับการสนับสนุนการดีบักซอฟต์แวร์ คุณจะพบอินเตอร์เฟส JTAG ในทุกสิ่งตั้งแต่เซิร์ฟเวอร์ระดับ x86 CPU ไปจนถึงเราเตอร์ไร้สายในบ้านราคา $ 50 ด้วยฮาร์ดแวร์ส่วนต่อประสานที่เหมาะสมและซอฟต์แวร์ที่ถูกต้องส่วนต่อประสานเหล่านี้จะให้ความสามารถในการอ่าน / เขียนหน่วยความจำตั้งจุดพักและรหัสขั้นตอนเดียว

กุญแจสำคัญคือการได้รับฮาร์ดแวร์และซอฟต์แวร์ที่เหมาะสม แม้ว่าอินเตอร์เฟส JTAG พื้นฐานจะเป็นมาตรฐาน แต่สิ่งอำนวยความสะดวกในการดีบักซอฟต์แวร์เฉพาะที่มีในอุปกรณ์อาจไม่ใช่ JTAG เหมือน TCP / IP มีอยู่ตรงกลางแอปพลิเคชัน คุณต้องการเลเยอร์ทางกายภาพที่ถูกต้องในการสื่อสารกับอุปกรณ์ (เช่นคุณหมายถึงสิ่งนี้ใช้ 10-Base-2?!?!?) และคุณต้องการซอฟต์แวร์แอปพลิเคชันที่ถูกต้องด้านบน (คุณหมายถึงอะไรฉันต้องการโกเฟอร์ ลูกค้า?!?!?!) อย่างไรก็ตามความแข็งแกร่งของระบบนิเวศ ARM ได้นำไปสู่ระดับมาตรฐานที่นั่น (ดู OpenOCD)

คุณยังถามเกี่ยวกับการใช้ JTAG เพื่อโปรแกรมแฟลช ใช่ซอฟต์แวร์บางตัวใช้เพื่อจุดประสงค์นั้นเช่นกัน SoC อาจให้ JTAG อำนวยความสะดวกในการอ่าน / เขียนจากช่องว่างที่อยู่หน่วยความจำของ CPU มันอาจให้การเข้าถึงโดยตรงไปยังตัวควบคุมแฟลชและอย่างน้อยที่สุด JTAG ให้การเข้าถึงระดับ I / O ต่ำในหมุด I / O บนขอบของชิป วัตถุประสงค์ดั้งเดิมของ JTAG เพื่อเปิดใช้งานการทดสอบความต่อเนื่องของการเชื่อมต่อระหว่างชิปกับชิประหว่างการทดสอบการผลิตเช่น 'JTAG ขอบเขตสแกน') สิ่งอำนวยความสะดวกใด ๆ เหล่านี้สามารถใช้โดยโปรแกรมเมอร์ที่ชาญฉลาดในการขับสัญญาณที่จำเป็นในการ reprogram ชิปแฟลชในกรณีที่อุปกรณ์ถูก 'ก่อ' โดยไม่ได้ตั้งใจ

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