2016-04-12 7 views
1

Ich habe eine einfache Frage in Bezug auf U-Boot-Treibermodell. Ich wollte wissen wann und wie Funktion Ops eines Treibers ausgelöst wird.Über U-Boot-Treiber Modell

Zum Beispiel für Ethernet-Treiber ist dies die definierte ops:

static const struct eth_ops designware_eth_ops = { 
    .start     = designware_eth_start, 
    .send     = designware_eth_send, 
    .recv     = designware_eth_recv, 
    .free_pkt    = designware_eth_free_pkt, 
    .stop     = designware_eth_stop, 
    .write_hwaddr   = designware_eth_write_hwaddr, 
}; 

Nun werden diese eth_ops bei der Initialisierung der Bühne nach Sonde Funktion aufgerufen werden oder diese werden nur aufgerufen, wenn einige Befehle von u-Boot-Prompt ausgeführt werden wie ping, tftp etc?

Initialisierungsphase würde nur das Gerät testen und es nächste Subsystem verschieben?

Antwort

1

Es hängt von den U-Boot-Einstellungen ab. Wenn die Umgebungsvariablen bootcmd und bootargs etwas definieren, das mit dem Netzwerk in Beziehung steht, wie das Laden des Kernels vom TFTP-Server, ruft es zuerst den Start-Callback und das Senden und Empfangen der Sende-/Rec-Callbacks auf. Wenn der Kernel von Flash geladen wird, ist kein U-Boot-Netzwerk erforderlich und wenn Sie keine Netzwerkbefehle für Uboot Shell verwenden, wird kein Rückruf aufgerufen. Das Uboot-Treibermodell ist dem Linux-Modell sehr ähnlich und tatsächlich gibt es eine Menge gemeinsamen Code Sie. Der einzige "große" Unterschied ist, dass Uboot physikalische Adressierung verwendet und Linux MMU verwendet, um physischen in virtuellen Adressraum zu konvertieren

+0

Vielen Dank für Ihre Antwort. Kann ich also sagen, dass diese Rückrufe (.start, .send, .recv, .hwaddr) nicht Teil der u-Boot-Initialisierungssequenz sind? –

+0

Ja. Sie können auf Uboot sehen, wenn Sie einen Ping- oder Tftp-Befehl von seiner Shell senden, initialisiert es zuerst das Netzwerkgerät –

Verwandte Themen