Hello World sur la Zybo. Permet de tester le printf() sur l'UART. Pour le visualiser, il faut démarrer sur la carte SD et se connecter avec la commande: $ pyserial-miniterm /dev/ttyUSB1 115200 Permet de synthétiser le schéma représenté sur le document hw/design_0.pdf: 1) Software + GPIO: - La LED_0 est allumée. - Un appui sur le bouton BTN_0 est vu par le Zynq sur le GPIO configuré en entrée: EMIO[1]. - Dans le main(), dans une boucle infinie, la valeur lue sur le GPIO EMIO[1] est inversée puis appliquée sur GPIO configuré en sortie: EMIO[0]. - EMIO[0] est connecté à la LED_0 qui s'éteint. 2) Hardware: - La LED_1 est éteinte. - Un appui sur le bouton BTN_1 est connecté à une flip-flop et recopié sur la LED_1 à chaque front montant de l'horloge. - L'horloge est fournie par le Zynq. 3 modes de fonctionnement: 1) Via une carte SD: - faire "make sdcard" et copier le fichier sdcard/boot.bin sur la carte SD - placer le jumper sur la board pour sélectionner le démarrage sur la carte SD - démarrer la board - se connecter à l'UART avec "pyserial-miniterm /dev/ttyUSB1 115200" - reset de la board pour voir le printf("Hello World"). 2) Via openOCD: (note: printf() ne fonctionne pas car openOCD utilise la liaison série pour communiquer avec la board) - placer le jumper sur la board pour sélectionner le démarrage sur le JTAG - démarrer la board - faire "make openocd" - lancer gdb dans un autre terminal avec la commande: $ gdb-multiarch -ex "set architecture armv7" \ -ex "target extended-remote localhost:3333" \ --command="gdbinit.gdb" - dans gdb, faire "continue" pour sortir du breakpoint au niveau du main() 3) Via QEMU (logiciel seulement): (note: printf() ne fonctionne pas car le FSBL s'arrête avant d'avoir configuré l'UART ; il est possible de re-configurer les registres a-posteriori) - faire "make qemu" - lancer gdb dans un autre terminal avec la commande: $ gdb-multiarch -ex "target remote localhost:1234" --command="gdbinit.gdb" - dans gdb, attendre le timeout du FSBL qui n'arrive pas à démarrer les périphériques. Testé avec: - Vivado v2019.2 (64-bit) - arm-none-eabi-gcc (15:8-2019-q3-1+b1) 8.3.1 20190703 (release) - GNU ld (2.35.2-2+14+b2) 2.35.2 - Xilinx Bootgen v2019.2 - QEMU emulator version 5.2.0 - Open On-Chip Debugger 0.11.0-rc2 - GNU gdb (Debian 10.1-1.7) 10.1.90.20210103-git - python3-serial 3.5~b0-1 TODO: - Faire fonctionner l'UART à la fois via la carte SD et via QEMU.