前言: 这篇文章介绍一下在调试camera驱动的过程,最常见的一个问题,i2c不通导致驱动注册不上,应该如何排查。...一、i2c地址问题: ①确认i2c地址是否配置正确: 一般sensor的datasheet都会明确给出i2c的地址,需要注意的是,大多数sensor都有SID选择引脚,有两个i2c地址可以选择,这里需要硬件确认选择是哪个地址...②i2c总线地址是否正确: 需要根据硬件原理图明确i2c是挂载在哪路i2c总线下,并在DTS正确配置。...③是否配置成8位地址: DTS中配置的i2c地址是7位地址,不包括最后的读写位,检查是否配置成8位地址,如上图展示的某sensor,其i2c地址有0x6c和0x20,这就是8位地址,在dts中需要配置为...if (ret < 0) { dev_err(dev, "Failed to enable xvclk\n"); return ret; } gpio是否被其他模块占用了,可以使用io命令查询
通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 首先需要以下两个文件: strace-4.5.15.tar.bz2 .../configure --host=arm-linux CC=arm-linux-gcc //配置configure #make...//生成strace命令文件 然后将strace命令文件,放入我们开发板的根目录/bin中,便能使用了 #cp strace /nfs_root/bin/ //nfs_root...:开发板的nfs系统根目录 3.strace命令使用 常用参数如下所示: -o 指定跟踪信息的输出文件 -t 记录跟踪信息的时间,以S为单位 -tt 记录跟踪信息的时间,以uS为单位 4.实例
通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 首先需要以下两个文件: strace-4.5.15.tar.bz2 .../configure --host=arm-linux CC=arm-linux-gcc //配置configure #make...//生成strace命令文件 然后将strace命令文件,放入我们开发板的根目录/bin中,便能使用了 #cp strace /nfs_root/bin/ //nfs_root:开发板的...nfs系统根目录 3.strace命令使用 常用参数如下所示: -o 指定跟踪信息的输出文件 -t 记录跟踪信息的时间,以S为单位 -tt 记录跟踪信息的时间,以uS
用gdb调试程序时,常常很困惑一些命令的使用,要么是不知道这个命令,要么忘了命令的使用方法。...呵呵,有时迷茫了自己处在什么堆栈的深处,这是使用where命令能够清晰的看到自己的位置,有时在循环太多让人受不了了,可使用u或者finish或者jump命令来跳出去。...和 汇编 i) u 内存单位(b: 1字节; h: 2字节; w: 4字节; g: 8字节) set vairiable a = 100 可以修改变量的值 commands 指定到了特定断点后执行的命令序列....gbinit gdb会从这个文件读取配置 cat ~/.gdb_history 呵呵,对于gdb时想要查看长的字符串老是显示不全,怎么半呢,gdb参看数组字符串时默认只是显示部分的数据,通过这个命令可以修改...: set print elements 0 默认这里设置是200,设置为0表示没有限制 还有其它一些set命令可以试试: set print address set print address
总结:上面已经将phy的状态设置成了 phydev->state = PHY_READY,同时完成了emac接口下的phy设备驱动注册,接下来将分析如何使用该p...
前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题。本文将简单介绍一下这些命令。..._64-linux-gnu/libc.so.6 (0x00007f0621931000) /lib64/ld-linux-x86-64.so.2 (0x00007f0621cf6000)...但是要特别注意的是,“瘦身”之后的elf文件由于没有了符号信息,许多调试命令将无法正常使用,出现core dump时,问题也较难定位,因此只建议在正式发布时对其进行“瘦身”。...--gdb gdb是一个强大的调试工具,但这里仅介绍两个简单使用示例。...有时候程序可能已经正在运行,但是又不能终止它,这时候仍然可以使用gdb调试正在运行的进程: gdb processFile PID #processFile为进程文件,pid为进程id,可通过ps命令查找到
Linux中编译C++代码的g++工具,以及g++的常用操作指令 2. Linux下C++命令行编译示例 3. Linux下的GDB调试器常用指令 1....进入调试模式 在进入调试模式之前,先编译源代码,如下过程。...普通编译方式 g++ sum.cpp -o no_g.out 编译出用于调试的可执行文件 g++ -g sum.cpp -o yes_g.out 使用gdb命令进行调试,如果我们调试 no_g.out...,将会提示一下图错误 因为no_g.out这个可执行文件不包含用于调试的信息,输入quit再按回车即可,通过gdb yes_g.out指令执行包含调试信息的可执行文件,看到以下输出 此时可以正常进入调试...在gdb调试中,如果我们只按回车键,gdb将执行我们最后一次输入的指令,所以我们可以一直按回车键继续让程序单步执行。
hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 描述: 我们以event1为例,当我们insmod挂载了键盘驱动后,出现一个event1设备, 此时没有按键按下,...比如键盘事件 __u16 code; // 对应的事件里支持的哪个变量,比如按键K __s32 value; // 对应的变量里的数值, 比如松开按键则是1,反之为0 }; 所以我们hexdump调试任何输入子系统...event XX驱动时,有信息就会打印上面数据 1.调试键盘驱动 (键盘驱动代码:http://www.cnblogs.com/lifexy/p/7553861.html) 以按开发板的按键 KEY_L...value=0 0000030 07c6 0000 cf70 000d 0000 0000 0000 0000 2.调试触摸屏驱动
一:连接Android移动设备 1.用USB连接手机 2.运行 adb devices,测试是否连接成功,能出现设备列表即可; 3.打开命令输入 adb tcpip 5555 结果 adb tcpip...bytes:535345072 连接wifi adb connect 192.168.50.141 结果 connected to 192.168.50.141:5555 然后就可以进行wifi调试了...二:连接模拟器 模拟器或者电视盒子在已知adb调试端口的情况下可以直接通过adb connect xxx.xxx.xxx.xxx:xxxx(模拟器或盒子的IP:adb调试端口), 通过adb devices
在 Linux 中,获取系统信息和监控系统资源的操作是非常常见的任务。以下是一些常用的命令和工具,以及一些相关的系统文件,用于获取 Linux 系统信息和监控系统资源。 1....-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux 2..../proc 文件系统 Linux 提供了 /proc 文件系统,通过读取其中的文件,可以获取有关系统和进程的信息。...$ strace -p PID 以上是一些系统监控和调试工具,用于深入了解系统运行状况、性能特征和调试问题。这些工具在系统管理、性能优化和故障排查中都有广泛的应用。...以上命令还有很多其他高级用法,在平时调试中我们可根据具体情况查看每个命令的详细参数和使用方法。
Python提供类似于C++ gdb的调试工具pdb,我们可以在Linux下使用pdb在命令行下进行Python程序的调试。...在命令行启动目标程序,加上-m参数。 python -m pdb hello.py 这样程序会自动停在第一行,等待你进行调试,如下图。...我们可以使用调试命令进行调试,和使用IED调试类似。 ? 2....然后可以在交互式环境中自动进入pdb调试模式,调试方法和上面类似。...下面说一下常用的调试命令(具体详细的资料参见官网文档): 断点相关命令: 设置断点: (Pdb) b 8 #断点设置该文件的第8行(b即break的首字母) 显示所有断点:(Pdb) b #
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...视频观看 百问网驱动大全 I2C协议 参考资料: i2c_spec.pdf 1....硬件连接 I2C在硬件上的接法如下所示,主控芯片引出两条线SCL,SDA线,在一条I2C总线上可以接很多I2C设备,我们还会放一个上拉电阻(放一个上拉电阻的原因以后我们再说)。 2....传输数据类比 怎么通过I2C传输数据,我们需要把数据从主设备发送到从设备上去,也需要把数据从从设备传送到主设备上去,数据涉及到双向传输。...下图:白色背景表示"主→从",灰色背景表示"从→主" 3.3 I2C信号 I2C协议中数据传输的单位是字节,也就是8位。但是要用到9个时钟:前面8个时钟用来传输8数据,第9个时钟用来传输回应信号。
Linux内核将 I2C 驱动分为两部分: I2C 总线驱动, I2C总线驱动就是SOC的 I2C控制器驱动,也叫做 I2C适配器驱动。...I2C驱动 i2c_driver 类似 platform_driver,是我们编写 I2C 设备驱动重点要处理的内容, i2c_driver 结构体定义在 include/linux/i2c.h 文件中...I2C设备 I2C设备结构体i2c_client 结构体定义在 include/linux/i2c.h 文件中,内容如下: struct i2c_client { unsigned short...Linux 内核将 SOC 的 I2C 适配器(控制器)抽象成 i2c_adapter, i2c_adapter 结构体定义在 include/linux/i2c.h 文件中,结构体内容如下: /*...Linux I2C总线的运行机制: 注册I2C驱动 将I2C驱动添加到I2C总线的驱动链表中 遍历I2C总线上的设备链表,根据i2c_device_match函数进行匹配,如果匹配调用i2c_device_probe
GDB调试 GDB是GUN发布的一个强大的程序调试工具,也是Linux程序员不可或缺的一大利器。 安装GDB 注意安装你所需要的版本。...gcc -g hello.c -o hello 启动GDB调试。 gdb hello GDB和Shell一样支持命令补全。。...---- 获取帮助命令 GDB将命令分为12个大类,使用命令 “help 子类别”,可以查看每个类下面的详细帮助。...s ---- 监视变量 print 调试程序最基本的需求就是监视变量的值,可以使用print命令,缩写为p,显示指定变量的值。...bt ---- 退出GDB quit 调试完毕后,使用quit命令,缩写为q,退出gdb程序。 q
Coredump 调试 Coredump是什么?...Linux环境下,当程序异常退出(发生段错误)时,会产生一个core文件,该文件记录了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个文件...---- 如何调试 编译的时候添加-g选项,增加调试信息。 gdb program core_file **示例:**一个会产生异常退出的程序,非法指针访问。...执行调试命令,结果如下图所示。...select-frame n #对应于 frame 命令 up-silently n #对应于 up 命令 down-silently n #对应于 down 命令 ---- frame/f
gdb调试 复习并整理gdb 1. 调试准备 被调试的程序需要生成调试符号信息,即在gcc/g++编译时加上-g选项。...文件——定位进程崩溃问题 LINUX默认不会打开程序崩溃时产生的core文件。...4. gdb调试多线程程序 4.1 调试多线程程序的方法 先gdb让程序跑起来,然后Ctrl+C中断程序,使用Info threads命令查看当前进程下有多少线程在运行。...set scheduler-locking step当且仅当使用next或step命令做单步调试时会锁定当前线程,如果使用until,finish,return等线程内调试命令(它们不是单步控制命令),...5. gdb调试多进程程序 5.1 方法一 先在一个shell窗口中调试父进程,等待子进程被fork出来后,再开启另外一个shell窗口使用gdb attach命令将gdb attach到子进程上。
在命令行中可以使用jdb命令来进行类的调试: 类Hello.java如下: class Hello{ public static void main(String[] args){...System.out.println("输出100/0的结果:"); System.out.println(100/0); } } 在类目录下使用 javac Hello.java 命令编译该类生成字节码文件...; 使用 jdb 命令开启调试 使用 run 命令运行java类: D:\java_basic_note>jdb Hello 正在初始化jdb... > run 运行Hello 设置未捕获的java.lang.Throwable...java.lang.ArithmeticException (未捕获)"线程=main", Hello.main(), 行=4 bci=14 4 System.out.println(100/0); 通过输出信息我们可以看到调试结果
资料下载 coding无法使用浏览器打开,必须用git工具下载: git clone https://e.coding.net/weidongshan/linux/doc_and_source_for_drivers.git...I2C硬件框架 在一个芯片(SoC)内部,有一个或多个I2C控制器 在一个I2C控制器上,可以连接一个或多个I2C设备 I2C总线只需要2条线:时钟线SCL、数据线SDA 在I2C总线的SCL、SDA...I2C控制器驱动 它根据I2C协议发出各类信号:I2C设备地址、I2C存储地址、数据 它根据I2C协议判断 3....我们讲什么 3.1 对于Linux 从上到下: 先讲I2C协议 APP可以通过两类驱动程序访问设备 I2C设备自己的驱动程序 内核自带的i2c-dev.c驱动程序,它是i2c控制器驱动程序暴露给用户空间的驱动程序...: 先讲I2C协议 APP I2C Device Driver I2C Controller Driver(也被称为adapter)
以前在IDE调试的话,就很容易设置断点,查看参数值,到了 linux 下就变得比较麻烦了。 目前觉得比较重要的就是: 1.设置断点: gdb命令 break,也可以用 b 。...比如, b cyc::TcpClient::onMessage 2.查看参数 gdb命令 print,也可以 p。方法 p para.显示一次。...3.一直显示 gdb命令 display,方法 display para。...取消的话 undisplay 编号 4.列出信息 gdb命令 info,info break, info display 5.调试 单步调试 n,进入函数的单步调试 s,跳到下一个断点 c 6.读取文件...gdb命令 file , file path. 7.执行 gdb 命令 run, run args. 8.显示代码 gdb 命令 list,list [行号] 之后可以按 Enter 继续显示
1.基本概念 ---- 总线 总线代表着同类设备需要共同遵守的工作时序,不同的总线对于物理电平的要求是不一样的,对于每个比特的电平维持宽度也是不一样,而总线上传递的命令也会有自己的格式约束。...如I2C总线上连接的I2C从设备都有一个标识自己的设备地址,由这个设备地址来确定主设备发过来的命令是否该由它来响应。 驱动 简单的说驱动代表着操作设备的方式和流程。...Linux总线设备框架的工作原理 如果想要弄清楚I2C驱动框架,必须深刻的理解Linux的总线设备框架。之所以会形成这样的框架,很重要的原因是为了代码的复用性。...为了提高驱动的可移植性,Linux抽象出一套管理资源的函数。设备是存在的硬件,在设备里包含自己的属性,也包含需要用到的资源。...3.Linux下I2C驱动程序的体系结构 ---- 对于Linux下的I2C驱动,其体系结构的组成主要分为三个部分 (1)I2C核心:I2C核心提供了I2C总线驱动和设备驱动的注册,注销方法,I2C通信方法
领取专属 10元无门槛券
手把手带您无忧上云