π
<-

News 2025
May (3)
April (2)

News 2024
August (1)
July (1)
May (1)

News 2023
June (2)
April (1)
March (2)

News 2022
July (1)
June (4)
May (4)
April (4)
March (3)

News 2021
August (5)
July (1)
June (1)
May (3)
April (12)
March (4)

News 2020
August (1)
July (3)
June (2)
May (2)
April (7)
March (4)

News 2019
August (1)
June (1)
May (3)
April (7)
March (10)

News 2018
August (3)
July (7)
June (3)
May (8)
April (13)
March (5)

News 2017
August (1)
July (1)
May (10)
April (3)
March (4)

News 2016
August (12)
July (3)
June (8)
May (12)
April (7)
March (9)

News 2015
August (11)
July (7)
June (6)
May (10)
April (2)
March (6)

News 2014
October (12)
August (4)
July (3)
June (13)
May (14)
April (12)
March (15)

News 2013
October (30)
August (14)
July (8)
June (27)
May (12)
April (29)
March (19)
January (27)

News 2012
October (37)
August (40)
July (27)
June (19)
May (35)
April (34)
March (42)
January (46)

News 2011
October (22)
August (23)
July (14)
June (29)
May (44)
April (24)
March (27)

News 2010
August (6)
July (10)
June (4)
May (1)
April (2)
March (1)

News 2009
June (1)

Test TI-Nspire de développement avec Boot2 3.0.0

New postby critor » 26 Jul 2018, 19:40

Au printemps 2017, parrotgeek1 trouvait sur eBay un lot de TI-Nspire assez spéciales, achetées peu après par Brandon Wilson.

Pas de simples prototypes prêtés à des enseignants/testeurs avant la sortie, mais des machines utilisées par l'équipe de développement de Texas Instruments et ayant miraculeusement échappé à la destruction. :o

Cet été, le lot en question est en vacances chez nous, et nous allons donc en profiter pour lui arracher jusqu'à son dernier secret. :bat:

Aujourd'hui occupons-nous de la TI-Nspire en haut à droite sur la photo, reçue ici sans clavier.



Sommaire :
  1. Exploration visuelle
  2. Exploration logicielle
  3. Exploration série
  4. Exploration matérielle
  5. Dumping



1) Exploration visuelle :Go to top

97509749A première vue la calculatrice est d'apparence normale.

Mais au dos nous concentrons les surprises, avec :
  • un boîtier clairement non final, puisque contrairement à nombre d'autres prototypes les indications normalement gravées pour les bouton reset et de déverrouillage du clavier en sont absentes
  • une ouverture découpée dans le clavier et permettant l'accès au connecteur J04/JTAG absent des modèles de production
  • un numéro de série gravé en P3-ASIC, tronqué par l'ouverture en question
  • en conséquence un numéro de série manuscrit de remplacement : 2011002716
  • un autocollant en partie effacé :
    Prototype - Not for Sale
    This device has not been authorized as required by the rules of the Federal Communications Commission. This device is not, and may not be, offered for sale or lease, or sold or leased, until authorization is obtained.

Notons que l'ouverture laisse apparaître la référence de la carte mère, P2/P3 ASIC MB_MP_6440, soit la même que sur les cartes mère de production.
Il s'agit donc d'un modèle destiné à être utilisé par les ingénieurs Texas Instruments pour tester les nouvelles versions en cours de développement, avec donc ajout du connecteur J04/JTAG.



2) Exploration logicielle :Go to top

Cette machine démarrant en mode développement comme indiqué par le carré sur l'écran nous est venue sans OS, et nous allons bien évidemment la remettre en état pour Brandon.
Mais comble de malchance, elle a une protection anti-downgrade qui lui fait rejeter les OS de développemnt 1.1, 1.5 et 2.0 dont nous disposons.
Pas trop le choix donc, nous pouvons lui mettre les OS de développement 3.0.0.621 ou 3.0.0.1217 dumpés récemment.
Maigre compensation, ces OS ne feront pas empirer la version minimale d'OS installable, réglée à 1.1.99 pour chacun.

