La nouvelle HP Prime en révision matérielle D est sortie pour la rentrée 2018, mais n'est pas encore disponible dans tous les pays et en passant toujours pas en France.
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 :
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 :
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
Mais suite au changement de processeur, tout ce qui avait été développé en langage machine et donc notamment ces firmwares tiers, ne fonctionne plus.
Tout est donc à recommencer intégralement.
Tout est donc à recommencer intégralement.
Une des méthodes qui a rendu possibles des tests qui ont à leur tour permis de tels développements sur les HP Prime G1, c'est la prise de contrôle du processeur via son interface JTAG.
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 :
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)
Problème sur HP Prime G2, la carte électronique ne présente apparemment rien de tel...
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.
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.
Mais jean-baptiste boric ne se décourage pas pour autant, et a eu l'idée de décoller l'écran de l'autre face de la carte, révélant ainsi plein de points de tests supplémentaires, ici clairement identifiés. Ceux qui nous intéressent ici sont préfixés en JT_, mais sont plus dispersés cette fois-ci :
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 :
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 :
- 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