Première chose: s'abonner a la mailing list nuttx et la faire aller dans un dossier automatiquement.
Les derniers jours des gens se sont rendus compte que le problème de link apparait sur les dernières ubuntu avec gcc 7
extrait:
LD: nuttx
arm-none-eabi-ld: section .data LMA
[000000000800e644,000000000800e6ab] overlaps section .ARM.exidx LMA
[000000000800e640,000000000800e647]
make[1]: *** [Makefile:185: nuttx] Error 1
Searching for this error I found a solution here:
https://stackoverflow.com/questions/307 ... ction-data
The inclusion of "-funwind-tables" fixed the error, but we need to
download check if it will not generate size effects for other people
(same way previous modification generated side effects to me).
(option a mettre dans Make.defs a la racine du projet nuttx)
------------
Nuttx (via son auteur Greg Nutt) n'aime pas du tout les gpio a poil, même si il a fini par intégrer un driver générique.
Pour NuttX un gpio a plutot une fonction (bouton, led, pwm, etc) et il faut un driver fonctionnel, donc faut chercher par la.
idem pour i2c direct d'ailleurs, car c'est un bus, pas un périph. Donc t'as plutot des drivers d'accéléromètres RTC et autres grouilles, qui s'initialisent sur un bus i2c obtenu par un autre moyen (interne a un SoC, mais pourquoi pas en bitbang, le driver RTC n'y verrait que du feu grace a l'abstraction des drivers)
------------
En général les drivers, une fois sélectionnés, doivent être initialisés dans le code de démarrage de la board. Le copier-coller de boards existantes aide beaucoup.
------------
ajouter une appli: copier-coller l'app examples/hello, changer ses fichiers Makefile, Make.defs et KConfig, make distclean, refaire make menuconfig et la nouvelle app devrait s'afficher dans le sous-menu application.
Voir sur le web les tutos de Alan Carvalho de Assis qui a documenté beaucoup de choses habituelles quand on utilise nuttx.
------------
Le LCD de la stm32 disco F7 machin: Regarder dans le dossier board pour cette carte. Il devrait être supporté, sinon faut se palucher le portage. Commencer par déterminer comment ce LCD est connecté (SPI, I2C, bus vidéo)
* si spi ou i2c: faut chercher la reference du controleur dans drivers/graphics ou drivers/lcd
* si bus vidéo direct interne au SoC: faut voir si les drivers LCD ont été écrits pour le CPU (arch/arm/src/stm32F7).
Ensuite c'est des incantations dans l'init de la carte. J'avoue que tout ce qui est graphique est un peu merdique, mais y'a un driver framebuffer qui donne pas mal de controle. on se retrouve avec un /dev/fb dans lequel on peut faire mumuse comme on veut.