Bonjour, j'utilise Upsilon depuis pas mal de temps mais j'aimerais le customiser plus. J'ai donc suivi les instruction pour compiler Upsilon et le flasher sur ma calculatrice (ce qui a fonctionné 👍 ) mais je n'arrive pas à comprendre comment est organisé le code (pk des fichiers en .h par exemple) et aussi comment fonctionne la commande make et comment spécifier le slot du bootloader pour le flash
#Architecture d'Upsilon
1 messages · Page 1 of 1 (latest)
Tu as déjà fait un peu de bas niveau genre C/C++ ?
J'ai les bases de chez base
Les .h, ce sont les headers
En gros, en C++, en général, tu utilises plusieurs fichiers
En Python, tu utilises import pour importer le code directement
En C, le code est linké après, ce qui fait que le code ne peut pas être importé
À la place, on importe des .h qui décrivent les fonctions exposées par tel fichier
Et ensuite, la fonction est connue : on sait son nom, ses arguments et son type de retour
Après, au linkage, la fonction est remplacée par son adresse réelle
Les i18n, c'est un format (spécial pour la NumWorks) dans lequel sont spécifiés les traductions
Dans le code, il n'y a jamais de texte en clair
ok, j'avoue j'aurais pu trouver moi même ça 😅
Tous les textes référencent des clés i18n, qui permettent d'adapter à la langue sélectionnée
mais du coup, comment est organisé le code ? Est-ce qu'on peut retrouver une trace d'Epsilon ?
Oui, la structure est très similaire à celle d'Epsilon
Ça peut t'intéresser : https://www.numworks.com/engineering/software/
C'est cool ça merci !
Du coup qu'est-ce qui change entre epsilon et upsilon ?
En terme d'organisation, ce qu'il y a en plus ou pas au même endroit
je s'incruste c'est où pour compiler
?
Donc en gros :
- Apps : les applications
- Bootloader : le bootloader, qui sert notamment à sélectionner le slot
- Build : principalement du Makefile, un peu inutile pour modifier Upsilon
- Ion : matériel (écran, touches, simulateur, tout ce qui est driver en gros)
- Kandinsky : niveau d'abstraction au-dessus de Ion pour tout ce qui est affichage (genre pour faire du texte, des rectangles, des pixels)
- Escher : l'interface graphique (l'équivalent de QT/GTK, en gros), utilise Kandinsky
- Liba/Libaxx : réimplémentation de la librairie standard du C/C++
- Output : cache de compilation et fichiers compilés/temporaires
- Poincaré : moteur de calcul
- Python : MicroPython et les modules Python, principalement
- Quiz/Tests : Tests pour valider le fonctionnement
- Thèmes : exclusif à Omega/Upsilon : thèmes qui contiennent des icônes et des couleurs pour personnaliser l'interface
En bas
Les icônes des applications (premier truc auquel je pense), mais pas forcément grand-chose au niveau de la structure
Il est vrai que j'avais vu le dossier quiz en me demandant à quoi ça pouvait servir 😅
On ne l'utilise pas en pratique, je pense
Dans Epsilon, ils ont omg, qui signifie littéralement poubelle
Comment ça ?
Au boot, en fonction du mode, ça commence soit par le bootloader (recommendé), soit par un mini-launcher en internal
Mais en gros, le bootloader charge le code principal en external
Quel(s) fichiers sont éxécutés en premier pour appeller les autres ?
c'est à dire ? ça veut dire quoi en external ?
Le main.cpp par plateforme lance leapps/main.cpp, en gros
extenral = flash externe
En gros, la N0110 à deux flash (disque dur)
La flash interne et externe
ok
La flash interne fait 64 Ko et la flash externe fait 8 Mo
La calculatrice boot toujours sur la flash interne
(Dans le cas du bootloader,) le bootloader étant en flash interne, il est démarré en premier
pk est-ce que ça change de flash ?
Ensuite, il affiche un menu pour sélectionner le slot
Les slots sont en flash externe, qui est assez grosse pour contenir le firmware (=OS)(le firmware doit être à environ 1,2 Mo)
ah ok, et il y a autre chose en flash interne à part le bootloader ?
Une fois le slot sélectionné, le bootloader laisse totalement la main au firmware booté (il est carrément effacé de la ram)
Non
Avant, il y avait le nom d'utilisateur et le mode examen, mais plus maintenant qu'il y a un bootloader
d'accord, ma vision s'éclaircie petit à petit grâce à toi
et je vois dans le main.cpp du bootloader que ça parle de KhiSlot, c'est quoi ?
j'avais lu quelque part que en dualboot les apps n'avaient que la moitié de l'espace, je comprends pourquoi
Sauf que dans un cas où on veut Epsilon + KhiCAS (avant Nwagyu), KhiCAS prend la place du slot B et on a Epsilon en slot A
Donc, pour avoir accès à KhiCAS, on a décidé de faire un mini-slot (slot Khi) qui ne servirait qu'à lancer des applications externes (KhiCAS)
C'est juste ça
okkk
et quand on sort la calculatrice de veille avec le bouton on/off, qu'est-ce qui est trigger ?
apps/apps_container.cpp ligne 124 pour la mise en veille et la sortie. La "magie noire" est dans Ion
wow c'est très précis, mrc
ion/src/device/shared/drivers/power.cpp pour le bas niveau
@last jewel Bonjour ! (désolé du ping) j'avais une question rapide, comment sait-on quels fichiers du github sont utilisés pour flasher la calculatrice ?
C'est-à-dire ?
Le github contient pleins de fichiers mais j'imagine qu'ils ne sont pas tous utilisés lorsqu'on utilise 'make' et je voudrais savoir lesquels sont utilisés ou non. En gros, ceux qui auront une incidence sur le résultat si on les modifie
ok merci !
@last jewel Sais-tu où sont les raccourcis comme celui pour baisser/augmenter la luminosité ? J'aimerais en rajouter un nouveau
Upsilon c'est essentiellement une base Epsilon 15, donc je suppose qu'il n'y aurait pas tant de différences que ça