π
<-

iostream et STL

C, C++, ASM...

iostream et STL

Unread postby parisse » 16 Mar 2014, 19:35

Y-a-t-il du support pour les flux I/O et la standard template library C++?
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.5%
 
Posts: 3632
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: iostream et STL

Unread postby Lionel Debroux » 16 Mar 2014, 21:49

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 ? ;)
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: 11.3%
 
Posts: 6863
Joined: 23 Dec 2009, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Class: -
GitHub: debrouxl

Re: iostream et STL

Unread postby Excale » 16 Mar 2014, 21:58

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 :)
User avatar
ExcaleAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 3.9%
 
Posts: 2955
Images: 3
Joined: 10 Sep 2010, 00:00
Gender: Male
Calculator(s):
MyCalcs profile

Re: iostream et STL

Unread postby parisse » 17 Mar 2014, 09:59

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).
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.5%
 
Posts: 3632
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: iostream et STL

Unread postby Adriweb » 17 Mar 2014, 10:26

Avoir un moteur CAS alternatif sur les Nspire (CX) CAS serait aussi une chose intéressante :D
(en fait, dans une moindre mesure, ça ne gênerait pas TI contrairement aux nspire non-CAS :P)

(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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.8%
 
Posts: 14727
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: iostream et STL

Unread postby parisse » 17 Mar 2014, 15:57

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.
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.5%
 
Posts: 3632
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: iostream et STL

Unread postby Adriweb » 17 Mar 2014, 19:05

Nous te souhaitons une très bonne chance (et le courage et temps qui va avec :) )

Tiens nous au courant du projet :D
(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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.8%
 
Posts: 14727
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Re: iostream et STL

Unread postby Lionel Debroux » 17 Mar 2014, 20:30

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

Re: iostream et STL

Unread postby parisse » 18 Mar 2014, 13:19

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!
User avatar
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Level up: 84.5%
 
Posts: 3632
Joined: 13 Dec 2013, 16:35
Gender: Not specified
Calculator(s):
MyCalcs profile

Re: iostream et STL

Unread postby Adriweb » 18 Mar 2014, 13:39

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 :P)-, mais c'est déjà ca...)

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
User avatar
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Level up: 78.8%
 
Posts: 14727
Images: 1119
Joined: 01 Jun 2007, 00:00
Location: France
Gender: Male
Calculator(s):
MyCalcs profile
Twitter: adriweb
GitHub: adriweb

Next

Return to Native: Ndless, Linux, ...

Who is online

Users browsing this forum: ClaudeBot [spider] and 2 guests

-
Search
-
Social TI-Planet
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Reprise de ton ancienne fx-92 Collège ou Graph 25/35/90 à 3€ peu importe son état. Même non fonctionnelle et donc invendable, même ancienne Graph 35 non conforme aux programmes (pas de Python), même ancienne Graph 25/35 inutilisable aux examens (pas de mode examen) et donc invendable. Etiquette de retour fournie, pas de frais de port à payer.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
12345
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...
Donate
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 Calculatrices à acheter chez Calcuso
-
Stats.
1188 utilisateurs:
>1132 invités
>49 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)