#Architecture d'Upsilon

1 messages · Page 1 of 1 (latest)

amber hatch
#

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

last jewel
#

Tu as déjà fait un peu de bas niveau genre C/C++ ?

amber hatch
#

J'ai les bases de chez base

last jewel
#

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

amber hatch
#

ah ok

#

merci

#

et les .i18n ?

#

des fichiers de traduction ?

last jewel
#

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

amber hatch
#

ok, j'avoue j'aurais pu trouver moi même ça 😅

last jewel
#

Tous les textes référencent des clés i18n, qui permettent d'adapter à la langue sélectionnée

amber hatch
#

mais du coup, comment est organisé le code ? Est-ce qu'on peut retrouver une trace d'Epsilon ?

last jewel
#

Oui, la structure est très similaire à celle d'Epsilon

amber hatch
#

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

keen turtle
#

je s'incruste c'est où pour compiler upsilon ?

last jewel
#

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
last jewel
coarse tinsel
last jewel
#

On ne l'utilise pas en pratique, je pense

last jewel
amber hatch
#

merci beaucoup !

#

Quand on allume la calculatrice, ça commence par où ?

last jewel
#

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

amber hatch
#

Quel(s) fichiers sont éxécutés en premier pour appeller les autres ?

amber hatch
last jewel
last jewel
#

En gros, la N0110 à deux flash (disque dur)

#

La flash interne et externe

amber hatch
#

ok

last jewel
#

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

amber hatch
#

pk est-ce que ça change de flash ?

last jewel
#

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)

amber hatch
#

ah ok, et il y a autre chose en flash interne à part le bootloader ?

last jewel
#

Une fois le slot sélectionné, le bootloader laisse totalement la main au firmware booté (il est carrément effacé de la ram)

last jewel
#

Avant, il y avait le nom d'utilisateur et le mode examen, mais plus maintenant qu'il y a un bootloader

amber hatch
#

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 ?

last jewel
#

Les slots sont à des adresses fixes

#

(dis-moi si tu ne comprends pas)

amber hatch
#

j'avais lu quelque part que en dualboot les apps n'avaient que la moitié de l'espace, je comprends pourquoi

last jewel
#

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

amber hatch
#

okkk

amber hatch
#

et quand on sort la calculatrice de veille avec le bouton on/off, qu'est-ce qui est trigger ?

last jewel
#

apps/apps_container.cpp ligne 124 pour la mise en veille et la sortie. La "magie noire" est dans Ion

amber hatch
#

wow c'est très précis, mrc

last jewel
#

ion/src/device/shared/drivers/power.cpp pour le bas niveau

amber hatch
#

@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 ?

last jewel
#

C'est-à-dire ?

amber hatch
# last jewel 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

last jewel
#

La plupart sont utilisés

#

Il n'y a que dans Ion que tout n'est pas inclu, en gros

amber hatch
#

ok merci !

amber hatch
#

@last jewel Sais-tu où sont les raccourcis comme celui pour baisser/augmenter la luminosité ? J'aimerais en rajouter un nouveau

last jewel
spiral galleon