NVT_Touch实现在驱动下载固件
说明:驱动里面已经实现下载的流程,我们要做的是把固件放到某个路径下,然后修改路径和名称对应上即可
1.需要打开支持更新固件的宏定义:

2.修改文件名称和路径
2.1 实际的固件名称要和定义的固件名称一致:

2.2 加载固件的路径:
index a4dd500bc141..f0de4cea42d0 100644 --- a/drivers/base/firmware_loader/main.c +++ b/drivers/base/firmware_loader/main.c @@ -470,6 +470,7 @@ static const char * const fw_path[] = { "/lib/firmware/updates", "/lib/firmware/" UTS_RELEASE, "/lib/firmware" + "/vendor/etc/firmware/" };
2.3 编译拷贝固件到指定位置:
diff --git a/device.mk b/device.mk index fb1daa42..5f1c1e6d 100644 --- a/device.mk +++ b/device.mk @@ -237,6 +237,9 @@ PRODUCT_COPY_FILES += \ frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml endif +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/NVT_ts/novatek_ts_fw.bin:$(TARGET_COPY_OUT_VENDOR)/etc/firmware/novatek_ts_fw.bin + ifeq ($(BOARD_HAS_GPS),true)
3.驱动加载流程:
nt36xxx_fw_update.c
Boot_Update_Firmware -->update_firmware_request -->request_firmware request_firmware是在drivers/base/firmware_loader/main.c中实现 -->fw_get_filesystem_firmware
static int fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv, const char *suffix, int (*decompress)(struct device *dev, struct fw_priv *fw_priv, size_t in_size, const void *in_buffer)) { size_t size; int i, len; int rc = -ENOENT; char *path; size_t msize = INT_MAX; void *buffer = NULL; /* Already populated data member means we're loading into a buffer */ if (!decompress && fw_priv->data) { buffer = fw_priv->data; msize = fw_priv->allocated_size; } path = __getname(); if (!path) return -ENOMEM; for (i = 0; i < ARRAY_SIZE(fw_path); i++) { size_t file_size = 0; size_t *file_size_ptr = NULL; /* skip the unset customized path */ if (!fw_path[i][0]) continue; len = snprintf(path, PATH_MAX, "%s/%s%s", fw_path[i], fw_priv->fw_name, suffix); if (len >= PATH_MAX) { rc = -ENAMETOOLONG; break; } .........return rc; }
其中就包含解析fw_path
static const char * const fw_path[] = { fw_path_para, "/lib/firmware/updates/" UTS_RELEASE, "/lib/firmware/updates", "/lib/firmware/" UTS_RELEASE, "/lib/firmware" "/vendor/etc/firmware/" };
这个request_firmware在其中起到很重要的作用


浙公网安备 33010602011771号