π
<-
Chat plein-écran
[^]

NumBoots - Bootloader pour NumWorks N0110

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude jean-baptiste boric » 28 Nov 2019, 19:01

J'avais abandonné le projet pour le moment étant donné que je n'étais pas arrivé à faire cracher à la toolchain Cortex-M un programme en mode PIC et avec .text/.rodata en Flash immutable à une position non prédéterminée à l'avance. De mémoire, la toolchain générait du code exécutable qui supposait que la GOT/PLT était à un offset constant des sections .text/.rodata au lieu d'utiliser le registre GOT. C'était endémique aux Cortex-M, je n'avais pas ce problème en compilant pour du Cortex-A.

Pour ce qui est de la complexité des fichiers ELF, ce n'est vraiment pas complexe au runtime. Seuls les program headers font foi et mon loader qui faisait du dynamic linking (!) tenait en 150 lignes de C.
Avatar de l’utilisateur
jean-baptiste boricPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 52.3%
 
Messages: 296
Inscription: 21 Déc 2015, 22:22
Genre: Non spécifié
GitHub: boricj

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude Lionel Debroux » 28 Nov 2019, 19:12

Un loader ELF n'est pas forcément très complexe au runtime, en effet, mais sur Nspire, je me souviens d'overheads taille variables au runtime, parfois très faibles mais parfois plus difficiles à accepter par rapport au faible apport d'ELF pour ce cas d'usage, des dizaines de KBs sur certains programmes assez simples qui contenaient... ce qu'il fallait pour qu'il y ait de tels overheads, je ne sais pas exactement quoi mais je suppose que ça pouvait être beaucoup de sections, beaucoup de relocations, ou quelque chose de ce genre.
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.: 5.8%
 
Messages: 6442
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude zardam » 28 Nov 2019, 19:37

De ce que j'ai constaté, pour pouvoir avoir un .data "relocatable" en ram et un .text en flash, il faut utiliser l'option "-mno-pic-data-is-text-relative" qui crée des entrées dans .got pour chaque symbole du .data, et ça pouvait prendre beaucoup de place, pour giac par exemple.

De mémoire aussi, il y a plus de 2Mo de relocations pour giac, donc impossible à faire sur la calculatrice.

C'est plus simple au final de reporter ça en dehors. Du coup pas besoin de toolchain ou libc spécifique, ni rien de complexe ou coûteux sur la calculatrice.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 29.9%
 
Messages: 221
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude zardam » 07 Déc 2019, 22:55

Au final, j'ai réussi à compiler ld et objcopy avec emscripten, donc pas besoin d'avoir un outil/format dédié, le link final se fait directement dans le navigateur.

J'ai enrobé tout ça dans une page web disponible ici : https://zardam.github.io/nw-external-apps/

Le firmware et KhiCAS sont à jour avec les modifications pour le mode examen. Les deux autres applications méritent encore un peu d'attention avant d'être pleinement utilisables.
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 29.9%
 
Messages: 221
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude Lionel Debroux » 07 Déc 2019, 23:51

Super travail, comme toujours :)
Emscripten a décidément progressé au fil du temps.
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.: 5.8%
 
Messages: 6442
Inscription: 23 Déc 2009, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: -
GitHub: debrouxl

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude Adriweb » 08 Déc 2019, 02:31

Excellent !
Ca va simplifier beaucoup de choses :)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 52.9%
 
Messages: 12810
Images: 1083
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
Classe: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude quentinguidee » 08 Déc 2019, 10:04

Merci! C'est super tout ça!! :) Je me pencherai dessus un maximum après mes examens pour adapter Omega et le rendre parfaitement compatible avec cet outil ;)
Avatar de l’utilisateur
quentinguideeProgrammeur
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 53.1%
 
Messages: 66
Inscription: 30 Oct 2019, 20:40
Localisation: Belgique
Genre: Homme
Calculatrice(s):
Classe: Ingénieur civil, Bac 1
GitHub: quentinguidee

En ligne

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude critor » 10 Déc 2019, 19:14

Merci @zardam. :)

Moyen de choisir la ROM pour l'émulateur NES qui semble venir par défaut avec un homebrew 2048 ?
Image
Avatar de l’utilisateur
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Prochain niv.: 3.4%
 
Messages: 34927
Images: 9295
Inscription: 25 Oct 2008, 00:00
Localisation: Montpellier
Genre: Homme
Calculatrice(s):
Classe: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude zardam » 10 Déc 2019, 19:33

Pas pour la moment, sauf à recompiler, mais ça va arriver (quand ça sera prêt...).

L'ajout de fichiers "custom" sur l'installeur en ligne et pensé entre autre pour ça.

Je suis aussi en train de regarder pour faire un explorateur de fichiers du script store pour pouvoir se passer du workshop, et aussi d'échanger d'autres types de fichiers (sessions KhiCAS).
Avatar de l’utilisateur
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 29.9%
 
Messages: 221
Images: 13
Inscription: 11 Oct 2017, 23:39
Genre: Non spécifié
Calculatrice(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Message non lude M4x1m3 » 11 Déc 2019, 15:52

Zardam si jamais tu veux t'eviter de t'arracher les cheveux avec tout ce qui est WebUSB/DFU j'ai commencé à faire quelques fonctions utiles dans un repo github : https://github.com/M4xi1m3/omega-webdfu-tests
Omega does what epsilon't


"Regression testing"? What's that? If it compiles, it is good, if it boots up it is perfect.
Avatar de l’utilisateur
M4x1m3Programmeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 1.6%
 
Messages: 67
Inscription: 13 Oct 2019, 21:10
Localisation: Bas-Rhin (67)
Genre: Homme
Calculatrice(s):
Classe: Terminale S - SI
GitHub: M4xi1m3

PrécédenteSuivante

Retourner vers Programmation native (C/C++/...)

Qui est en ligne

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

-
Rechercher
-
Sujets à la une
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...

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 
-
Stats.
426 utilisateurs:
>411 invités
>11 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)