当前位置: 技术问答>linux和unix
高手请进,linux firmware!
来源: 互联网 发布时间:2016-07-05
本文导语: 最近做的东西要在驱动里面读取用户空间的一个文件,找了半天的资料,后来发现firmware可以实现这样的功能,内核的Documentation/firmware_class/ 里面也有一个例子。于是我把firmware_sample_driver.c编译后insmod,但是失...
最近做的东西要在驱动里面读取用户空间的一个文件,找了半天的资料,后来发现firmware可以实现这样的功能,内核的Documentation/firmware_class/ 里面也有一个例子。于是我把firmware_sample_driver.c编译后insmod,但是失败了,dmseg
显示如下:
[120149.952012] firmware_sample_driver: a ghost device got inserted :)
[120149.952012] firmware_sample_driver: Firmware load failed
[120149.952012] firmware_sample_driver: a ghost device got inserted :)
[120149.952012] firmware: requesting sample_driver_fw
[120149.952012] fw_register_device: device_register failed
[120149.952012] firmware_sample_driver: Firmware not available
[120149.954301] firmware: requesting sample_driver_fw
[120149.954356] fw_register_device: device_register failed
[120149.954373] firmware_sample_driver: firmware load failed
debian:~/firmware#
不知哪位高手能给我指点一下?小弟感谢了。
显示如下:
[120149.952012] firmware_sample_driver: a ghost device got inserted :)
[120149.952012] firmware_sample_driver: Firmware load failed
[120149.952012] firmware_sample_driver: a ghost device got inserted :)
[120149.952012] firmware: requesting sample_driver_fw
[120149.952012] fw_register_device: device_register failed
[120149.952012] firmware_sample_driver: Firmware not available
[120149.954301] firmware: requesting sample_driver_fw
[120149.954356] fw_register_device: device_register failed
[120149.954373] firmware_sample_driver: firmware load failed
debian:~/firmware#
不知哪位高手能给我指点一下?小弟感谢了。
|
- if(request_firmware(NULL, "sample_driver_fw", &ghost_device)!=0)
- {
- printk(KERN_ERR "firmware_sample_driver: Firmware load failedn");
- return;
- }
int request_firmware(const struct firmware **fw, char *name, struct device *device);
调用 request_firmware 要求用户空间定位并提供一个固件映象给内核; 我们一会儿看它如何工作的细节. name 应当标识需要的固件; 正常的用法是供应者提供的固件文件名. 某些象 my_firmware.bin 的名子是典型的. 如果固件被成功加载, 返回值是 0(负责常用的错误码被返回), 并且 fw 参数指向一个这些结构:
struct firmware {
size_t size;
u8 *data;
};
那个结构包含实际的固件, 它现在可被下载到设备中. 小心这个固件是来自用户空间的未被检查的数据; 你应当在发送它到硬件之前运用任何并且所有的你能够想到的检查来说服你自己它是正确的固件映象. 设备固件常常包含标识串, 校验和, 等等; 在信任数据前全部检查它们.
- {
- printk(KERN_ERR "firmware_sample_driver: Firmware load failedn");
- return;
- }
int request_firmware(const struct firmware **fw, char *name, struct device *device);
调用 request_firmware 要求用户空间定位并提供一个固件映象给内核; 我们一会儿看它如何工作的细节. name 应当标识需要的固件; 正常的用法是供应者提供的固件文件名. 某些象 my_firmware.bin 的名子是典型的. 如果固件被成功加载, 返回值是 0(负责常用的错误码被返回), 并且 fw 参数指向一个这些结构:
struct firmware {
size_t size;
u8 *data;
};
那个结构包含实际的固件, 它现在可被下载到设备中. 小心这个固件是来自用户空间的未被检查的数据; 你应当在发送它到硬件之前运用任何并且所有的你能够想到的检查来说服你自己它是正确的固件映象. 设备固件常常包含标识串, 校验和, 等等; 在信任数据前全部检查它们.
|
很简单嘛 你module_init 失败 原因是 register device的时候 失败。 看看 注册设备的那一块的代码。
|
内核编译的时候,有个选项(关于firmware的)需要添加
|
用ioctl不能读吗?
|
不会 帮顶
|
帮顶一下
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。