Page 1 sur 1

Compilation et debugging sous Ndless

Message non luPosté: 20 Avr 2019, 13:25
de Noury
Compiler et debugger un programme est simple. Tellement simple qu'on oublie parfois de le documenter.
Dans le monde de la programmation Ndless, il y a des informations de bases qui manquent.
De ce fait, un débutant peut avoir beaucoup de difficultés pour aborder ces choses.
Je vais donc essayer ici de présenter les éléments de base pour compiler un programme C ou assembleur sous Ndless, ou encore le debugger.


On part du principe que le lecteur a des connaissances minimales en programmation C ou assembleur selon le cas.
Il faut également avoir déjà compilé des programmes, au moins manuellement.
Enfin pour le debugging, il faut avoir, au moins un peu, pratiqué GDB, le debugger GNU.


I - Installation du SDK Ndless:

Il faut utiliser cette procédure
Elle est particulièrement détaillée et précise. Je l'ai utilisée pour ma part sur Mac et sur Linux.
Je n'utilise pas Windows, je n'ai donc pas d'avis à ce sujet.

J'ajouterai juste que:
1 - l'installation est très longue. Elle m'a pris 1/2 journée. Donc prévoyez du temps.
2 - il faut changer le propriétaire du répertoire d'installation Ndless. Ce n'est pas la seule méthode mais c'est celle que je préfère.
Il faut utiliser la commande chown -R utilisateur:goupe ..../Ndless
Dans mon cas, Ndles est installé dans /usr/local. Mon user est nb.
j'ai utilisé sur Mac:
Code: Tout sélectionner
sudo chown -R nb:staff /usr/local/Ndless

Attention, cette commande est dangereuse. Il faut l'utiliser en sachant parfaitement ce qu'on est en train de faire.


I - Compilation d'un programme C

Une bonne solution est de créer un répertoire vide pour travailler sur un projet.
Il faut ensuite y placer son programme C, et éventuellement ses fichiers d'include.
Disons qu'on a créé un programme test.c
Il faut construire le Makefile : nspire-tools new test

Pour compiler, il faut juste taper
Code: Tout sélectionner
make
.

Si vous envisagez d'utiliser des bibliothèques particulières comme nspireio par exemple, il faut ajouter
Code: Tout sélectionner
,--nspireio,--gc-sections
à la ligne "LDFLAGS".

On obtiendra alors le fichier test.tns qui peut être installé sur la TI-Nspire ou l'émulateur Firebird.

On aura également un fichier test.elf qui sera très utile pour debugger. Il contiendra la table des symboles, et permettra de visualiser le code source sous GDB.

Voilà, c'est très simple, et généralement plutôt bien documenté.


II - Programmation assembleur

Là la documentation n'est pas facile à trouver.
De la même manière que pour un programme C, il faut avoir un fichier avec l'extension ".S" (en majuscule)
exemple: on a un fichier test.S

il doit commencer par les lignes:

Code: Tout sélectionner
.global main
 
main:


On crée le Makefile:
Code: Tout sélectionner
nspire-tools new test


Dans le cas des TI-Nspire récentes qui ont un écran en 240x320, il faut ajouter " --240x320-support true" à la ligne "ZEHNFLAGS"
Ça évitera les problèmes de compatibilité.

Je préconise également de remplacer la ligne
Code: Tout sélectionner
$(AS) -c $< -o $@
par
Code: Tout sélectionner
$(AS) $(GCCFLAGS) -c $< -o $@

C'est à mon avis un petit bug qui n'a pas eu de conséquences pour le plus grand nombre.


Il ne reste plus qu'à compiler:
Code: Tout sélectionner
make

Puis c'est la même chose que pour un programme C en ce qui concerne le ".tns"


III - debugger un programme avec GDB

Pour debugger avec GDB, il faut avoir installé l'émulateur de TI-Nspire "Firebird".
Voici le mode d'emploi

Par défaut, un serveur écoute sur le port 3333.

Pour utiliser le debugger, il faut d'abord avoir compilé le programme C ou assembleur avec l'option "-g".
Pour faire ça, c'est très simple, il faut indiquer au début du Makefile
Code: Tout sélectionner
DEBUG = TRUE
qui par défaut est à FALSE.
Il faut ensuite recompiler le programme à debugger.

Une fois terminé, voici les étapes à suivre:
    1 - lancer firebird-emu
    2 - charger le snapshot voulu (si nécessaire)
    3 - Dans une fenêtre xterm taper:
    Code: Tout sélectionner
    arm-none-eabi-gdb -ex "target remote :3333" test.elf
    (indiquer ici le bon nom de fichier)
    4 - placer les breakpoints, consulter le source...
    5 - c (pour continuer). Le debugger se met en attente.
    6 - lancer le .tns sur l'émulateur
    7 - le programme s'arrête sur le premier point d'arrêt, puis on debugge comme avec un programme ordinaire.

L'émulateur possède un debugger intégré, je ne l'ai pas utilisé. Il ne nous intéresse pas ici.

Re: Compilation et debugging sous Ndless

Message non luPosté: 20 Avr 2019, 17:45
de critor
Merci à toi pour ce tuto superbement mis en page ! :bj:

Re: Compilation et debugging sous Ndless

Message non luPosté: 20 Avr 2019, 19:10
de Noury
J'ai observé le maitre ;)
Mais j'ai encore du chemin...

Re: Compilation et debugging sous Ndless

Message non luPosté: 20 Avr 2019, 19:49
de STaa
Merci pour ce tuto au top, je trouvais pas comment debug ! :)

Re: Compilation et debugging sous Ndless

Message non luPosté: 21 Avr 2019, 07:44
de Noury
Merci STaa.
Je suis content que ça te soit utile.

Re: Compilation et debugging sous Ndless

Message non luPosté: 26 Avr 2019, 15:02
de grosged
Le site de Jim Bauwens hackspire.org est actuellement hors-service :'(

Voici le message :
"Due to technical issues bwns.be and related services are currently unavailable.
We are trying to get everything back as soon as possible."

J'espère que c'est passager, que cela va vite s'arranger :#roll#:

Re: Compilation et debugging sous Ndless

Message non luPosté: 26 Avr 2019, 15:12
de critor
Oui, il nous a prévenus.
Problèmes techniques sur son serveur, je confirme.

D'ailleurs, il faudrait commencer à documenter la TI-Nspire CX II sur hackspire. ;)