Une fois l'OS enfin installé et démarré, nous apprenons l'utilisation :
  • d'un Boot1 de développement 1.1.8916 déjà dumpé
  • d'un Boot2 de développement 3.0.0 encore jamais dumpé à ce jour, et qui serait donc intermédiaire entre la version de développement 2.0.0 du 13 octobre 2009 et la version de production 3.0.1.131 du 23 février 2011 :o



3) Exploration série :Go to top

9732Après avoir branché le port Dock/J01 de la calculatrice sur une interface adéquat, on peut récupérer la sortie du port série.

Le log de démarrage nous confirme l'utilisation :
  • du Boot1 1.1.8916 de développement du 23 avril 2007
  • d'un Boot2 3.00.DEVBUILD de développement du 17 septembre 2010
Boot Loader Stage 1 (1.1.8916)
Build: 2007/4/23, 23:29:51
Copyright (c) 2006, 2007 Texas Instruments Incorporated
Using developer keys

Last boot progress: 41098
Clocks: CPU = 90MHz AHB = 45MHz APB = 22MHz

Available system memory: 37292
Checking for NAND: NAND Flash ID: ST Micro NAND256R3A
PM is turning the device OFF
PM has turned the device ON
SDRAM memory test: Pass
Clearing SDRAM...Done.
Clearing SDRAM...Done.
Clearing SDRAM...Done.
Boot option: Normal

Loading DIAGS software...

Error reading/validating DIAGS image

Error loading DIAGS. Switching to BOOT2.

Loading BOOT2 software...

99%
BOOT1: loading complete (312 ticks), launching image.



Boot Loader Stage 2 (3.00.DEVBUILD)
Build: 2010/9/17, 14:13:38
Copyright (c) 2006, 2007, 2008 Texas Instruments Incorporated
Using developer keys

Clocks: CPU = 90MHz AHB = 15MHz APB = 7MHz
Checking for NAND: NAND Flash ID: ST Micro NAND256R3A


Initializing graphics subsystem.
Boot option: Normal


Initializing filesystem.
Datalight Reliance v2.10.1150
Copyright (c) 2003-2006 Datalight, Inc.
Datalight FlashFX Pro v3.00 Build 1358
Nucleus Edition for ARM9
Copyright (c) 1993-2006 Datalight, Inc.
Patents: US#5860082, US#6260156.
Filesystem ready.
Purging temporary files...
TI_OS_INSTALL_PRECHECK_OK (0)

Loading Operating System...

100%

BOOT2: loading complete (3206 ticks), launching image.




4) Exploration matérielle :Go to top

9751Enfin, ouvrons la bête pour lui extirper ses derniers secrets.
On confirme l'usage de la carte mère de production P2/P3 ASIC MB_MP_6440 ainsi que de la carte écran P1R2/P3_LB__MP_2440 qui va avec.

Outre la présence du connecteur J04/JTAG nous notons une autre modification apportée à la carte mère, avec l'ajout d'un fil qui proche de la puce Flash NOR SST 39WF400A, rendant ainsi son Boot1 reprogrammable.
Cette modification fut probablement nécessaire pour programmer le Boot1 1.1.8916 de développement dans la puce de cette carte mère de production.



5) Dumping :Go to top

Malheureusement, à cause de sa protection anti-downgrade il est impossible d'installer la version 1.1.9227 sur ce modèle, seul OS TI-Nspire de développement pour lequel une version Ndless est disponible. :(

En conséquence, il nous est impossible à ce jour de dumper le Boot2 3.0.0 de développement.

Le seul moyen que nous verrions serait d'adapter le jailbreak Ndless ou bien l'outil Nleash faisant sauter la protection anti-downgrade pour les OS installables sur ce modèle, soit à ce jour les OS 3.0.0.621 ou 3.0.0.1217.

1ère connexion JTAG fonctionnelle TI-Nspire ClickPad

New postby critor » 29 Jul 2018, 18:52

9735Dans 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 :
  • 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.

975497539752Aujourd'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

975797569755Ne 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. :warning:



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


1436OpenOCD 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


9758OpenOCD 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...

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1900 utilisateurs:
>1882 invités
>10 membres
>8 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/2025)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)