Forum Linux.embarqué [QEMU] [MICRO:BIT] utiliser STDIO (ou autre) pour debugger l'UART

Posté par  . Licence CC By‑SA.
Étiquettes :
0
5
oct.
2023

Bonjour.

Je suis en train de jouer avec l'uart de la Micro:bit. Cette carte est normalement censée être émulée par qemu, et l'UART est censée être implémentée.

Je cherche à faire en sorte de pouvoir envoyer des caractères depuis l'UART, et en recevoir. J'aimerais passer par la console, l'interface graphique QEMU, ou n'importe quel moyen.Cependant je n'ai pas l'impression de bien m'y prendre. (il me semble avoir réussi à le faire, mais c'est il y a longtemps et je ne sais plus comment je m'y suis pris)

J'exécute qemu à l'aide de cette commande :

qemu-system-arm -M microbit -device loader,file=./uart.hex -s -S

Ensuite j'exécute mon programme via GDB. Mon programme dans un premier temps est censé envoyer un caractère via l'UART (émission). Or je ne vois rien sur la console (je vais voir ce qui se passe sur la liaison serie dans l'interface graphique de qemu)

Du coup je me demande si c'est ma ligne de commande, mon programme ou l'émulation qemu qui ne fonctionne pas.

Pourriez-vous m'indiquer si vous constatez quelque chose d'anormal dans ma ligne de commande SVP ?

Ma version de qemu : QEMU emulator version 7.1.0

Merci d'avance.

  • # Ça a l'air rigolo

    Posté par  . Évalué à 3.

    Je pense qu'il faut dire à qemu vers quel périphérique tu veux renvoyer la console série :

    qemu-system-arm -M microbit -device loader,file=./uart.hex -s -S -serial <le device>.

    D'après le manual, ce peut être stdin/stdout, une socket TCP, un "vraie" liaison série avec baudrate et tout dans /dev/ttyACM0, etc…

    Si tu choisis ce dernier cas, tu pourras ensuite de connecter dessus avec picocom ou minicom.

    • [^] # Re: Ça a l'air rigolo

      Posté par  . Évalué à 2.

      il me semble au moins que sur stdout, il devrait afficher mon caractère envoyé. *Je suis quasi certain de l'avoir fait une fois. Mais malhereusement j'ai un doute, et je ne me rappelle absolument plus comment j'ai fait.

      • [^] # Re: Ça a l'air rigolo

        Posté par  . Évalué à 3.

        Entre-temps j'ai essayé avec un programme AVR qui affiche des trucs sur l'UART et qemu-system-avr -serial stdio, j'ai bien eu l'affichage sur la console.

        Et merci pour la découverte de qemu-system-*, c'est bien sympa comme outils !

        • [^] # Re: Ça a l'air rigolo

          Posté par  (Mastodon) . Évalué à 4. Dernière modification le 06 octobre 2023 à 08:10.

          Oui avec ça tu peux même exécuter directement du code "étranger" sur ta machine, comme du code arm sur un x86 :

          $ uname -a
          Linux FRTLS-EL-ITE264 5.19.0-46-generic #47~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Jun 21 15:35:31 UTC 2 x86_64 x86_64 x86_64 GNU/Linux
          $ file ./hello
          ./hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (GNU/Linux), statically linked, for GNU/Linux 4.9.0, with debug_info, not stripped
          $ ./hello
          Hello !

          Les paquets "magiques" sont binfmt-support et qemu-user-static

          En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

        • [^] # Re: Ça a l'air rigolo

          Posté par  . Évalué à 2.

          Merci à toi pour ton aide. En cherchant un peu, j'ai retrouvé dans mes archives le code que j'avais testé une fois, et je l'ai retrouvé. Ca fonctionne avec l'appel de commande que tu m'as passé. J'arrive à afficher le caractère envoyé via l'UART sur la console.

          Et merci pour la découverte de qemu-system-*, c'est bien sympa comme outils !

          Oui très pratique. A l'origine, quand je me suis mis sur les micro:bit, j'utilisais la carte en elle-même mais c'était un peu compliqué de tester dans les transports. Puis j'ai vu que qemu supportait la micro:bit (partiellement, il ne supporte que le timer et l'uart - mais pour ce que j'en fais ça suffit …) donc je suis passé à l'émulateur …

          Je vais pouvoir continuer l'implémentation de mon système Forth (qui dure depuius avant le covid …).

        • [^] # Re: Ça a l'air rigolo

          Posté par  . Évalué à 2.

          Je viens de faire un autre test … sans l'option -serial stdio, je vois mes données s'afficher au niveau de la fenetre graphique. Il suffit de switcher du moniteur vers serial0 dans le menu view de la fenetre graphique qemu (il y a d'ailleurs moyen d'afficher toutes les sorties sous forme de tab en cochant la case adéquate dans le menu view- (show tabs).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.