我在将固件正确安装到Android设备上时遇到麻烦,我不断得到:

<3>[ 3590.997375] usb 3-1.4: ath9k_htc: Firmware - htc_7010.fw not found

如果在运行Ubuntu的标准Linux机器上,我将htc_7010.fw放在/lib/firmware中,则不会出现此错误。

但是,如果将此固件放在Android上的/lib/firmware中,仍然会收到错误消息。我尝试了以下所有目录,但仍然收到错误:
/lib/firmware
/etc/firmware
/system/lib/modules
/system/lib/firmware
/system/etc

没有这样的运气...是什么决定了固件应该在哪里,如何确定要扫描固件的目录?

最佳答案

在Android(无论如何都是ICS)上,它都有自己的守护程序/服务(或任何您想调用的守护程序)来管理热插拔事件,包括固件请求。在<android>/system/core/init/devices.c中,有两个#define,它们指定将检查固件的位置:

#define FIRMWARE_DIR1   "/etc/firmware"
#define FIRMWARE_DIR2   "/vendor/firmware"

在我最初构建ICS文件系统的过程中,/etc/firmware不存在(而etc目录似乎是在启动/初始化时创建的符号链接(symbolic link))。我必须在NFS安装的rootfs上放置固件的目录是<mount point>/system/etc/firmware
完成此操作后,来自我的模块的request_firmware()调用成功完成。

10-08 02:11