1ère connexion JTAG fonctionnelle TI-Nspire ClickPad
Posted: 29 Jul 2018, 18:52
Dans un article précédent, nous découvrions la TI-Nspire TestBoard, carte se branchant sur le connecteur J04 des TI-Nspire ClickPad.
Nous avons pu vérifier que cette carte offrait :
La carte dispose aussi de deux connecteurs JTAG, J01 et J05.
Le J05 à 14 broches était pour la prise de contrôle du processeur MSP430 de la carte, comme confirmé dans notre dernier article.
Nous supposions que le J01 à 13 broches était quant à lui pour la prise de contrôle du processeur ARM de la calculatrice.
Aujourd'hui, continuons à explorer cette carte avec ce dernier connecteur. Pour cela, nous allons nous munir d'une autre interface JTAG, la TMS320-JTAG-USB XDS100-V2 de chez Olimex conseillée par Lionel Debroux et que voici ci-contre.
La boîte contient donc :
Ne reste plus qu'à assembler le tout, tâche sans danger du côté interface grâce aux nombreux détrompeurs.
Par contre, le connecteur J01 de la carte TI-Nspire TestBoard n'a que le détrompeur niveau brochage. Dans le cas d'utilisation d'une nappe générique, il faut donc bien faire attention au sens de connexion, avec ici le fil rouge du côté des broches numérotées 1 et 2.
Une fois les pilotes FTDI installés, voyons ce que OpenOCD nous détecte :
OpenOCD nous trouve donc une puce 0x0792606d de chez LSI Logic (0x036), ce qui semble correct.
Nous voici donc dotés de suffisamment d'information pour compléter correctement le fichier de configuration :
Voyons donc enfin ce que cela donne :
OpenOCD semble cette fois-ci bien prendre le contrôle du processeur, l'écran de la calculatrice se figeant et cette dernière cessant de répondre aux touches clavier.
A suivre...
Nous avons pu vérifier que cette carte offrait :
- un bouton reset pour redémarrer la calculatrice sans besoin de la retouner
- l'accès en lecture et écriture au port série de la calculatrice via un connecteur standard DB9
La carte dispose aussi de deux connecteurs JTAG, J01 et J05.
Le J05 à 14 broches était pour la prise de contrôle du processeur MSP430 de la carte, comme confirmé dans notre dernier article.
Nous supposions que le J01 à 13 broches était quant à lui pour la prise de contrôle du processeur ARM de la calculatrice.
Aujourd'hui, continuons à explorer cette carte avec ce dernier connecteur. Pour cela, nous allons nous munir d'une autre interface JTAG, la TMS320-JTAG-USB XDS100-V2 de chez Olimex conseillée par Lionel Debroux et que voici ci-contre.
La boîte contient donc :
- l'interface JTAG avec :
- une prise USB-B femelle
- un connecteur JTAG mâle avec 2×10=20 broches et muni d'un détrompeur
- un voyant d'alimentation
- une nappe 2×10=20 fils femelle-femelle avec détrompeurs
- une nappe 2×7=14 fils femelle-femelle avec deux détrompeurs (niveau brochage et prise)
- un adaptateur 20 broches ↔ 14 broches
Ne reste plus qu'à assembler le tout, tâche sans danger du côté interface grâce aux nombreux détrompeurs.
Par contre, le connecteur J01 de la carte TI-Nspire TestBoard n'a que le détrompeur niveau brochage. Dans le cas d'utilisation d'une nappe générique, il faut donc bien faire attention au sens de connexion, avec ici le fil rouge du côté des broches numérotées 1 et 2.
Une fois les pilotes FTDI installés, voyons ce que OpenOCD nous détecte :
- Code: Select all
C:\Users\Andreani\Downloads\OpenOCD-20160901\bin>openocd.exe -f openocd.cfg
Open On-Chip Debugger 0.9.0 (2016-09-01) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
adapter speed: 500 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : clock speed 500 kHz
Warn : There are no enabled taps. AUTO PROBING MIGHT NOT WORK!!
Info : JTAG tap: auto0.tap tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -irlen 4 -expected-id 0x0792606d"
Warn : gdb services need one or more targets defined
Info : JTAG tap: auto0.tap tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
TapName Enabled IdCode Expected IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 auto0.tap Y 0x0792606d 0x00000000 4 0x01 0x03
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
OpenOCD nous trouve donc une puce 0x0792606d de chez LSI Logic (0x036), ce qui semble correct.
Nous voici donc dotés de suffisamment d'information pour compléter correctement le fichier de configuration :
- Code: Select all
#set MODE "nsp20"
#set MODE "nsp13"
#set MODE "ns1"
#set MODE "ns2"
set MODE "ns1ext"
#set MODE "ns2ext"
#set MODE "cx"
#set MODE "cxext"
#set MODE "nav"
#set MODE "none"
if { $MODE == "nav" } {
set ID1 "0x2b89102f"
set LEN1 "6"
set TYPE1 "jrc"
set NTAPS 1
set TAP "1"
set CHIP "cortex_a"
}
if { ($MODE == "nsp20") + ($MODE == "nsp13") } {
set ID1 "0x0692602f"
set LEN1 "4"
set TYPE1 "cpu"
set ID2 "0x00000000"
set LEN2 "2"
set TYPE2 "unknown"
set NTAPS 2
set TAP "1"
set CHIP "arm926ejs"
}
if { ($MODE == "ns1") + ($MODE == "ns1ext") } {
set ID1 "0x0792606d"
set LEN1 "4"
set NTAPS 1
set TYPE1 "cpu"
set TAP "1"
set CHIP "arm926ejs"
}
if { ($MODE == "ns2") + ($MODE == "ns2ext") } {
set ID1 "0xa065416d"
set LEN1 "29"
set NTAPS 1
set TYPE1 "unknown"
set TAP "0"
}
if { ($MODE == "cx") + ($MODE == "cxext") } {
set ID1 "0x1b900f0f"
set LEN1 "4"
set TYPE1 "bs"
set ID2 "0x07926f0f"
set LEN2 "4"
set TYPE2 "cpu"
set NTAPS 2
set TAP "2"
set CHIP "arm926ejs"
}
#set DRV "ft2232"
set DRV "ftdi"
set INT "xds100v2"
if { $MODE=="nsp20"} {
set INT "tinyh"
}
# *** DRIVERS ***
interface $DRV
# *** INTERFACES ***
if { $INT=="xds100v2" } {
set INT_DESC "Texas Instruments Inc.XDS100 Ver 2.0"
set INT_VID 0x0403
set INT_PID 0xa6d0
}
if { $INT=="tinyh" } {
set INT_DESC "Olimex OpenOCD JTAG ARM-USB-TINY-H"
set INT_VID 0x15ba
set INT_PID 0x002a
}
if { $DRV=="ft2232" } {
ft2232_device_desc "$INT_DESC"
ft2232_vid_pid $INT_VID $INT_PID
ft2232_layout $INT
}
if { $DRV=="ftdi"} {
ftdi_vid_pid $INT_VID $INT_PID
if { $INT=="xds100v2"} {
ftdi_layout_init 0x0038 0x597b
ftdi_layout_signal nTRST -data 0x0010
ftdi_layout_signal nSRST -oe 0x0100
ftdi_layout_signal EMU_EN -data 0x0020
ftdi_layout_signal EMU0 -oe 0x0040
ftdi_layout_signal EMU1 -oe 0x1000
ftdi_layout_signal PWR_RST -data 0x0800
ftdi_layout_signal LOOPBACK -data 0x4000
}
if { $INT=="tinyh"} {
ftdi_layout_init 0x0808 0x0a1b
ftdi_layout_signal nSRST -oe 0x0200
ftdi_layout_signal nTRST -data 0x0100 -oe 0x0100
ftdi_layout_signal LED -data 0x0800
}
transport select jtag
}
adapter_khz 500
#adapter_nsrst_delay 200
#jtag_ntrst_delay 200
#reset_config trst_only combined
#reset_config trst_and_srst combined
#reset_config trst_and_srst srst_pulls_trst
# *** TARGETS ***
if { $MODE != "none" } {
jtag newtap $MODE $TYPE1 -irlen $LEN1 -expected-id $ID1
if { $NTAPS > 1} {
jtag newtap $MODE $TYPE2 -irlen $LEN2 -expected-id $ID2
}
if { $TAP == "1" } {
target create $MODE.$TYPE1 $CHIP -chain-position $MODE.$TYPE1
}
if { $TAP == "2" } {
target create $MODE.$TYPE2 $CHIP -chain-position $MODE.$TYPE2
}
if { ($MODE == "ns1ext") + ($MODE == "ns2ext") + ($MODE == "cxext") } {
flash bank boot1 cfi 0 524288 1 1 $MODE.cpu
}
init
if { $DRV=="ftdi" && $INT=="xds100v2"} {
ftdi_set_signal PWR_RST 1
jtag arp_init
}
}
scan_chain
targets
if { $MODE != "none" } {
halt
}
Voyons donc enfin ce que cela donne :
- Code: Select all
C:\Users\Andreani\Downloads\OpenOCD-20160901\bin>openocd.exe -f openocd.cfg
Open On-Chip Debugger 0.9.0 (2016-09-01) [https://github.com/sysprogs/openocd]
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
adapter speed: 500 kHz
Error: libusb_open() failed with LIBUSB_ERROR_NOT_SUPPORTED
Info : clock speed 500 kHz
Info : JTAG tap: nsext.cpu tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
Info : Embedded ICE version 6
Info : nsext.cpu: hardware has 2 breakpoint/watchpoint units
Info : JTAG tap: nsext.cpu tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
TapName Enabled IdCode Expected IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 nsext.cpu Y 0x0792606d 0x0792606d 4 0x01 0x03
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* nsext.cpu arm926ejs little nsext.cpu running
nsext.cpu: target state: halted
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x600000d3 pc: 0xa40098f4
MMU: disabled, D-Cache: enabled, I-Cache: enabled
OpenOCD semble cette fois-ci bien prendre le contrôle du processeur, l'écran de la calculatrice se figeant et cette dernière cessant de répondre aux touches clavier.
A suivre...