π
<-
Chat plein-écran
[^]

Challenge NumWorks++ | Flash chip hardware mod

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude zardam » 17 Oct 2017, 23:02

Pour l'écriture de la flash, je ne compte pas le faire depuis epsilon. Il y a trop de travail pour intégrer la gestion de l'USB (vu que la licence est plutôt restrictive). A la limite, ça peut se faire facilement avec l'UART interne mais ça oblige à plus de modifications sur la calculatrice. Du coup, je suis en train de tester un firmware dédié pour ça, mais j'aimerais l'exécuter directement depuis la RAM pour ne pas avoir à le flasher à chaque fois, mais sans trop de succès pour le moment.

Effectivement, le ST-Link est une bonne idée, mais c'est encore mieux avec ce firmware dessus : https://github.com/blacksphere/blackmagic C'est grosso modo ce que j'utilise actuellement.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude Lionel Debroux » 18 Oct 2017, 08:10

En effet, intégrer la gestion de l'USB est techniquement d'autant plus de travail qu'ils n'utilisent pas de RTOS... et légalement, leur licence est une fois de plus un frein au développement de leur machine...
Puisque tu as un debugger hardware, c'est une bonne idée d'exécuter le firmware de flashage depuis la RAM.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude Adriweb » 18 Oct 2017, 12:32

Jolie mention par NumWorks :)

Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.1%
 
Messages: 14605
Images: 1216
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude zardam » 20 Oct 2017, 00:27

Merci pour les puces de flash, elles sont bien arrivées !

J'ai un peu avancé ce soir sur la programmation de la flash dans la calculatrice. J'arrive enfin à ce que mon code s'exécute dans la RAM, et à faire fonctionner l'interface USB en émulation de port série. Je pense du coup implémenter le protocole serprog de flashrom (https://www.flashrom.org/Serprog). Cela permettrait de déporter les spécificités de chaque flash hors du firmware. Par contre, j'ai bien l'impression d'être un peu coincé par le contrôleur QSPI. Principalement, il ne me semble pas qu'il permettre d'écrire puis de lire un nombre arbitraire d'octets depuis le bus SPI, ce qui est nécessaire pour serprog...
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude Lionel Debroux » 20 Oct 2017, 08:07

Merci pour les puces de flash, elles sont bien arrivées !

Super :)

et à faire fonctionner l'interface USB en émulation de port série

Famille CDC, ou bien l'un des devices en classe vendor-specific: PL230x, CP210x, FTDI-232*, etc. ?

Cela permettrait de déporter les spécificités de chaque flash hors du firmware.

Pour démarrer, je vois un peu l'intérêt, mais d'un autre côté, vu que pour pouvoir gérer la Flash externe depuis le firmware standard, il faudra, un jour où la licence sera moins restrictive, implémenter dans celui-ci une gestion des queries CFI, get status, write word et block erase (qui seraient référencées par exemple en tant qu'entrées pointeur de fonction / pointeur de fonction membre dans un petit tableau de struct ou class), il ne me semblait pas majeur. Mais ce n'est pas moi qui fais le boulot :)

Principalement, il ne me semble pas qu'il permettre d'écrire puis de lire un nombre arbitraire d'octets depuis le bus SPI, ce qui est nécessaire pour serprog...

Oh. Si la valeur maximale atteignable de Q_WRNMAXLEN est inférieure à celle d'une page de Flash, c'est plus pénible à utiliser, en effet.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude jean-baptiste boric » 20 Oct 2017, 18:35

J'ai reçu les puces. Plus qu'à acquérir la relève du vénérable JBC 40S familial pour pouvoir s'en servir (et sévir).

Pour flasher les puces, vu que je suis feignant et que je n'ai pas envie de réinventer la roue je vais probablement récupérer un bootloader DFU open-source existant pour STM32F.

A plus long terme, j'ai réfléchi aux protocoles de communication USB, le MTP me semble tout indiqué pour le transfert de données. Il expose un système de fichiers purement logique à l'hôte, ne nécessite pas de drivers particuliers et a déjà fait ses preuves avec les smartphones.
Avatar de l’utilisateur
jean-baptiste boricPremium
Niveau 10: GR (Guide de Référence)
Niveau 10: GR (Guide de Référence)
Prochain niv.: 4.5%
 
Messages: 374
Inscription: 21 Déc 2015, 22:22
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
GitHub: boricj

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude zardam » 21 Oct 2017, 01:08

Pour flasher les puces, vu que je suis feignant et que je n'ai pas envie de réinventer la roue je vais probablement récupérer un bootloader DFU open-source existant pour STM32F.


Je n'en ai trouvé aucun dispo capable de flasher sur le bus QSPI. Bref, j'espère ne pas avoir réinventé la roue, mais voici le mien : https://github.com/zardam/qspi_loader

Testé avec la Windbond (merci encore !), un peu moins de 3 minutes pour programmer les 16 Mo de la flash.

