问题描述
首先为什么固件很重要。例如,在真实的驱动程序中,我看到有 DMA 或 MMIO 读/写完成,但通常 Linux 中的驱动程序代码在使用 request_firmware
函数从内核请求后添加固件结构。
当我可以使用直接内存访问从驱动程序读取和写入设备时,为什么要在 PCI 驱动程序中添加固件。 DMA 完全不同,与固件无关。 DMA 将设备对象映射到内核虚拟页面和固件结构对象简单具有读写操作。我不知道为什么需要它们。例如对于典型的驱动程序,这个函数是一个固件写操作的结构体
typedef void (*my_driver_write_phy)(struct mydriver_private *o,int register,int val);
这个函数被注册为回调和我的驱动程序固件结构的成员。所以我猜内核调用了这个函数。但我的问题是,内核什么时候调用这个函数。它是用于附加功能(请说明是否可以排除)还是每次在设备与系统之间进行数据传输时调用,包括访问 DMA 内存时调用
所以基本上真正的问题是:直接内存访问是否也需要固件?并且可以排除
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)