关于U-boot驱动程序模型

时间:2016-04-12 12:26:57

标签: linux-kernel linux-device-driver u-boot

我有一个关于U-boot驱动程序模型的简单问题。我想知道何时以及如何触发驱动程序的函数操作。

例如,对于以太网驱动程序,这些是定义的操作:

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,
};

现在,这些eth_ops是在探测函数之后的初始化阶段调用的,还是只有在从ping,tftp等u-boot提示符运行某些命令时调用它们?

初始化阶段只会探测设备并将其移动到下一个子系统?

1 个答案:

答案 0 :(得分:1)

这取决于u-boot设置。如果bootcmd和bootargs环境变量定义了与网络相关的内容,例如从tftp服务器加载内核,它将首先调用start回调以及发送和接收send / rec回调。如果从闪存加载内核,则不需要u-boot网络,如果你没有在uboot shell上使用网络命令,则不会调用回调 Uboot驱动程序模型与Linux模型非常相似,实际上它们之间有很多通用代码。唯一的“重大”区别是uboot使用物理寻址,Linux使用MMU将物理空间转换为虚拟地址空间