Surnommée HP Prime G2, la machine succède aux révisions matérielles A à C et fait un véritable bond technologique en passant :
- d'un processeur ARM9/ARMv5 comme sur les TI-Nspire à un processeur i.MX 6ULL de chez NXP, un Cortex/ARMv7 comme chez NumWorks mais cadencé ici à 528 MHz !
- de 32Mio comme sur les TI-Nspire monochromes à 256Mio de SDRAM, et en DDR3 cette fois-ci !
- de 256Mio de mémoire Flash-NAND à 512Mio !
Sur les HP Prime G1, Lionel Debroux avait développé le tout premier firmware non officiel.
jean-baptiste boric s'était remarquablement illustré en prenant la suite avec :
- Rip'em, un autre firmware non officiel conçu à partir de rien et offrant quelques fonctionnalités
- ainsi qu'un portage du firmware NumWorks 1.6.0
Tout est donc à recommencer intégralement.
Une piste pour trouver le JTAG était de chercher sur la carte électronique un groupe d'au moins 5 points de tests, à identifier par la suite en :
- TCK
- TDI
- TDO
- TMS
- TRST ou/et RESET (peuvent partager le même point de test)
- VCC (alimentation - peut être partagée avec d'autres choses que le JTAG, et donc éloignée des points de test précédents)
- GND (masse - peut être partagée avec d'autres choses que le JTAG, et donc éloignée des points de test précédents)
- RTCK (optionnel)
Notons que les HP Prime G1 identifiaient clairement deux points de tests pour une communication série (UART), points que l'on ne retrouve pas non plus ici.
- JT_TCK
- JT_MOD
- JT_TMS
- JT_TDI
- JT_TDO
- JT_NTRST
- UART1_RX
- UART1_TX
- SD1_DATA0
- SD1_DATA1
- SD1_DATA2
- SD1_DATA3
- SD1_CMD
- SD1_CLK
Mais inversement, les avoir cette fois-ci cachés au dos et collé l'écran par-dessus les rend inaccessibles au commun des mortels ainsi qu'à nombre de bricoleurs du dimanche.
Laissons de côté la carte mémoire SD pour le moment, car même si elle est gérée matériellement il faudrait encore le code logiciel pour pouvoir l'exploiter, ce qui ne serait pas raisonnable pour de premières tentatives d'injection de code non officiel.
L'UART est quant à lui resté jusqu'à présent muet comme une carpe malgré les tentatives de jean-baptiste boric.
Par contre, la connexion via une interface JTAG FTDI MPSSE et OpenOCD est bien plus bavarde :
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
Le processeur est maintenant entièrement à nos ordres, et voici déjà jean-baptiste boric en train de jouer via les commandes ci-dessous avec la partie censée être la plus sécurisée de la machine, les diodes du mode examen :
- diode rouge :
- allumer :
set GPIO1_DR[7] = 0
- éteindre :
set GPIO1_DR[7] = 1
- allumer :
- diode verte :
- allumer :
set GPIO1_DR[2] = 0
- éteindre :
set GPIO1_DR[2] = 1
- allumer :
- diode bleue :
- allumer :
set GPIO1_DR[9] = 0
- éteindre :
set GPIO1_DR[9] = 1
- allumer :
Téléchargement : configuration JTAG OpenOCD HP Prime G2
Source : viewtopic.php?f=69&t=22127#p238167