Linky pour 84+/84+SE/84+CSE - programmation USB...
Posted: 06 May 2013, 19:28
Brandon Wilson, qu'on ne présente plus, s'est mis à réécrire une application permettant les communications USB sur 84+, 84+SE et même 84+CSE
The famous Brandon Wilson started rewriting an application for USB communications on the 84+, 84+SE and even 84+CSE
La version d'origine d'un framework de communication USB pour 84+/84+SE s'appelle usb8x. Elle a été réalisée il y a des années, quand on avait moins d'infos sur le contrôleur USB.
The original version of a USB communication framework for 84+/84+SE is called usb8x. It was made years ago, when we had less information about the USB controller.
Téléchargement des binaires: http://brandonw.net/calcstuff/Linky.zip
Code source sur Github: http://github.com/brandonlw/Linky
Linky est le petit nom d'une version 89T d'usb8x que Brandon avait créée il y a une paire d'années. J'y avais contribué le code de mapping clavier interne <-> clavier USB HID, et que j'avais utilisée avec succès sur une board de développement ARM dépourvue de port USB A femelle pleine taille.
Linky is the nickname of a 89T version of usb8x, which Brandon created about two years ago. I had contributed the internal keyboard <-> USB HID keyboard mapping code, and I had successfully used it on an embedded ARM development board without full-size female USB A port.
BrandonW prévoit d'implémenter les modes hôte et périphérique USB, en le faisant de façon plus correcte que le vilain ensemble d'attentes codées en dur qu'est la stack USB de l'OS de TI, car il pense qu'on a assez d'infos sur le contrôleur USB nommé MUSBFDRC pour faire les choses comme il faudrait.
The plan is to support both USB host and peripheral mode, implementing USB "correctly" instead of the hard-coded-delay mess that is the TI-OS implementation. I think we understand enough now about the MUSBFDRC controller that we can make this a reality.
Le mode hôte de Linky devra corriger certaines vieilles limitations d'usb8x (comme l'envoi de certains gros paquets), aussi bien que permettre la gestion des hubs et de plusieurs drivers. Le but est que non seulement il soit possible de connecter plus d'un périphérique à la fois, mais encore plus intéressant, que deux programmes / applications différentes puissent communiquer en même temps avec des périphériques différents: àa permettrait de connecter à la fois un clavier HID et un stockage de masse, un clavier et une souris, etc.
Host mode will address some longstanding issues with usb8x (like sending certain large packets) as well as hub and multiple driver support - not only will you be able to attach more than one USB peripheral at the same time, but two different programs/applications can communicate to each at the same time. That way you can do things like hook up both a keyboard and flash drive, or keyboard and mouse, etc.
Brandon est au courant que ses buts sont ambitieux (NdT: il a accompli tant d'autres choses ambitieuses !) et que le chemin est encore long, mais pour commencer, il a déjà fait suffisamment de code pour faire se comporter la calculatrice comme un périphérique standard Device Firmware Upgrade, ce qui permet de lire et d'écrire des images brutes en Flash, en utilisant un outil standard et portable (Windows, Linux, OS X et certainement d'autres) en ligne de commande nommé "dfu-util". Pour autant que BrandonW sache (NdT: idem pour moi), les dumps et reflashages n'avaient jamais été faits de cette façon là sur la famille 84+ auparavant.
It's a little ambitious, I know, and it's far from done, but as a teaser, I've added a "DFU mode" tool that makes the calculator show up as a DFU (Device Firmware Upgrade) device, so you can read and write raw images to the flash chip using a standard and portable (Windows, Linux, OS X and certainly others) command-line utility called "dfu-util". As far as BrandonW (translator's note: and I) are aware, dumps and reflashes were never done before that way on the 84+ family.
En mode "téléchargement" (reflashage), Linky se copie en RAM, et tourne sans interruptions, sans faire aucune référence à l'OS, de façon à pouvoir réécrire l'OS (et la mémoire certificats, si l'utilisateur le demande) à sa guise.
For "download" (flashing) mode, Linky copies itself into RAM and runs interrupt-less and OS-less so it's free to overwrite the OS (and certificate, if you specify it).
Pour dumper la ROM complète:
1. Dans le menu Tools de LINKYDRV, sélectionner 1) DFU ROM Dump, puis choisir d'inclure ou pas la zone des certificats. L'option est là au cas où l'inclure ne fonctionnerait pas (par exemple à cause d'un exploit de déverrouillage qui aurait été corrigé).
2. Sur Windows, télécharger et lancer l'utilitaire "zadig" pour installer un driver WinUSB pour le nouveau périphérique qui est apparu (NdT: vilaine limitation de Windows).
3. Utiliser l'utilitaire en ligne de commande dfu-util: dfu-util -U dump.rom
1. Dans le menu Tools de LINKYDRV, sélectionner 1) DFU ROM Dump, puis choisir d'inclure ou pas la zone des certificats. L'option est là au cas où l'inclure ne fonctionnerait pas (par exemple à cause d'un exploit de déverrouillage qui aurait été corrigé).
2. Sur Windows, télécharger et lancer l'utilitaire "zadig" pour installer un driver WinUSB pour le nouveau périphérique qui est apparu (NdT: vilaine limitation de Windows).
3. Utiliser l'utilitaire en ligne de commande dfu-util: dfu-util -U dump.rom
To dump the ROM:
1. In LINKYDRV's Tools menu, select 1) DFU ROM Dump, then choose whether to include the certificate or not. The option is there in case "with" doesn't work (because of a patched unlock exploit or something).
2. If on Windows, download and run the "zadig" utility to install a WinUSB driver for the new device that's shown up (translator's note: ugly Windows limitation).
3. Run the dfu-util command line utility with: dfu-util -U dump.rom
1. In LINKYDRV's Tools menu, select 1) DFU ROM Dump, then choose whether to include the certificate or not. The option is there in case "with" doesn't work (because of a patched unlock exploit or something).
2. If on Windows, download and run the "zadig" utility to install a WinUSB driver for the new device that's shown up (translator's note: ugly Windows limitation).
3. Run the dfu-util command line utility with: dfu-util -U dump.rom
Pour reflasher la ROM complète:
1. Dans le menu Tools de LINKYDRV, sélectionner 2) DFU ROM Write, puis choisir d'écrire la zone des certificats ou d'ignorer les données certificat du dump à reflasher.
2. Utiliser l'utilitaire en ligne de commande dfu-util: dfu-util -D dump.rom
1. Dans le menu Tools de LINKYDRV, sélectionner 2) DFU ROM Write, puis choisir d'écrire la zone des certificats ou d'ignorer les données certificat du dump à reflasher.
2. Utiliser l'utilitaire en ligne de commande dfu-util: dfu-util -D dump.rom
To flash a ROM:
1. In LINKYDRV's Tools menu, select 2) DFU ROM Write, and then choose to either write the certificate or ignore it.
2. Run dfu-util from the command line with: dfu-util -D dump.rom
1. In LINKYDRV's Tools menu, select 2) DFU ROM Write, and then choose to either write the certificate or ignore it.
2. Run dfu-util from the command line with: dfu-util -D dump.rom
Note importante: ne choisissez surtout pas de réécrire la zone des certificats quand vous reflashez, à moins d'être vraiment sûr que le fichier à reflasher contient un contenu valide pour la zone des certificats !
Important note: do not choose to write the certificate when flashing the ROM unless you are really sure the file you're flashing includes a valid certificate.
Comme indiqué plus haut, il reste beaucoup de travail, mais c'est le début d'une implémentation "propre" d'un hook d'activité USB flexible (ou bien d'une fonction de polling sans interruptions et sans OS, si vous en avez besoin). Brandon élargira le mode périphérique quand il portera davantage de "drivers", mais pour l'instant, il faut se concentrer sur le mode hôte.
As mentioned above, it still needs a lot of work, but it's the start of a "clean" implementation of a flexible USB activity hook (or interrupt- and OS-less polling function, if you need it). Brandon will flesh out peripheral mode more once he starts porting more "drivers" to it, but for now it's time to focus on host mode.
Les lecteurs attentifs auront remarqué que Linky est une FlashApp tierce, pour 84+CSE, et qu'elle se transfère directement à la calculatrice avec les logiciels de communication standards, ce qui veut dire quelque chose à propos des clés RSA de signature / validation.
Astute readers will have noticed that Linky is a third-party FlashApp, for the 84+CSE, and that it can be directly transfered to the calculator with standard linking software, which means something about the signing / validation RSA keys.
Source de l'info: IRC et un peu plus tard, http://www.cemetech.net/forum/viewtopic.php?t=9146 .