π
<-
Chat plein-écran
[^]

NumBoots - Bootloader pour NumWorks N0110

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby 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.
User avatar
jean-baptiste boricPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 52.3%
 
Posts: 296
Joined: 21 Dec 2015, 22:22
Gender: Not specified
GitHub: boricj

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby 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.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 5.8%
 
Posts: 6443
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
Class: -
GitHub: debrouxl

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby 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.
User avatar
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 29.9%
 
Posts: 221
Images: 13
Joined: 11 Oct 2017, 23:39
Gender: Not specified
Calculator(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby zardam » 07 Dec 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.
User avatar
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 29.9%
 
Posts: 221
Images: 13
Joined: 11 Oct 2017, 23:39
Gender: Not specified
Calculator(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby Lionel Debroux » 07 Dec 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.
User avatar
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)
Niveau 14: CI (Calculateur de l'Infini)
Level up: 5.8%
 
Posts: 6443
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
Class: -
GitHub: debrouxl

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby Adriweb » 08 Dec 2019, 02:31

Excellent !
Ca va simplifier beaucoup de choses :)
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 53%
 
Posts: 12812
Images: 1085
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
Class: (ingénieur)
Twitter: adriweb
GitHub: adriweb

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby quentinguidee » 08 Dec 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 ;)
User avatar
quentinguideeProgrammeur
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 53.9%
 
Posts: 68
Joined: 30 Oct 2019, 20:40
Location: Belgique
Gender: Male
Calculator(s):
Class: Ingénieur civil, Bac 1
GitHub: quentinguidee

Online

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby critor » 10 Dec 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
User avatar
critorAdmin
Niveau 19: CU (Créateur Universel)
Niveau 19: CU (Créateur Universel)
Level up: 3.5%
 
Posts: 34956
Images: 9324
Joined: 25 Oct 2008, 00:00
Location: Montpellier
Gender: Male
Calculator(s):
Class: Lycée
YouTube: critor3000
Twitter: critor2000
Facebook: critor.ti

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby zardam » 10 Dec 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).
User avatar
zardamPremium
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 29.9%
 
Posts: 221
Images: 13
Joined: 11 Oct 2017, 23:39
Gender: Not specified
Calculator(s):

Re: NumBoots - Bootloader pour NumWorks N0110

Unread postby M4x1m3 » 11 Dec 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.
User avatar
M4x1m3Programmeur
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 1.6%
 
Posts: 67
Joined: 13 Oct 2019, 21:10
Location: Bas-Rhin (67)
Gender: Male
Calculator(s):
Class: Terminale S - SI
GitHub: M4xi1m3

PreviousNext

Return to Programmation native (C/C++/...)

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Omega, le fork étendant les capacités de ta NumWorks, même en mode examen !
Comparaisons des meilleurs prix pour acheter sa calculatrice !
12
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
410 utilisateurs:
>397 invités
>6 membres
>7 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)