iostream et STL
iostream et STL
Y-a-t-il du support pour les flux I/O et la standard template library C++?
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: iostream et STL
Une partie de la STL est en effet cross-compilable pour l'OS standard des Nspire et Ndless 3.1/3.6. Je suis moins sûr pour iostream: il se peut qu'il manque des syscalls, auquel cas il faudra faire davantage de reverse-engineering et/ou ajouter des choses comme newlib.
Attention au fait que le code de startup du SDK Ndless 3.1/3.6 ne contient pas les appels pour certains constructeurs, le bug est connu et on peut imaginer qu'il sera bientôt corrigé.
Je dirais qu'il faut essayer, et voir où ça coince.
Si Prof. Bernard Parisse pose ce genre de questions, c'est peut-être que vous avez une idée particulière de portage derrière la tête ?
Attention au fait que le code de startup du SDK Ndless 3.1/3.6 ne contient pas les appels pour certains constructeurs, le bug est connu et on peut imaginer qu'il sera bientôt corrigé.
Je dirais qu'il faut essayer, et voir où ça coince.
Si Prof. Bernard Parisse pose ce genre de questions, c'est peut-être que vous avez une idée particulière de portage derrière la tête ?

Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6869
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: iostream et STL
Lionel Debroux wrote:Si Prof. Bernard Parisse pose ce genre de questions, c'est peut-être que vous avez une idée particulière de portage derrière la tête ?
voir l'autre topic: http://tiplanet.org/forum/viewtopic.php ... 86#p159196

-
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 2955
- Images: 3
- Joined: 10 Sep 2010, 00:00
- Gender:
- Calculator(s):→ MyCalcs profile
Re: iostream et STL
En fait c'est un eleve de terminale S qui m'a contacte il y a 3 semaines pour me poser la question du portage de giac sur nspire. Je n'ai pas eu trop le temps de regarder, j'etais assez reserve sur les chances de succes et l'interet. Et puis en y reflechissant, je me dis que ce serait une bonne idee (en particulier pour les possesseurs de nspire non CAS, ca pourrait etre une piste pour democratiser l'acces au calcul formel sur calculatrices en tout cas). Je vais avoir un peu plus de temps a partir d'avril (parce que ca m'etonnerait que ca soit completement evident).
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: iostream et STL
Avoir un moteur CAS alternatif sur les Nspire (CX) CAS serait aussi une chose intéressante 
(en fait, dans une moindre mesure, ça ne gênerait pas TI contrairement aux nspire non-CAS
)
(Sinon, il a été question de NspireIO pour l'interface, mais Excale a déjà quelque peu réussi à interfacer (c'était un peu du hack, certes...) les lignes de saisies standards...
Autre solution probablement plus pratique/simple : rendre accessible le moteur depuis un module Lua - une interface de calcul en Lua existe déjà (cf SuperSpire de Critor). Des exemples d’interfaçage avec le Lua sont fournis avec le SDK Ndless.

(en fait, dans une moindre mesure, ça ne gênerait pas TI contrairement aux nspire non-CAS

(Sinon, il a été question de NspireIO pour l'interface, mais Excale a déjà quelque peu réussi à interfacer (c'était un peu du hack, certes...) les lignes de saisies standards...
Autre solution probablement plus pratique/simple : rendre accessible le moteur depuis un module Lua - une interface de calcul en Lua existe déjà (cf SuperSpire de Critor). Des exemples d’interfaçage avec le Lua sont fournis avec le SDK Ndless.
MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14820
- Images: 1131
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: iostream et STL
Alors, voila une 1ere etape de franchie: on n'a pas les iostream, mais quelque chose de suffisamment ressemblant je pense la:
https://github.com/compujuckel/nspire-io
J'ai du corriger un petit bug dans console.cpp, au lieu de faire using namespace nio; il faut faire namespace nio { ... } en fermant l'accolade a la fin du fichier. J'ai du aussi toucher au script de link qui n'accepte pas les chemins a la Unix sous windows. Et le programme demo fonctionne.
Reste a adapter le source de giac pour utiliser cette classe.
Et ensuite voir comment faire pour la STL.
https://github.com/compujuckel/nspire-io
J'ai du corriger un petit bug dans console.cpp, au lieu de faire using namespace nio; il faut faire namespace nio { ... } en fermant l'accolade a la fin du fichier. J'ai du aussi toucher au script de link qui n'accepte pas les chemins a la Unix sous windows. Et le programme demo fonctionne.
Reste a adapter le source de giac pour utiliser cette classe.
Et ensuite voir comment faire pour la STL.
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: iostream et STL
Nous te souhaitons une très bonne chance (et le courage et temps qui va avec
)
Tiens nous au courant du projet
(Il est même possible d'ouvrir un topic d'avancement dédié, si besoin est)

Tiens nous au courant du projet

(Il est même possible d'ouvrir un topic d'avancement dédié, si besoin est)
MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14820
- Images: 1131
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Re: iostream et STL
Je viens de refaire l'exercice: la toolchain compilée par le script listé à http://hackspire.unsads.com/wiki/index. ... n_on_Linux (crosstool-ng permettait également d'en créer une) est C++, et je peux construire le programme suivant:
de la façon suivante:
(certaines options superflues, bien sûr)
Les templates et iostreams sont donc supportables.
Après la construction, que le binaire produit fonctionne sur Nspire (nspire_emu ou machine réelle) en utilisant Ndless 3.6 est une toute autre histoire. La toolchain, et donc les binaires qu'elle produit, ne sont évidemment pas construits vis à vis des syscalls Ndless, même après ajout de -lndls.
Il faudrait refaire la manip avec une vraie toolchain bare metal, sans utiliser, par exemple, newlib.
Ce sera tout pour moi ce soir
EDIT: pas tout à fait, en réalité. Les toolchains bare metal sont faites principalement pour le C, et la compilation automatique de la toolchain par crosstool-ng sans newlib échoue lamentablement dans libstdc++, faute de pouvoir trouver stdio.h.
Il faut donc rester à un processus plus manuel, où on peut injecter l'environnement Ndless (qui sera certainement à étendre, c'est le cas général quand on porte un soft portable vers une plate-forme non standard dont on fait progressivement les headers; par exemple j'avais amélioré GCC4TI pour pouvoir patcher moins lourdement Lua et p14p pour fonctionner sur TI-68k/AMS) à la place de newlib, puis déclencher le build final...
- Code: Select all
#include "os.h"
#include < string>
#include <iostream>
int main(int argc, char * argv[]) {
std::string str(argv[0]);
std::cout << str << std::endl;
return 0;
}
de la façon suivante:
- Code: Select all
nspire-g++ -Wall -W -g3 testcxx.cpp -ffreestanding -ffunction-sections -fdata-sections -Wl,--gc-sections -o testcxx -lndls
(certaines options superflues, bien sûr)
Les templates et iostreams sont donc supportables.
Après la construction, que le binaire produit fonctionne sur Nspire (nspire_emu ou machine réelle) en utilisant Ndless 3.6 est une toute autre histoire. La toolchain, et donc les binaires qu'elle produit, ne sont évidemment pas construits vis à vis des syscalls Ndless, même après ajout de -lndls.
Il faudrait refaire la manip avec une vraie toolchain bare metal, sans utiliser, par exemple, newlib.
Ce sera tout pour moi ce soir

