Page 2 sur 4

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 13 Sep 2019, 18:07
de elicolh
salut, désolé de vous déranger pour si peu mais cet article (viewtopic.php?f=97&t=22824) m'a donné très envie. J'ai la version N0110 et je me demandais si les commandes que tu a mise permettent d'installer le firmware de l'article et si oui comment faire exactement. Merci d'avance

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 13 Sep 2019, 19:06
de critor
Les fichiers .dfu peuvent être flashés sur N0110 (et N0100) avec dfu-utils.
Mais https://ti-planet.github.io/webdfu_numworks/ ne gère apparemment pas les .dfu, juste les images firmware brutes. :( Et https://devanlai.github.io/webdfu/dfu-util/ non plus.

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 13 Sep 2019, 20:32
de elicolh
et tu saurais où obtenir le dfu du super firmware?

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 13 Sep 2019, 20:39
de critor
Je pense même pas qu'il marche correctement dans ton cas.
Le firmware a été compilé pour N0100, pas N0110. Il y a des différences matérielles significatives entre les deux.

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 13 Sep 2019, 20:54
de elicolh
ah, d'accord
Merci pour les infos

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 14 Sep 2019, 08:46
de critor
Avec dfu-util pour N0110, il faut apparemment flasher :
  • en 0x09000000 pour la Flash externe
  • en 0x08000000 pour la Flash interne

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 28 Nov 2019, 01:27
de zardam
Cela fait quelques semaines que je réfléchis à l'idée aussi. Je ne suis pas du tout expert dans ce domaine, mais j'ai l'impression que la voie de l'exécutable PIC/PIE est très séduisante, mais aussi assez complexe. Il me semble aussi que la newlib n'est pas vraiment adaptée à ce fonctionnement (même en la recompilant correctement). J'ai par contre bien aimé l'idée du tar comme étant le support du "système de ficher" flash.

Du coup, je suis parti sur l'idée de générer un elf linké partiellement (donc avec le plus gros du travail de fait, et juste quelques relocations à gérer), et de faire le link final au moment d'ajouter le binaire au tar. C'est dommage car cela requiert d'avoir un linker sous la main, mais ça reste très rapide et je suppose qu'on doit pouvoir faire assez facilement un outil javascript pour faire ça directement depuis une page web (et couplé avec webdfu, ça serait parfait).

Au final, ça fonctionne plutôt bien, j'ai porté KhiCAS dans ce "mode" sans trop de souci (mais je bute un peu sur la simplification/normalisation de son interaction avec epsilon, du coup j'ai repris l'api actuelle telle que).

Je suis resté assez "terre à terre" pour la communication app externe/epsilon. Le point d'entrée de l'app externe reçoit un tableau de pointeurs des points d'entrée de l'API, et une zone mémoire lui servant de heap. Les sections data et bss sont alloués statiquement en bas de la pile et réinitialisées entre chaque lancement. Chaque application embarque sa libc, et son malloc qui va utiliser le heap pré-alloué. Ça permet de repartir avec un heap propre à chaque lancement, mais pour l'instant aucun état n'est sauvegardé (sauf pour KhiCAS qui utilise le script store).

Les dépôts sont disponibles ici (epsilon/delta avec launcher, et le "builder" de tar):

https://github.com/Delta-NumWorks/delta/tree/external
https://github.com/Delta-NumWorks/external-apps

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 28 Nov 2019, 07:39
de Lionel Debroux
Bien, la modularité que NumWorks n'a jamais mise en place prend décidément de plus en plus forme :)
Dans le SDK Ndless, un format custom appelé "Zehn" a fini par être utilisé, parce que BFLT est limité et ELF peut être complexe. Je le mentionne parce que même si tu as déjà fait le gros du boulot, peut-être y a-t-il des idées ou du code à reprendre.

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 28 Nov 2019, 08:06
de zardam
Merci, j'ai croisé effectivement le bflt, je vais regarder le Zehn (je suis tombé sur des ressources dans ndless, mais pas celle ci)

Tant qu'on a un objdump/ld sous la main, le .elf est plutôt pratique. Par contre pour faire la dernière relocation dans une page web, ça risque de se corser une peu, et il faudrait peut être un format intermédiaire plus simple effectivement. Je n'ai pas encore trop creusé de ce coté, c'est la prochaine étape.

J'aimerais bien reprendre et isoler proprement quelques fonctions de l'api de KhiCAS (gestion des scripts, et des événements) et sortir celle qui ne sont pas strictement nécessaires, mais il y a aussi pas mal de boulot de ce coté la.

J'espère que du coup on peut considérer epsilon comme un OS, et donc que le problème de licence ne se pose plus pour les applications "externes". (Mon dernier doute concerne le tableur de pointeurs, mais ce n'est pas très différent de ce que fait un linker dynamique sur un OS traditionnel).

Re: NumBoots - Bootloader pour NumWorks N0110

Message non luPosté: 28 Nov 2019, 08:26
de Lionel Debroux
Le format est défini et documenté par https://github.com/ndless-nspire/Ndless ... ude/zehn.h , et https://github.com/ndless-nspire/Ndless ... enzehn.cpp prend bien de l'ELF en entrée. Les dépendances de genzehn sont Zlib, <cstring>, <iostream>, <algorithm>, <vector>, boost::program_options et ELFIO qui est une lib portable header-only: le ciblage de JS / WASM à partir de genzehn devrait être donc faisable, quitte à devoir ajuster quelques bouts de code ou upgrader ELFIO, actuellement 3.2 d'il y a plus de 3 ans, mais 3.3 et 3.4 ont été publiées depuis.