Page 2 sur 4

Re: Hacking HP Prime G2

Message non luPosté: 30 Déc 2018, 20:12
de critor
jean-baptiste boric a écrit:Je me suis commandé un adaptateur JTAG, il devrait arriver la semaine prochaine.

Je pense qu'ils ont laissé le JTAG et l'UART au dos car le recovery du SoC permet de débricker la calculette par USB en toutes circonstances (d'où le test point pour le déclencher sur le côté exposé). Les HP Prime G1 n'avaient pas cette possibilité, donc une NAND corrompue au mauvais endroit nécessitait l'emploi du JTAG pour réparer la calculette, donc ces pads étaient exposés. Il est vrai que l'accès au JTAG pourrait aider à la création d'un PTT-killer dans l'absolu (même si ça reste un exercice a priori très difficile), mais je pencherais plutôt sur le fait que tous les test points situés à l'arrière ne sont pas utilisés une fois la carte électronique testée dans la chaîne de production (a contrario, les test points situés sur la face exposé sont probablement tous ou presque utiles pour au moins diagnostiquer des pannes matérielles).

Après tout, contrairement à la NumWorks cette calculette n'est pas conçue pour être bidouillée par l'utilisateur et HP doit disposer en interne de prototypes ou de cartes d'évaluation i.MX6ULL dédiées au développement s'ils ont besoin de sortir le JTAG pour faire du debug de problèmes obscurs sur cible.

Super ! :bj:

Tu as la référence de ce que tu penses être compatible ?
Et n'hésite pas à partager les fichiers de configuration lorsque ce sera au point. :)

Re: Hacking HP Prime G2

Message non luPosté: 30 Déc 2018, 20:53
de jean-baptiste boric
critor a écrit:
jean-baptiste boric a écrit:Je me suis commandé un adaptateur JTAG, il devrait arriver la semaine prochaine.

Super ! :bj:

Tu as la référence de ce que tu penses être compatible ?


J'ai pris un câble FTDI MPSSE (https://www.mouser.fr/ProductDetail/895-C232HM-EDHSL-0), principalement pour son format et son domaine d'application assez généraliste. Je ne m'inquiète pas trop pour la compatibilité, c'est du matériel assez classique et standard aussi bien du côté de l'adaptateur que du SoC (je suppose que la carte électronique est assez fortement inspiré de la carte d'évaluation de l'i.MX6ULL, mais j'ai besoin du JTAG pour à la fois explorer le matériel et développer un port U-Boot).

Re: Hacking HP Prime G2

Message non luPosté: 30 Déc 2018, 22:44
de Thom986
Passionnant à lire. Je regrette de n'y comprendre plus.

J'essaye de remédier à mon ignorance sur le sujet en 2019. Cela sera mon fil conducteur.

Re: Hacking HP Prime G2

Message non luPosté: 02 Jan 2019, 20:47
de jean-baptiste boric
Je n'arrive pas à établir une connexion JTAG avec la calculette, aussi bien avec le firmware officiel qu'avec le recovery du SoC... L'autoprobing échoue systématiquement. Je suis pourtant modérément sûr de mes soudures et de mes branchements après moult tentatives. Je peux toujours tenter d'uploader un payload maison à travers le recovery du SoC afin d'essayer d'écrire des choses sur l'UART, mais cette option ne m'enchante pas du tout...

Re: Hacking HP Prime G2

Message non luPosté: 02 Jan 2019, 20:53
de Lionel Debroux
Tu m'étonnes que ça ne t'enchante pas...
Le JTAG est parfois conditionné à l'état d'autres pins, mais c'est chiant pour les utilisateurs.

Re: Hacking HP Prime G2

Message non luPosté: 02 Jan 2019, 21:21
de critor
jean-baptiste boric a écrit:Je n'arrive pas à établir une connexion JTAG avec la calculette, aussi bien avec le firmware officiel qu'avec le recovery du SoC... L'autoprobing échoue systématiquement.


