[閒聊] JTAG 原理

看板ASM (組合語言)作者 (當憲兵是我一輩子的恥辱)時間15年前 (2009/09/30 22:37), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
這篇文章在講解 JTAG 的原理, 是一篇很枯燥乏味的文章 建議按左離開 XD ---- 現代 IC 在設計時, 會在輸出入的地方加入 flip flop 這個 Flip flop 可以用來阻擋IC輸出/外界輸入 進而做到, 隔離 IC 的功能 這裡講的 IC 不一定是整顆包起來的晶片, 也可以是 IC 內部的 module 運用加 flip flop 的方法, 可以把一整個 module 輸出入隔離開來... ---- 這些 flip flop 還可以串起來, 一個串一個, 這樣做用途多多 串起來的 flip flop 叫做 shift-register 這個結構很有意思, 只要灌 clock 給這堆 flip flop shift-register 的資料就可以被敲出來 反過來說, 我們想要的資料也可以敲進去 這個結構有個專業的名詞: scan chain scan chain可以拿來測試 IC/module 舉例來講, 我們可以把輸入灌到某條 scan-chain 這條 scan-chain 正好是 IC 的輸入, 看到了嗎, 我們可以自行決定輸入 反過來講, scan-chain也可以把 IC 的輸出敲出來 所以剛剛打進去的輸入, 產生的輸出, 就可以用這招再敲出來 !! ---- 以 ARM7 的 CPU 來講, CPU會存取的 data bus 上, 正好就有條 scan-chain 經過 如果我們想知道 register R0 的內容, 可以把下面這道指令塞到 scan chain 上... str R0, [R10] 這個指令會把 R0 的內容寫到 R10 指向的記憶體 CPU 會去執行這道指令, 但在 debug 模式時, CPU 被隔離, 沒辦法存取到記憶體 上面這道指令只為了讓 R0 的內容出現在 scan-chain 上 看CPU 的結構, R0 可能要一兩個 cycle 以後才會出現 這時候可以再塞一些 NOP 指令給 CPU 泡茶聊天... 等資料出現在 scan chain 時, 再敲 clock 就可以讀出 register R0 內容了 這個方法真的是, 很巧妙啊 !! 類似的技巧可以組合出, 讀寫記憶體, 讀寫 CPU 暫存器 ---- 實際看 JTAG 的文件, 還會包涵一張 state machine 的圖 除非有打算做 ICE, 不然知道 JTAG 的根本原理是用 scan-chain 做壞事就可以了 XD ARM7 的文件有提到, 他的 scan chain 位在 CPU 哪裡 以及嵌入的 debug unit 怎麼用 scan chain 操作 瞭解 ICE 的根本原理, 其實很有意思的 :) -- 非專業讀書心得, 有錯請更正, 感謝 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.160.84.2

10/25 20:44, , 1F
推一個
10/25 20:44, 1F

03/11 20:28, , 2F
03/11 20:28, 2F
文章代碼(AID): #1AmsqLcQ (ASM)
文章代碼(AID): #1AmsqLcQ (ASM)