5 releases (breaking)
| new 0.19.0 | Apr 1, 2026 |
|---|---|
| 0.13.0 | Mar 16, 2026 |
| 0.12.0 | Mar 15, 2026 |
| 0.11.2 | Feb 2, 2026 |
| 0.0.1 | Jan 25, 2026 |
#335 in Embedded development
115KB
2K
SLoC
English | Français
Eadkp est un framework Rust destinée au développement d’applications pour les calculatrices NumWorks sous Epsilon.
Elle fournit des fonctionnalités de bas niveau permettant d’interagir avec le matériel de la calculatrice, notamment la gestion de l’affichage, des entrées utilisateur, de la batterie et du stockage.
Le framework propose également des abstractions de plus haut niveau afin de simplifier le développement d’applications en Rust, telles que la gestion du panic handler, de l’allocateur global, ainsi que la déclaration des propriétés des applications NWA.
Ce repot est la librairie eadkp, le core du projet, qui peut être utilisé indépendamment de la template de projet officielle,
mais il est recommandé d'utiliser la template pour une meilleure expérience de développement.
Vidéo de démonstration d'une application de test propulsée par eadkp
Fonctionnalités
- Handlers Rust pour l'ABI Epsilon
- Gestion basique de l'affichage
- Gestion des entrées utilisateur (clavier)
- Gestion de la batterie
- Gestion du stockage (lecture/écriture de fichiers)
- Macros pour déclarer les propriétés des applications NWA
- Gestion simple des images (inclusion et affichage) via macro
- Support des fichiers C et C++ (Non documenté) (Problème majeur)
- Support du simulateur officiel Numworks
- Support des fichiers données a l'inclusion dans les applications NWA
- Support des graphiques avancés
- Débogage via USB (Pas encore évaluée la faisabilité)
Créer votre propre application propulsée par eadkp
Eadkp a besouin d'un environnement spécifique pour fonctionner correctement.
Consultez le Quick Start sur le wiki pour créer votr propre application propulsée par eadkp.
Fonctionnement
Eadkp a deux champs de fonctionnement principaux, Officiel et Bypass :
- Officiel: SDK étendu/abstract : Fournit des handlers Rust pour l'ABI d'Epsilon, ainsi que des abstractions pour interagir avec cette API de manière plus ergonomique.
- Bypass: Appel de registres : Fournit des fonctions pour faire des appels directs aux CPU, comme des appels SVC pour interagir avec le Power Manager.
- Bypass: Hot patching de la RAM : Fournit des fonctions qui par hot patch de la RAM, permettent par exemple de manipuler le file system (Storage) de la calculatrice.
Schema de positionnement et interaction d'eadkp :
flowchart LR
%% =====================================================
%% APPLICATION
%% =====================================================
X[External App]
%% =====================================================
%% SDK
%% =====================================================
subgraph SDK_Layer
T[eadkp - Extended SDK]
B[eadk ABI - Official]
T -->|uses| B
end
X -->|lib use| T
%% =====================================================
%% OS
%% =====================================================
subgraph OS_Epsilon
A[Epsilon Core]
DM[Diplay Manager]
PM[Power Manager]
KM[Keyboard Manager]
UM[USB Manager]
B -->|limited API| A
A --> PM
A --> KM
A --> UM
end
%% =====================================================
%% MEMORY MAP
%% =====================================================
subgraph Memory
subgraph RAM
ST[Storage]
FB[Framebuffer]
STACK_OS[OS Heap / Stack]
subgraph App_Reserved_RAM
STACK_EX[External App Heap / Stack]
end
end
subgraph Flash
subgraph Bootloader
Launcher[Launcher]
Slot1[OS Slot 1]
Slot2[OS Slot 2 - Save]
end
NWA[NWA - External Apps Code]
end
end
%% =====================================================
%% HARDWARE
%% =====================================================
subgraph Hardware
Screen[Screen]
BAT[Battery]
Keyboard
Clock
USB
end
%% =====================================================
%% OS <-> MEMORY
%% =====================================================
A -->|executes| NWA
A --> ST
A --> DM
DM --> FB
FB --> Screen
%% =====================================================
%% OS <-> HARDWARE
%% =====================================================
PM --> BAT
KM --> Keyboard
UM --> USB
A --> Clock
%% =====================================================
%% EADKP BYPASS
%% =====================================================
T -. RAM hot patch .-> ST
T -. SVC call .-> PM
T -. alloc macro .-> STACK_EX
Contribution
Les contributions sont les bienvenues ! N'hésitez pas à ouvrir des issues ou à soumettre des pull requests.
Pour apprendre comment contribuer, consultez les guides suivants :
- Guide de setup du projet
- Guide de compilation de l'exemple de test
- Guide d'utilisation du simulateur
Pourquoi en Francais ?
Eadkp est un projet destiné à la communauté Numworks. Or, la calculatrice Numworks étant quasi exclusivement démocratisée en France, la majorité de la communauté est francophone.
Il est donc plus logique de documenter le projet en français afin de le rendre plus accessible à la cible visée. Nous visons particulièrement une bonne intégration des nouveaux venus, qui seront probablement de jeunes étudiants francophones.
Licence & Crédits
Ce projet est distribué sous licence LGPL-3.0 (GNU Lesser General Public License v3.0).
Bien que ce projet ait bénéficié d'une refonte architecturale majeure, il reconnaît l'héritage des travaux suivants :
- Sous-module de Stockage (file system):
La logique bas niveau du sous module
storagea été initialement inspirée par NumWorks Extapp Storage. (Licence MIT) - Handlers Rust pour l'ABI Epsilon: Les premières implémentations des handlers Rust pour l'ABI d'Epsilon EADK proviennent de NumCraft Rust v0.1.4. (Licence GPL-3.0)
Conformément à la LGPL-3.0, les travaux originaux sont reconnus et crédités. Les modifications substantielles et les nouvelles fonctionnalités introduites dans ce projet sont couvertes par la licence LGPL-3.0 actuelle, afin de permettre une meilleure interopérabilité de la bibliothèque avec d'autres projets.
Remerciements
Un grand merci aux développeurs suivants pour leurs travails dans la communauté NumWorks :
- Yannis300307
- Yaya Cout (Special thanks)
Informations légales
Eadkp n'est en aucun cas affilié à NumWorks, Epsilon (OS) ou leurs partenaires. Eadkp est un projet open-source communautaire et indépendant.
Dependencies
~13MB
~263K SLoC