Page 1 of 1

1ère connexion JTAG fonctionnelle TI-Nspire TouchPad

Unread postPosted: 17 Mar 2018, 18:38
by critor
303272133033Les cartes mères de TI-Nspire CX commercialisées depuis la rentrée 2011 disposent d'un emplacement J04 vide.
Mais les modèles de développement et prototypes disposent à cet endroit d'un connecteur alors accessible via une fenêtre ouverte dans le boîtier, connecteur que nous avons déjà référencé.

Dans un article précédent nous réussissions justement notre première connexion JTAG avec une TI-Nspire CX, grâce à un modèle de développement importé d'Asie.

C'est exactement la même situation pour la génération originelle des TI-Nspire ClickPad sorties pour la rentrée 2007, à la différence que le connecteur en question est plus gros et donc non utilisable avec notre interface. :(

9320Dans un article précédent, nous découvrions enfin ce qu'il en était de la génération intermédiaire des TI-Nspire TouchPad sorties pour la rentrée 2010, grâce à un prototype une fois de plus importé d'Asie : elles utilisent exactement le même connecteur que les TI-Nspire CX, et les modèles en étant munis sont donc directement connectables à notre interface. :bj:


93409341Nous voici donc munis de notre Olimex TMS320-JTAG-USB XDS100 V2 et de la carte interface. Le prototype n'ayant pas ici de fenêtre prédécoupée dans le boîtier, la connexion nécessite de retirer totalement la face arrière.
Code: Select all
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: 0xb069316d (mfg: 0x0b6 (ZSP Corp.), part: 0x0693, ver: 0xb)
Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -irlen 29 -expected-id 0xb069316d"
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    29 0x01  0x03
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------

Et bingo, ça marche ! :bj:

OpenOCD nous détecte une puce 0x0792606d. On note donc que contrairement aux TI-Nspire CX, le fabricant de la puce ASIC sur les TI-Nspire TouchPad n'est donc pas TI (0x787), mais LSI Logic (0x036).

Il ne reste plus qu'à mettre à jour notre fichier de configuration OpenOCD en y rajoutant ça :
Code: Select all
#set DRV "ft2232"
set DRV "ftdi"

set INT "xds100v2"
#set INT "tinyh"

#set TRG "navigator"
#set TRG "viewscreen"
set TRG "nspire"
#set TRG "cx"
#set TRG "none"

# *** 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

# *** TARGETS ***
if { $TRG=="navigator" } {   # TI-Nspire Navigator access point
   jtag newtap nsnav jrc -irlen 6 -expected-id 0x2b89102f -ircapture 0x1 -irmask 0x3f
   target create nsnav.jrc cortex_a -chain-position nsnav.jrc
}
if { $TRG=="viewscreen" } {   # TI-Nspire+ calculator / TI-Nspire ViewScreen
   jtag newtap nspirep cpu -irlen 4 -expected-id 0x0692602f
   jtag newtap nspirep unknown -irlen 2 -expected-id 0x00000000 -ircapture 0x1 -irmask 0x3
   target create nspirep.cpu arm926ejs -endian little -chain-position nspirep.cpu
}
if { $TRG=="cx" } {   # TI-Nspire CX calculator
   jtag newtap nspire bs  -irlen 4 -expected-id 0x1b900f0f
   jtag newtap nspire cpu -irlen 4 -expected-id 0x07926f0f
   target create nspire.cpu arm926ejs -endian little -chain-position nspire.cpu
}
if { $TRG=="nspire" } {   # TI-Nspire calculator
   jtag newtap nspire cpu -irlen 4 -expected-id 0x0792606d
   target create nspire.cpu arm926ejs -endian little -chain-position nspire.cpu
}

init
if { $DRV=="ftdi"  && $INT=="xds100v2"} {
   ftdi_set_signal PWR_RST 1
   jtag arp_init
}

scan_chain
targets


Et en voici donc maintenant la sortie finale correcte :
Code: Select all
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: nspire.cpu tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
Info : Embedded ICE version 6
Info : nspire.cpu: hardware has 2 breakpoint/watchpoint units
Info : JTAG tap: nspire.cpu tap/device found: 0x0792606d (mfg: 0x036 (LSI Logic), part: 0x7926, ver: 0x0)
   TapName             Enabled  IdCode     Expected   IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 nspire.cpu             Y     0x0792606d 0x0792606d     4 0x01  0x03
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
0* nspire.cpu         arm926ejs  little nspire.cpu         running