OLVASSEL.md 1.4 KB

Oktatóanyag 04 - Levelesládák

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.h, uart.c

uart_hex(d) kiír egy bináris értéket hexadecimális formátumban.

Mbox.h, mbox.c

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

Main

Lekérjük az alaplap egyedi szériaszámát, majd kiírjuk a soros konzolra.