- 論壇徽章:
- 0
|
回復(fù) 3# aaaaa5aa
我最近在寫關(guān)于設(shè)備模型的文章,后面準(zhǔn)備寫固件開發(fā),可惜現(xiàn)在還沒寫。我只能提供你函數(shù)
ldd3
#include <linux/firmware.h>
int request_firmware(const struct firmware **fw, char *name,
struct device *device);
調(diào)用 request_firmware 要求用戶空間定位并提供一個(gè)固件映象給內(nèi)核; 我們
一會(huì)兒看它如何工作的細(xì)節(jié). name 應(yīng)當(dāng)標(biāo)識(shí)需要的固件; 正常的用法是供應(yīng)者
提供的固件文件名. 某些象 my_firmware.bin 的名子是典型的. 如果固件被成
功加載, 返回值是 0(負(fù)責(zé)常用的錯(cuò)誤碼被返回), 并且 fw 參數(shù)指向一個(gè)這些
結(jié)構(gòu):
struct firmware {
size_t size;
u8 *data;
};
void release_firmware(struct firmware *fw);
因?yàn)?request_firmware 請(qǐng)求用戶空間來幫忙, 它保證在返回前睡眠. 如果你
的驅(qū)動(dòng)當(dāng)它必須請(qǐng)求固件時(shí)不在睡眠的位置, 異步的替代方法可能要使用:
int request_firmware_nowait(struct module *module,
char *name, struct device *device, void *context,
void (*cont)(const struct firmware *fw, void *context));
這里額外的參數(shù)是 moudle( 它將一直是 THIS_MODULE), context (一個(gè)固件子
系統(tǒng)不使用的私有數(shù)據(jù)指針), 和 cont. 如果都進(jìn)行順利,
request_firmware_nowait 開始固件加載過程并且返回 0. 在將來某個(gè)時(shí)間,
cont 將用加載的結(jié)果被調(diào)用. 如果由于某些原因固件加載失敗, fw 是 NULL.
你在/linux-2.6.*/drivers/下
grep -r "request_firmware" ./*
看那些驅(qū)動(dòng)用了,研究一下。
我的bolg
http://blog.csdn.net/xxxxxlllllxl
后期我會(huì)寫固件開發(fā)的專題 |
|