Mielőtt nekiugranánk az UART0-ának, szükségünk lesz a levelesládára. Ezért ebben az oktatóanyagban bemutatom a mailbox interfészt. Arra használjuk, hogy lekérdezzük az alaplap egyedi sorszámát, majd kiírjuk azt.
FIGYELEM: qemu nem irányítja át alapból az UART1-et a terminálra, csak az UART0-át, ezért -serial null -serial stdio
-t használj.
uart_hex(d)
kiír egy bináris értéket hexadecimális formátumban.
A levelesláda interfésze. Először értékekkel feltöltjük az mbox
tömböt, aztán meghívjuk a mbox_call(ch)
-t,
hogy értesüljön róla a GPU, megadva közben a levelesláda csatornáját.
Ebben a példában a property csatornát
használtam, aminek az üzenete a következőképp néz ki:
0. üzenet teljes hossza bájtban, (x+1)*4
1. MBOX_REQUEST mágikus szám, kérés típusú üzenetet jelent
2-x. parancsok
x+1. MBOX_TAG_LAST mágikus szám, nincs további parancs jelölése
Ahol minden egyes parancs szerkezete a következő:
n+0. parancs azonosító
n+1. adatterület mérete bájtban
n+2. nulla
n+3. opcionális adatterület
Lekérjük az alaplap egyedi szériaszámát, majd kiírjuk a soros konzolra.