在drivers/base/firmware_loader/main.c中fw_path的调用流程
时间: 2023-12-06 08:05:35 浏览: 255
miwifi_r3600_firmware_aba17_1.1.19.7z
在Linux内核中,调用固件文件的过程是比较复杂的,涉及到多个模块和函数。下面是在drivers/base/firmware_loader/main.c中fw_path的调用流程:
1. 首先,内核会通过调用request_firmware函数来请求加载固件文件。
2. 在request_firmware函数中,会调用__request_firmware函数来实际处理固件文件的加载。__request_firmware函数会首先检查是否有缓存的固件文件可用,如果有,则直接返回缓存的文件。
3. 如果没有缓存的文件可用,则会调用request_firmware_into_buf函数来尝试从文件系统中加载固件文件。在request_firmware_into_buf函数中,会调用firmware_request_nowarn函数来实际处理固件文件的加载。
4. 在firmware_request_nowarn函数中,会调用firmware_request_cache函数来尝试从缓存中加载固件文件。如果缓存中没有可用的文件,则会调用firmware_request_name函数来从文件系统中加载固件文件。
5. 在firmware_request_name函数中,会调用firmware_find_firmware函数来查找固件文件。在firmware_find_firmware函数中,会通过调用firmware_search_path函数来在预定义的路径中查找固件文件。
6. 在firmware_search_path函数中,会依次在预定义的路径中查找固件文件。其中,预定义的路径包括/lib/firmware、/lib/firmware/<kernel-version>、/lib/firmware/<board-name>、/lib/firmware/<machine-id>、/lib/firmware/brcm、/lib/firmware/mrvl、/lib/firmware/intel、/lib/firmware/amd-ucode和/vendor/firmware等。
7. 如果在预定义的路径中没有找到固件文件,则会尝试调用firmware_fallback_request函数来查找备用的固件文件。
8. 如果最终还是没有找到可用的固件文件,则会返回错误提示。
可以看出,在Linux内核中,调用固件文件的流程比较复杂,涉及到多个函数和模块。在这个过程中,fw_path变量的作用就是指定固件文件的查找路径,从而找到正确的固件文件。
阅读全文