andriod 中放在odm/firmware 下的FW文件和防止vendor/firmware 下有什么不同
时间: 2024-04-22 19:21:43 浏览: 26
在 Android 系统中,通常将固件文件(FW)放在 `vendor/firmware` 和 `odm/firmware` 两个目录下,这两个目录的作用和存放的文件有所不同。
- `vendor/firmware` 目录:该目录是 Android 系统的一部分,它通常用于存放设备的固件文件,例如 Wi-Fi、蓝牙、摄像头等设备的固件。这些固件文件在 Android 系统启动时就会被加载到设备的硬件中,以使硬件正常工作。
- `odm/firmware` 目录:该目录是由设备制造商提供的,它通常用于存放设备特定的固件文件,例如显示屏、触摸屏、传感器等设备的固件。这些固件文件是为了支持设备特定功能而存在的,只有该设备才需要使用这些固件文件。
因此,`vendor/firmware` 目录下的固件文件是通用的,即所有相同型号的设备都可以使用相同的固件文件;而 `odm/firmware` 目录下的固件文件是针对具体设备的,不同型号的设备需要使用不同的固件文件。此外,`odm/firmware` 目录下的固件文件也可能包含一些设备特定的配置信息,这些信息也只适用于该设备。
相关问题
在drivers/base/firmware_loader/main.c中fw_path加/vendor/firmware是否可以
在drivers/base/firmware_loader/main.c中,可以在fw_path中加入/vendor/firmware路径,来指定固件文件的查找路径。这对于设备厂商来说是很有用的,因为它可以让设备厂商将自己的固件文件放在/vendor/firmware中,而不需要修改Linux内核的代码,从而避免了一些潜在的问题。但是需要注意的是,在加入/vendor/firmware路径之前,需要确认固件文件的具体路径和名称是否正确,避免出错。
在drivers/base/firmware_loader/main.c中fw_path的调用流程
在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变量的作用就是指定固件文件的查找路径,从而找到正确的固件文件。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)