ko驱动模块rmmod 后insmod 异常问题解决

本文记录了一次尝试加载名为 xxx.ko 的内核模块时遇到的问题,包括 debugfs 目录创建失败、I2C 客户端注册失败、空指针解引用导致的系统崩溃等关键错误。涉及的内核模块及相关驱动程序众多,如 esp8089、mac80211 等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

insmod xxx.ko
ldo6: Failed to create debugfs directory
-->set voltage ret 0 min_uV=3300000, max_uV=3300000
-->***set xxx cvbs voltage to 3.0v
xxx_init()
nr 2
i2c i2c-2: Failed to register i2c client xxx at 0x44 (-16)
Failed to create i2c new device.
VIC = 3
Unable to handle kernel NULL pointer dereference at virtual address 00000004
pgd = ca29c000
[00000004] *pgd=4a273831, *pte=00000000, *ppte=00000000
Internal error: Oops: 817 [#1] THUMB2
Modules linked in: xxx(+) esp8089 mac80211 hostap rfkill_regulator af_key af_packet lib80211 cfg80211 xfrm_ipcomp xfrm_user xfrm_algo tcp_htcp tcp_westwood tcp_cubic tcp_bic tcp_diag inet_diag xfrm4_mode_tunnel xfrm4_mode_transport xfrm4_mode_beet arptable_filter arpt_mangle arp_tables nf_defrag_ipv4 xt_mark cls_u32 act_gact tun libphy mii ansi_cprng hx280enc_265 hx280enc_h1 vdec_g1 Felix(O) [last unloaded: xxx]
CPU: 0 PID: 857 Comm: insmod Tainted: G        W  O 3.10.0-InfoTMIC #1
task: ca27c6c0 ti: c97aa000 task.ti: c97aa000
pc : [<bf94e072>]    lr : [<bf94e073>]    psr: 60000033
sp : c97abe38  ip : 00000033  fp : c052b340
r10: c97aa000  r9 : bf94e001  r8 : c97aa000
r7 : 00000000  r6 : bf94cb68  r5 : 00000001  r4 : bf94cc98
r3 : 00000000  r2 : c0500a4c  r1 : 00000000  r0 : 00000007
Flags: nZCv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment user
Control: 50c53c7d  Table: 4a29c059  DAC: 00000015




SP: 0xc97abdb8:
bdb8  c001990e 60000033 00000000 00000000 00000000 00000000 c0533c70 bf94e072
bdd8  60000033 ffffffff c97abe24 c97aa000 bf94e001 c000c475 00000007 00000000
bdf8  c0500a4c 00000000 bf94cc98 00000001 bf94cb68 00000000 c97aa000 bf94e001
be18  c97aa000 c052b340 00000033 c97abe38 bf94e073 bf94e072 60000033 ffffffff
be38  ca1d4000 00000000 bf94cbb0 00000000 00400100 bf94cb74 bf94cb68 bf94cc7c
be58  c97aa000 c000846f c0502fb4 c050e42c ffffffff 00000000 c0502fb4 c002d22d
be78  00000000 ca1c9700 00000000 00400100 bf94cb74 bf94cb68 bf94cc7c bf94cbb0
<think>好的,我需要帮助用户将dht11.ko驱动模块复制到嵌入式开发板的根目录。根据用户提供的引用内容,他们之前已经成功编译了驱动模块,现在需要传输到开发板。 首先,常见的传输方法有哪些呢?通常有通过U盘、网络传输(如SCP、NFS)、ADB工具或者串口工具。用户可能使用的是Linux环境,所以SCP可能是一个快捷的方式,特别是如果开发板支持SSH的话。另外,引用[1]提到使用insmodrmmod加载和卸载驱动,说明开发板已经运行Linux系统,可能具备网络功能。 用户需要将文件复制到根目录,可能需要权限。根目录通常需要root权限,所以可能需要使用sudo或者以root用户操作。另外,开发板的存储空间是否足够?需要确认,但用户可能已经检查过了。 步骤方面,首先确定开发板和主机之间的连接方式。如果使用网络,SCP是常用的方法。例如,用户可以通过SCP命令从主机复制到开发板。假设开发板IP是192.168.1.100,命令可能是scp dht11.ko root@192.168.1.100:/。不过需要注意权限问题,可能需要输入密码。 如果开发板没有开启SSH,可能需要使用U盘或者SD卡。将驱动模块复制到存储设备,然后挂载到开发板,再复制到根目录。引用[1]中提到修改引脚配置,可能用户已经熟悉开发板的文件系统结构,所以挂载点可能是/media或者/mnt。 另外,使用ADB工具也是一种可能,特别是Android嵌入式设备。但根据引用内容,开发板运行的是Linux,所以ADB可能不适用。 需要注意的是,根目录通常是只读的,或者某些系统分区可能挂载为只读。用户可能需要将驱动模块放在可写的目录,如/lib/modules下,然后加载。但用户明确要求根目录,可能需要确认是否有写入权限,可能需要重新挂载根文件系统为可写,例如mount -o remount,rw /。 最后,完成复制后,用户需要使用insmod加载驱动,如引用[1]中的例子,所以可能需要确保文件在正确的位置,并具有执行权限。 总结可能的步骤:1. 确定连接方式;2. 使用SCP或U盘传输;3. 处理权限问题;4. 复制到目标目录。</think>要将$dht11.ko$驱动模块复制到嵌入式开发板根目录,可通过以下步骤实现: ### 一、文件传输方式选择 1. **SCP网络传输**(推荐) - 开发板需开启SSH服务 - 执行命令: $$scp dht11.ko\ root@开发板IP地址:/$$ 示例:`scp dht11.ko root@192.168.1.100:/` - 需输入开发板root密码[^2] 2. **U盘挂载方式** ```bash mount /dev/sda1 /mnt # 挂载U盘 cp /mnt/dht11.ko / # 复制到根目录 umount /mnt # 卸载U盘 ``` 3. **NFS共享目录** ```bash mount -t nfs 主机IP:/共享路径 /mnt cp /mnt/dht11.ko / ``` ### 二、权限与路径验证 1. 确保根文件系统可写: $$mount -o remount,rw\ /$$ 2. 验证文件完整性: ```bash ls -l /dht11.ko # 检查文件大小 md5sum /dht11.ko # 校验文件哈希值 ``` ### 三、驱动加载验证 复制完成后执行: ```bash insmod /dht11.ko # 加载驱动 dmesg | tail -n 10 # 查看内核日志 ``` 若出现类似`DHT11 detected`的日志,表明驱动加载成功[^1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值