当前位置: 首页 > article >正文

101.linux驱动(非ko)加载需要固件的一个小问题

1. 平台 还是rk3399(am40)

2. 内核:linux5.10

3. 文件系统: firefly ubuntu20.04

4. 需要加载的驱动 rtl8822be (pci)接口

一、错误的提示:提示这个固件rtw88/rtw8822b_fw.bin无法加载 

root@firefly:~# dmesg | grep 8822

[    6.983329] rtw_8822be 0000:01:00.0: Direct firmware load for rtw88/rtw8822b_fw.bin failed with error -2

[    6.992886] rtw_8822be 0000:01:00.0: enabling device (0000 -> 0002)

[    7.006063] rtw_8822be 0000:01:00.0: failed to request firmware

[    7.012028] rtw_8822be 0000:01:00.0: failed to load firmware

[    7.017706] rtw_8822be 0000:01:00.0: failed to setup chip efuse info

[    7.024072] rtw_8822be 0000:01:00.0: failed to setup chip information

[    7.034789] rtw_8822be: probe of 0000:01:00.0 failed with error -22

1.1 我查了一些资料,在网上把这个bin文件下载到了下来。

放到了/lib/firmware/rtw88/目录下(没有目录的则新建一个)

重启后,无法加载,故障提示依旧。

1.2 后来又看到资料说要放到/usr/local/lib/firmware/rtw88/目录下

又拷贝了一份到这个目录中

重启后,无法加载,故障提示依旧。

1.3 后来我把8822的驱动编译成模块

等到系统启动后,再分别加载对应的4个驱动,成功了。

1.4 再遇到这个问题,就是加载cdn_dp的时候,又一次碰到了这个问题

cdn-dp fec00000.dp: Direct firmware load for rockchip/dptx.bin failed with error -2

但是,这个驱动不能改为模块了!!!!没法加载了

明明在/lib/firmware目录有这个文件,同时我也复制一份到/usr/local/lib下,

重启,故障依旧。

1.5 晚上洗澡的时候,我突然想到了原因。

这个驱动加载的时候,文件系统还没有挂载,肯定没法找到对应的固件了。

那就必须把这个固件编译到内核中才行。说干就干!!!

1.6 解决

1.6.1 在kernel的目录下新建一个firmware目录

firmware目录里面放两个文件夹(目前我只需要两个),分别是rockchip和rtw88

然后把对应的bin文件放到对应的目录中

1.6.2 修改config

make menuconfig 

-> Device Drivers                                                                                       
         -> Generic Driver Options                                                                              
           -> Firmware loader                                                                                   
                -> Firmware loading facility (FW_LOADER [=y]) 

 

多个固件按空格分开,需要包含目录

1.6.3 保存后退出,重新编译内核。

烧录后,加载成功。

二、总结

2.1 开始一直是在想应该放在哪个目录才能加载呢?其实方向错了,那个时间点,文件系统还没有挂载,放哪都找不到

2.2 对于Direct firmware load for xxxxxxx failed with error -2 这种类似的错误,应该都可以用这个方法解决。

2.3 cdn-dp的问题没有解决,驱动是成功加载了bin文件,但是依然是不能显示,待查吧。


http://www.kler.cn/a/104396.html

相关文章:

  • 如何学习能减少对现有工作的依赖?
  • 《CS2》隆重登场,艾尔莎EA H610M-I和你征战新版本
  • Linux 错误处理(字符设备基础三)
  • Flutter报错RenderBox was not laid out: RenderRepaintBoundary的解决方法
  • 【Python】Windows跟随程序启动和关闭系统代理
  • Postman的高级使用,傻瓜式学习【上】
  • php-手动搭建windows的php和nginx环境
  • nodejs+wasm+rust debug及性能分析
  • win操作系统下安装Deepspeed
  • ChatGPT AIGC 快速合并Excel工作薄 Vlookup+INDIRECT
  • 树莓派系统文件解析
  • Leetcode刷题详解——山脉数组的峰顶索引
  • Qt篇——子控件QLayoutItem与实际控件的强转
  • VR软硬件测试知多少?
  • CSS笔记-狂神
  • C++标准模板(STL)- 类型支持 (类型特性,)
  • Python数据结构——数组
  • SpringCloudAlibaba实战-快速上手
  • selenium元素定位之xpath
  • Shopee本土店与跨境店有何区别?如何入驻?