• # La vérité sur le SysTick

    Posté par (site web personnel, Mastodon) . En réponse au journal Prise en main de la carte Longan Nano RISC-V de Sipeed. Évalué à 2.

    Merci pour cette belle introduction à la longan nano. Juste pour préciser, avec 5€ (en fait 4ドル.90) on a aussi l'écran (RGB), c'est pas en option !
    Et l'usb est dans le microcontrôleur contrairement à beaucoup de kit de ce type, il n'y a pas de «ftdi» à côté pour faire de la conversion usb-uart ou usb-gpio.

    L'histoire du SysTick est visiblement une histoire de copier/coller de ARM. En fait le GD32VF103CBT6 de Gigadevice est un copier-coller de leur microcontrôleur GD32E103CBT6 dont ils ont juste changé le cœur pour mettre un processeur de type Risc-V (Bumblebee).

    Et ils ont fait pareil pour leurs base de code !

    Tout le code fourni initialement en tant que librairie était en fait le code de leur microcontrôleur ARM. À la lecture de l'article il semble que ce code se soit amélioré, mais à l'époque faire fonctionner l'USB (pour en faire un périphérique afficheur de stats pour mon pc) n'était pas une mince affaire.

    À l'origine, le SysTick est du pur standard ARM, qui ne peut être présent dans un processeur Risc-V. Comme la doc était du copié collé, c'est resté (du moins au début).

    En fait, le standard Risc-V décrit des registres mstatus, mtimecmp, ... qui sont accessibles via le CSR (Control Status Register). On ne peut pas lire/écrire ces registres via les instruction classiques load/store. Il faut utiliser les instructions spécifiques riscv csrrx.
    Il est donc impossible que le code ARM soit le même que le code RISC-V puisque se sont des instructions assembleur différentes, et il à donc fallu retoucher leur base de code.

    J'ai plus qu'une balle