Au passage, j'ai corrigé et adapté ma branche d'epsilon. Du coup la flash externe fonctionne parfaitement en mode "memory mapped" ! (je suis resté sur une fréquence assez basse car mon setup n'est pas top, ça décroche au dessus de 24 MHz, mais rien n’empêche d'aller plus haut normalement).

Attention par contre, ça risque de consommer de la batterie, rien n'est fait pour limiter la consommation de la flash pour le moment.

Si quelqu’un se sent de compiler une version de GIAC pour le CPU, je veux bien tester l'intégration. J'ai commencé à regarder mais il se fait vraiment tard...

Le manuel en deux mots : une fois le flasher compilé il faut l'uploder avec
Code: Tout sélectionner
dfu-util -i 0 -a 0 -s 0x20008000:force:leave -D qspi_loader.bin
et ensuite charger le contenu de la flash avec (à adapter)
Code: Tout sélectionner
flashrom -p serprog:dev=/dev/ttyACM0 -V -w ~/flash.bin
Il suffit ensuite de faire un reset de la calculatrice.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude Lionel Debroux » 21 Oct 2017, 08:17

Super boulot :)

Pour les premières étapes d'exécution de code depuis la Flash externe, j'avais suggéré des choses plus simples que giac, parce que réaliser l'intégration dans les deux sens avec l'OS standard nécessite un certain boulot. Il faut notamment que:
  • giac sache où sont les points d'entrée de l'allocateur mémoire: malloc(), free(), operator new / new[] / delete / delete[] (à moins d'utiliser ces derniers de façon inline, cf. par exemple https://github.com/debrouxl/epsilon/com ... d392fd6bc2 , qui augmente l'efficacité du code - ces changements sont suffisamment simples pour être refaits par quelqu'un d'autre a signé le CLA);
  • le linker sache où il doit mettre les .data et .bss de giac en RAM et les .text et .rodata en Flash externe, alors que sur l'OS standard, .text et .rodata sont en Flash interne.
    Le script linker de l'OS standard est ion/src/device/boot/flash.ld. Je ne sais pas si, sans modifier lourdement le code de giac pour définir les noms des sections .text et .rodata (je n'ai pas vu rapidement d'option pour ce faire dans `man gcc`), on peut réussir à faire un seul script linker pour l'OS standard + giac.

@JB: ouais, MTP est une autre possibilité. A voir comment mapper sans trop de contorsions, peut-être sur des chemins virtuels spéciaux, les opérations non évidemment fichier comme "send one keypress / send multiple keypresses" et le cas échéant des opérations plus avancées de remote control (exécution de programmes d'un certain type), "get screenshot", "get calculator information", ou peut-être "set exam mode settings". Les cinq opérations existent sur les calculatrices TI, pas toutes simultanément, et au moins trois existent sur la HP Prime.
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Avatar de l’utilisateur
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Prochain niv.: 11.2%
 
Messages: 6859
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: -
GitHub: debrouxl

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude critor » 21 Oct 2017, 10:46

Merci à tous deux d'avoir pris le temps de confirmer la bonne réception de l'envoi. :)
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 41.8%
 
Messages: 41465
Images: 14479
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
MyCalcs profile
YouTube: critor3000
Twitter/X: critor2000
GitHub: critor

Re: Challenge NumWorks++ | Flash chip hardware mod

Message non lude zardam » 21 Oct 2017, 14:09

giac sache où sont les points d'entrée de l'allocateur mémoire: malloc(), free(), operator new / new[] / delete / delete[] (à moins d'utiliser ces derniers de façon inline, cf. par exemple https://github.com/debrouxl/epsilon/com ... d392fd6bc2 , qui augmente l'efficacité du code - ces changements sont suffisamment simples pour être refaits par quelqu'un d'autre a signé le CLA);
le linker sache où il doit mettre les .data et .bss de giac en RAM et les .text et .rodata en Flash externe, alors que sur l'OS standard, .text et .rodata sont en Flash interne.
Le script linker de l'OS standard est ion/src/device/boot/flash.ld. Je ne sais pas si, sans modifier lourdement le code de giac pour définir les noms des sections .text et .rodata (je n'ai pas vu rapidement d'option pour ce faire dans `man gcc`), on peut réussir à faire un seul script linker pour l'OS standard + giac.


Pour un firmware "monolithique", le linker devrait se débrouiller tout seul (ou presque) il me semble ?

Au pire, mettre tout dans la flash externe, sauf l'initialisation bas niveau ? C'est un peu dommage, mais ça suffirait pour un proof of concept, et sans trop de modifications.

C'est certes "quick'n dirty", mais de toute façon je n'ai pas vraiment le temps de faire mieux (le but étant surtout d'apprendre au passage).
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 34.6%
 
Messages: 233
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

PrécédenteSuivante

Retourner vers News NumWorks

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 38 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2060 utilisateurs:
>2042 invités
>14 membres
>4 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)