request_firmware函數的使用

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"
};

 

發佈了36 篇原創文章 · 獲贊 156 · 訪問量 61萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章