Un compilateur peut en cacher un autre

En recompilant NuttX sur FreeBSD 13 pour une carte bluepill (STM32F103C8T6), j’ai eu une mauvaise surprise: même si le code se compile correctement, le binaire ne fonctionne pas une fois arrivé sur la cible.
La classique « laide qui clignote » fonctionne sans problème, mais des fonctions avancées (USB par exemple) ne fonctionnent pas du tout.
En fait, il faut utiliser le compilateur devel/gcc-arm-embedded au lieu de devel/arm-none-eabi-gcc.

Notez que ce compilateur s’installe dans le répertoire /usr/local/gcc-arm-embedded. Pour l’utiliser, il faut exporter la variable PATH comme suit (/bin/sh):

export PATH=$PATH:/usr/local/gcc-arm-embedded/bin

Exemple de configuration NuttX avec authentification sur la console via le port USB :
Je n’ai pas encore compris l’intérêt d’avoir deux compilateurs différents, mais je ne désespère pas d’avoir une réponse.

La source.
 
La capture de terminal est réalisée avec asciinema et convertie avec gifcast

A propos de NuttX 9

Début décembre, le projet NuttX est passé dans le giron de la fondation Apache avec le programme « incubator » (cf. ce mail sur la liste de diffusion). Par la même occasion, il est passé sous licence Apache V2 qui est une licence permissive comme la licence BSD initiale.

La version 9.0 est donc la première à sortir depuis ce changement. En plus des nouveaux drivers/socs, la méthode de construction évolue: deux nouvelles dépendances apparaissent : flock qui permet de verrouiller un fichier depuis un script shell à l’instar de flock(2) et wget qu’on ne présente pas. Vous trouverez donc ces logiciels pour macOS sur la page dédiée.

Carte STM32F4-discovery – Installation de NuttX

NuttX est un système d’exploitation POSIX et temps réel disponible pour plusieurs familles de microprocesseurs 8 et 32Bits. Il est complètement supporté sur la carte STM32F4-DISCOVERY. Son empreinte mémoire est très faible, environ 8ko sur les 192ko du STM32F407: dérisoire par rapport aux services rendus. Continue reading