在Linux中编写设备驱动程序

我是编写设备驱动程序的新手.

我想在ARM平台上为外设编写设备驱动程序.

第一个问题:在ARM平台上为外围设备编写设备驱动程序与在Linux中使用x86编写设备驱动程序有什么不同?

第二个问题:我检查了/ proc / iomem文件以查看处理器的当前地址映射.但是,并非所有外围设备(包括我要访问的外围设备)都不存在于该文件中.如何包含外设的地址范围?

第三个问题:设备树在编写设备驱动程序时的重要性是什么?

最佳答案
1.只要外围设备与SoC接口类似(即在两个平台上使用相同的硬件接口),就可以在x86和ARM上使用相同的驱动程序.这是开发独立于Linux内核核心的模块化驱动程序的优势.

2.如果您当前的地址映射(/ proc / iomem)中不存在您的特定外围设备,那么它可能意味着两种可能性之一:

>尚未加载设备驱动程序.
>设备使用其他形式的寻址(NOT内存映射I / O)

 有关外围设备的任何其他信息?它是如何与SoC连接的?

3. Linux内核中的设备树用于描述众多硬件(片上和外设),它们的互连和适用于在特定平台/板上正确配置和初始化的基本参数.设备树被写入.

本质上它执行相同的功能和当前Linux内核中的“板文件”.它还减少了bootargs对初始配置的依赖性,因为可以在设备树中提供相同的内容.有关device trees的更多信息.

转载注明原文:在Linux中编写设备驱动程序 - 代码日志