本文共 980 字,大约阅读时间需要 3 分钟。
request_firmware函数主要是用来在kermnel 里给外围设备更新固件的时候,获得固件文件的。
调用此函数后,编译进系统的固件文件,就被调用内存。
当调用request_firmware 函数时,它会自动在几个固定的文件夹下搜索,查找和文件名字相同的文件,然后打开读到内存。
1.调用方法:
const struct firmware *cfg; int ret; ret = mxt_update_file_name(dev, &data->cfg_name, buf, count); if (ret) return ret; ret = request_firmware(&cfg, data->cfg_name, dev); if (ret < 0) { dev_err(dev, "Failure to request config file %s\n", data->cfg_name); ret = -ENOENT; goto out; }
mxt_update_file_name() // 在本例子中,用来获得固件文件名字。
其中 &data->cfg_name 指的是固件文件名字。
cfg 是读到内存后的固件文件内容。
2. 固件文件的存放文件夹位置:
固件文件存放的文件夹位置,在kernel代码里可以添加和更改。更改代码位置如下:
在高通平台上,代码文件位置:/drivers/base/firmware_class.c
/* direct firmware loading support */static char fw_path_para[256];static const char * const fw_path[] = { fw_path_para, "/lib/firmware/updates/" UTS_RELEASE, "/lib/firmware/updates", "/lib/firmware/" UTS_RELEASE, "/lib/firmware", "/lib64/firmware", "/mnt/update", "/lib/firmware/image"};
转载地址:http://pyngi.baihongyu.com/