[Linux]编写Linux驱动常见陷阱及解决办法

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
问题1、驱动的init函数声明错误
出错:
[root@localhost]# insmod phyinfo.ko
insmod: error inserting 'phyinfo.ko': -159951552 Success
 
原因:
驱动实现不对:
static void phyinfo_init(void)
{
......
......
}
module_init(phyinfo_init);
 
解决:
phyinfo_init函数必须有返回值!如可以实现定义如下:
static int phyinfo_init(void)
{
......
......
return 0;
}
 
 
问题2、linux/config.h头文件问题
出错:
/root/source/my-drivers/chartest/chartest.c:1:26: error: linux/config.h: No such file or directory
make[2]: *** [/root/source/my-drivers/chartest/chartest.o] Error 1
make[1]: *** [_module_/root/source/my-drivers/chartest] Error 2
make[1]: Leaving directory `/root/source/linux-2.6.30.5'
make: *** [modules] Error 2
 
原因:
The file include/linux/config.h has been removed from 2.6.19 kernel.

解决:
1、把#include 修改为如下:
#ifndef _LINUX_CONFIG_H
#define _LINUX_CONFIG_H
#include
#endif
2、直接删掉#include
3、touch一个空的linux/config.h
 
 


从零构建:手把手教你编写Linux I2C设备驱动 本文手把手教你从零编写Linux I2C设备驱动,详细讲解I2C子系统架构、设备树配置、驱动框架搭建及通信实现。通过实战案例和代码示例,帮助开发者掌握传感器、存储器等外设的驱动开发技巧,避开常见陷阱,提升嵌入式开发能力。 阅读详情

相关推荐

ADRV9009开发实战:避开Linux驱动与CPACK配置的常见陷阱与误区

本文深入探讨ADRV9009开发中Linux驱动与CPACK配置的常见陷阱,提供实战解决方案。重点解析CPACK数据包处理机制、DMA传输内存对齐问题及多通道同步技巧,帮助开发者规避数据错位、驱动兼容性等典型问题,提升嵌入式系统开发效率与稳定性。

plum99的博客 221

linux学习心得体会及遇到的问题

linux学习心得体会、及遇到的困难、及解决办法linux学习心得体会及遇到的问题

PCIe生态中的隐形桥梁:RC驱动开发中的常见陷阱与解决之道

本文深入探讨PCIe RC驱动开发中的关键挑战与解决方案,涵盖链路协商、配置空间访问、ATU配置、DTS设置等核心环节。针对Linux驱动开发,提供实用的调试技巧和性能优化策略,帮助开发者规避常见陷阱,构建稳定高效的PCIe生态系统。

herb5的博客 594

C1083:无法打开包括文件:“qcustomlist.h”:No such file or directory

原因:最初头文件加载的有问题,才会导致出现这个问题。 解决办法:只是单纯的清理项目,重新rebuild,并不能解决这个bug. 正确的做法是,新建个工程,重新添加文件并编译,编译通过。

weixin_43829023的博客 1097

解决Android 源码编译“audio_processing_impl”时,报错“fatal error: list: No such file or directory”问题

In file included from external/webrtc/src/modules/audio_processing/audio_processing_impl.cc:11:0: external/webrtc/src/modules/audio_processing/audio_processing_impl.h:16:16: fatal error: list: No such file or directory compilation terminated.

天苍野茫 2955

STL标准库 fatal error: list: No such file or directory

1、源码 list_demo.c #include <stdlib.h> #include <stdio.h> #include <list> int main () { std::list<int> mylist; int sum (0); mylist.push_back (100); mylist.push_b...

阿Sir问道 4300

C++ list 使用方法

C++ list 使用方法使用 list需引入头文件#include <list>引入命名空间 using namespace std;list函数如下//assign() 给list赋值 //back() 返回最后一个元素的引用 //begin() 返回指向容器第一个元素的指针 //clear() 删除所有元素 //empty() 如果l

lq 3945

Linux驱动错误码,编写Linux驱动常见错误(不断更新)!

工作中遇到的编写Linux驱动常见错误和注意事项整理,将不断更新。问题1、驱动的init函数声明错误出错:[root@localhost]# insmod phyinfo.koinsmod: error inserting 'phyinfo.ko': -159951552 Success原因:驱动实现不对:static void phyinfo_init(void){............}m...

weixin_35892206的博客 819

Linux WiFi驱动开发实战:从mac80211框架到虚拟网卡驱动编写

Linux无线网络驱动是连接内核与无线网卡硬件的关键组件,它基于mac80211/cfg80211框架实现,将复杂的802.11协议状态机抽象为统一的软件接口。其核心原理是通过实现ieee80211_ops操作集,让驱动能够响应框架的扫描、连接、数据收发等指令,并直接操作硬件寄存器完成实际任务。这项技术的价值在于为嵌入式设备、物联网终端和定制硬件提供了灵活的网络连接能力,使开发者能够为特定芯片或模组适配Linux系统。在应用场景上,无论是树莓派等开发板的无线功能扩展,还是工控设备中SDIO接口WiFi模组的

weixin_33884611的博客 431

嵌入式Linux驱动开发必知的8个陷阱(设备树篇)

掌握嵌入式 Linux 的 C 语言驱动开发(设备树 + 内核模块)常见陷阱与规避方法,提升驱动稳定性与兼容性。详解设备树配置错误、资源映射冲突等8大典型问题,适用于ARM平台驱动调试与量产项目。实战导向,助你高效开发可靠驱动,值得收藏。

LogicGlow的博客 938

基于Linux的PCIe设备驱动开发入门到精通-- 8.1 编写健壮的Kbuild Makefile

在真实的开发环境中,驱动项目往往更加复杂:包含多个源文件、头文件、可能需要条件编译、支持交叉编译,甚至需要集成到完整的内核树中。第三部分:进阶篇 - 构建完整驱动 驱动编译、部署与调试 8.1 编写健壮的Kbuild Makefile。在上一章的实战中,我们成功构建并运行了一个完整的PCIe驱动。随着驱动功能的增加,它也需要不断演进。下一节《8.2 驱动调试艺术:从printk到KGDB》,我们将直面内核崩溃的恐惧!,从基础语法到高级技巧,手把手教您编写专业级的驱动构建脚本。,用于指定要构建的目标。

MHD0815的博客 735

为什么你的驱动总出错?嵌入式Linux开发者的C语言陷阱全曝光

掌握嵌入式 Linux 的 C 语言驱动开发核心技巧,避开内存泄漏、竞态条件与硬件交互常见陷阱。适用于ARM开发板、工业控制等场景,提升稳定性与效率。实用避坑指南,值得收藏。

DevPath的博客 861

深入Linux内核:SDIO驱动开发中的陷阱与性能优化实战

本文深入探讨Linux内核中SDIO驱动开发的常见陷阱与性能优化策略。针对嵌入式系统中的SDIO协议实现,详细分析数据传输超时、DMA配置错误、中断冲突等问题的解决方案,并提供从寄存器调试到系统级优化的全链路实战指南,帮助开发者提升驱动稳定性和传输效率。

yhn45678901的博客 1013

使用libusb编写用户态驱动操作指南

深入讲解如何利用libusb在用户空间实现USB设备驱动控制,涵盖设备通信、数据传输等核心环节,帮助开发者高效掌握libusb应用技巧。

weixin_30299319的博客 884

你真的会写Linux内核模块吗?深入剖析C语言驱动开发核心陷阱

掌握嵌入式 Linux 的 C 语言驱动开发核心技巧,深入解析内核模块编写中的常见陷阱与优化策略。涵盖设备驱动适配、内存管理与中断处理等关键方法,适用于物联网、工控等场景。提升代码稳定性与兼容性,值得收藏。

CompiLume的博客 939

Linux网络驱动开发的隐形陷阱常见误区与性能优化实战

本文深入探讨Linux网络驱动开发中的常见误区与性能优化实战,重点解析NAPI机制、sk_buff内存管理、DMA缓冲区配置等核心问题。针对PHY芯片链路状态调试、中断优化等隐形陷阱提供解决方案,帮助嵌入式开发者提升网络驱动稳定性和吞吐量。

pz89012345的博客 599

QMI8658A硬件设计陷阱:从原理图到Linux驱动常见误区与避坑指南

本文深入剖析QMI8658A姿态传感器在硬件设计、接口配置到Linux驱动开发全流程中的常见陷阱与解决方案。涵盖电源去耦、PCB布局、I2C地址配置、设备树调试等关键环节,提供实用的避坑指南和代码示例,帮助开发者充分发挥这款高性能MEMS惯性测量单元的潜力。

tcp8optimizer的博客 249

Kali2022实战:手把手教你编译Linux内核驱动(附常见错误排查)

本文详细介绍了在Kali2022系统中编译Linux内核驱动的完整流程,包括环境配置、驱动开发、调试技巧及生产环境部署。特别针对版本冲突、Makefile优化、动态调试等常见问题提供实战解决方案,帮助开发者高效构建稳定的内核模块。

q6r7s8t9的博客 931
上一篇: [Linux]Linux shell必知必会的命令总结
下一篇: [信号检测与估计] 充分性与MVUB
leonsc
博客等级 码龄18年 29粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值