EDIT: pas tout à fait, en réalité. Les toolchains bare metal sont faites principalement pour le C, et la compilation automatique de la toolchain par crosstool-ng sans newlib échoue lamentablement dans libstdc++, faute de pouvoir trouver stdio.h.
Il faut donc rester à un processus plus manuel, où on peut injecter l'environnement Ndless (qui sera certainement à étendre, c'est le cas général quand on porte un soft portable vers une plate-forme non standard dont on fait progressivement les headers; par exemple j'avais amélioré GCC4TI pour pouvoir patcher moins lourdement Lua et p14p pour fonctionner sur TI-68k/AMS) à la place de newlib, puis déclencher le build final...
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
-
Lionel DebrouxSuper Modo
Niveau 14: CI (Calculateur de l'Infini)- Posts: 6869
- Joined: 23 Dec 2009, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Class: -
- GitHub: debrouxl
Re: iostream et STL
Bon, je viens d'essayer de compiler libtommath (support entiers en precision arbitraire, ecrit en C). Ca compile bien, j'arrive a linker un programme tout simple mais une fois transfere sur la TI, ca fait tout planter (reset ne marche pas, je suis oblige d'oter les piles pour relancer la TI).
Est-ce parce qu'il faut faire preceder tout include de header standard de #include<os.h>? Peut-on utiliser les header standard ou pas? Ca risque d'etre tres (trop) complique de faire un portage si on n'a aucune indication au moment de la compilation ou du link qu'on utilise quelque chose qu'il ne faut pas utiliser. Du coup je suis assez pessimiste contrairement a hier (d'autant que je me suis apercu que nspireio n'avait pas de support pour les double en C++ en tout cas...)
Edit: Bon en ajoutant #include<os.h> dans tommath.h, ca ne plante plus. Donc l'espoir revient!
Est-ce parce qu'il faut faire preceder tout include de header standard de #include<os.h>? Peut-on utiliser les header standard ou pas? Ca risque d'etre tres (trop) complique de faire un portage si on n'a aucune indication au moment de la compilation ou du link qu'on utilise quelque chose qu'il ne faut pas utiliser. Du coup je suis assez pessimiste contrairement a hier (d'autant que je me suis apercu que nspireio n'avait pas de support pour les double en C++ en tout cas...)
Edit: Bon en ajoutant #include<os.h> dans tommath.h, ca ne plante plus. Donc l'espoir revient!
-
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)- Posts: 3721
- Joined: 13 Dec 2013, 16:35
- Gender:
- Calculator(s):→ MyCalcs profile
Re: iostream et STL
Je me permets une remarque quand j'ai vu "les piles" : tu as donc une ClickPad ou TouchPad ?
En fonction des besoins du programme et de l'état de la calculatrice, des "problèmes" de RAM pourraient survenir...
Sur CX, ca passerait probablement mieux si seule la RAM est un problème, au final.
Je suppose que tester sur émulateur devrait déjà alléger la tâche de débug pendant le développement, surtout côté ram.
(apres, l'émulation n'est pas 100% fiable non plus -pour certains trucs précis, dont les timers de l'arm (d'autres pourront détailler
)-, mais c'est déjà ca...)
En fonction des besoins du programme et de l'état de la calculatrice, des "problèmes" de RAM pourraient survenir...
Sur CX, ca passerait probablement mieux si seule la RAM est un problème, au final.
Je suppose que tester sur émulateur devrait déjà alléger la tâche de débug pendant le développement, surtout côté ram.
(apres, l'émulation n'est pas 100% fiable non plus -pour certains trucs précis, dont les timers de l'arm (d'autres pourront détailler

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)My calculator programs
Mes programmes pour calculatrices
-
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)- Posts: 14820
- Images: 1131
- Joined: 01 Jun 2007, 00:00
- Location: France
- Gender:
- Calculator(s):→ MyCalcs profile
- Twitter: adriweb
- GitHub: adriweb
Return to Native: Ndless, Linux, ...
Who is online
Users browsing this forum: ClaudeBot [spider] and 4 guests