How To JTAG Raspberry Pi 2
提供了一支程式, 在 linux 下設定 gpio 為 jtag。
Preparing Raspberry PI for JTAG Debugging
jtag 需要 table 1 的接腳以及 v3.3 和 ground, v3.3 和 RTCK 可以不用接。
JTAG pin | "ALT4" mode (011) | "ALT5" mode (010) |
TDI | GPIO26 | GPIO4 |
TDO | GPIO24 | GPIO5 |
TMS | GPIO27 | GPIO12 |
TCK | GPIO25 | GPIO13 |
RTCK | GPIO23 | GPIO6 |
TRST | GPIO22 | N/A |
我選用了 table 1 紅色部份的 gpio。
JTAG | RPi2 GPIO | gpio number |
VREF* | Pin 1 | 3.3 v |
nTRST | Pin 15 | gpio 22 |
GND | Pin 9 | GND |
TDI | Pin 7 | gpio 4 |
TMS | Pin 13 | gpio 27 |
TCK | Pin 22 | gpio 25 |
TDO | Pin 18 | gpio 24 |
figure 1. 樹莓派 2 gpio pin |
再來是設定 gpio, 把 gpio 設定成 jtag。
從這幾頁可以得知:
000 = GPIO Pin 9 is an input
001 = GPIO Pin 9 is an output
100 = GPIO Pin 9 takes alternate function 0
101 = GPIO Pin 9 takes alternate function 1
110 = GPIO Pin 9 takes alternate function 2
111 = GPIO Pin 9 takes alternate function 3
011 = GPIO Pin 9 takes alternate function 4
010 = GPIO Pin 9 takes alternate function 5
所以把相對應的 gpio 設定為 011 或是 010 即可。
gpio4 要設定為 010
gpio2X 要設定為 011
gpio4 在 GPFSEL0 (實體位址: 0x3f200000)
所以把 GPFSEL0 bit 12:14 設定為 010 即可。
gpio2X 在 GPFSEL2 (實體位址: 0x3f200008), 一樣的道理。
figure 2. jtag 硬體接線, 右上 3 pin 是 uart。 |
以下提供 u-boot 的設定指令:
mw.l 0x3f200008 0x61b6c0 mw.l 0x3f200000 0x2000
c 程式
void enable_jtag_pin() { volatile u32 gpfsel0 = 0x3f200000; volatile u32 gpfsel2 = 0x3f200008; *(volatile u32*)gpfsel0 = 0x2000; *(volatile u32*)gpfsel2 = 0x61b6c0; }
若成功的話, jtag 軟體可以看到以下畫面。
沒有留言:
張貼留言
使用 google 的 reCAPTCHA 驗證碼, 總算可以輕鬆留言了。
我實在受不了 spam 了, 又不想讓大家的眼睛花掉, 只好放棄匿名留言。這是沒辦法中的辦法了。留言的朋友需要有 google 帳號。