ça m'arrive régulièrement sur TI-Nspire, je n'arrive pas à trouver d'ordre des manipulations fiable à 100%, même si certains marchent plus souvent que d'autres.

Tente différemment :
  • initialisation HP Prime, puis branchement USB du JTAG, puis autoprobing
  • branchement USB du JTAG, puis initialisation HP Prime, puis autoprobing

Aussi pour l'initialisation HP Prime, tu peux tenter deux choses différentes :
  • le bouton reset
  • ou bien la coupure temporaire de l'alimentation
Sur TI-Nspire, un simple reset (redémarrage à chaud) ne fait pas toujours bon ménage avec le JTAG.

Re: Hacking HP Prime G2

Message non luPosté: 03 Jan 2019, 11:16
de jean-baptiste boric
Victoire!

Code: Tout sélectionner
boricj@debian-boricj:~$ openocd -f Documents/hp-prime/G2/c232hm.cfg -f Documents/hp-prime/G2/imx6ull.cfg
Open On-Chip Debugger 0.9.0 (2018-01-21-13:43)
Licensed under GNU GPL v2
For bug reports, read
        http://openocd.org/doc/doxygen/bugs.html
adapter speed: 100 kHz
Warn : imx6.sdma: nonstandard IR value
adapter speed: 1000 kHz
Info : clock speed 1000 kHz
Info : JTAG tap: imx6.dap tap/device found: 0x5ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x5)
Info : TAP imx6.sdma does not have IDCODE
Info : JTAG tap: imx6.sjc tap/device found: 0x088c101d (mfg: 0x00e, part: 0x88c1, ver: 0x0)
Info : imx6.cpu.0: hardware has 6 breakpoints, 4 watchpoints
Info : accepting 'gdb' connection on tcp/3333
Info : ttbcr 0ttbr0 900009ttbr1 4a3d30f0
Info : imx6.cpu.0 rev 5, partnum c07, arch f, variant 0, implementor 41
Info : number of cache level 2
Error: cache l2 present :not supported
Info : imx6.cpu.0 cluster 0 core 0 multi core
target state: halted
target halted in Thumb state due to debug-request, current mode: System
cpsr: 0x200000ff pc: 0x8035afd8
MMU: enabled, D-Cache: enabled, I-Cache: enabled

Je poste également mes fichiers de config (c'est ceux du kit d'évaluation de l'i.MX6ULL) ainsi qu'un hexdump de la plupart des registres du firmware officiel qui peuvent nous intéresser.

Re: Hacking HP Prime G2

Message non luPosté: 03 Jan 2019, 11:30
de critor
Bravo ! :bj:

Changer l'ordre des manips a suffi, ou bien tu as touché autre chose ?

On peut avoir une petite photo commémorative du branchement avec ça, ou il risque de casser si tu le bouges ? ;)

Re: Hacking HP Prime G2

Message non luPosté: 03 Jan 2019, 12:51
de Lionel Debroux
Bon travail :)

Re: Hacking HP Prime G2

Message non luPosté: 03 Jan 2019, 22:01
de jean-baptiste boric
C'était une mauvaise configuration de mon interface JTAG. L'avantage d'un câble MPSSE c'est qu'il est très polyvalent, l'inconvénient c'est que ce n'est pas forcément évident à configurer. J'essaierai de prendre une photo demain.

Je n'ai pas encore réussi à exécuter du code, mais je peux tripatouiller en mémoire. On commence modestement:
Code: Tout sélectionner
RED LED
* lit: set GPIO1_DR[7] = 0
* unlit: set GPIO1_DR[7] = 1

GREEN LED
* lit: set GPIO1_DR[2] = 0
* unlit: set GPIO1_DR[2] = 1

BLUE LED
* lit: set GPIO1_DR[9] = 0
* unlit: set GPIO1_DR[9] = 1