首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在嵌入式系统中为平台总线编写设备驱动程序?

在嵌入式系统中为平台总线编写设备驱动程序?
EN

Stack Overflow用户
提问于 2014-05-21 12:48:03
回答 1查看 2.2K关注 0票数 2

我已经在Linux中完成了一些驱动程序的实现,并且可以看到这些都是平台驱动程序。

代码语言:javascript
复制
drivers/net/ethernet/smsc/smsc911x.c

  static struct platform_driver smc911x_driver = {
    .probe           = smc911x_drv_probe,
    .remove  = smc911x_drv_remove,
    .suspend         = smc911x_drv_suspend,
    .resume  = smc911x_drv_resume,
    .driver  = {
            .name    = CARDNAME,
            .owner  = THIS_MODULE,
    },
};

上面是平台设备(基于smsc的以太网控制器)的驱动程序,而平台设备是在系统启动时不被自动探测的设备,与位于pci总线上的遗留设备不同。

我想我的这种理解在这里还可以吗?

现在,当我说是平台设备时,是否意味着这些设备(以太网控制器)坐在平台总线上,而在ARM架构上,默认的平台总线是AMBA。

所以,当我们在ARM板上焊接以太网控制器时,它应该坐在AMBA总线上,或者与AMBA总线接口?

如何确定我们将要编写的驱动程序是平台驱动程序还是普通驱动程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-25 12:20:19

根据我在开发ARM平台驱动程序方面的有限经验,AMBA设备通常在内存映射的IO寄存器接口的末尾有标识寄存器。

一般来说,如果您查看以太网控制器的参考手册并指定外围/组件标识寄存器(通常位于偏移量0xFE0-0xFEC和0xFFFC),则应该编写一个AMBA总线驱动程序。这些司机可由巴士司机自动识别。

否则,如果寄存器接口没有在偏移量0xFE0-0xFEC和0xFFFC上指定任何ID寄存器,那么您可能只想编写一个平台驱动程序。无法自动识别这些设备,需要将驱动程序专门附加到设备上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23783649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档