linux_kernel驱动开发_驱动调试_debug

整体框架

调试思路

  1. 硬件连接异常:SPI 通信不稳定,导致寄存器读写错误,使 osc 读取到无效值(如 0xffffffff)。需检查芯片供电、SPI 总线电平、引脚连接是否正常。
  2. 设备树配置错误:若设备树中 MCP251XFD 芯片的寄存器映射、时钟参数等配置错误,会导致驱动写入 / 读取的寄存器值异常。需核对设备树中 SPI 节点、寄存器地址等配置。
  3. 驱动初始化逻辑缺陷:若驱动中寄存器初始化顺序、配置参数(如时钟分频值)与芯片手册不匹配,可能使寄存器值无效。需对照芯片数据手册,检查 osc 等寄存器的配置逻辑。
  • 对比开发板检查差异性。
  • 用试波器或万用表调试。
  • 配合硬件工程师共同解决问题。

开发思路

  • 先在config中打开相应宏开关。
  • 设备树中加入相应配置即可。(可以扩展讲解宏开关有无生效)

驱动开发

pcie

先lspci查看是否注册成功。然后才能看到其pcie设备 。

usb

使用lsusb查看

led

使用的是led子系统,可以在/sys/class/leds/中设置。

can

can盒子+candump cansend.

rtc

使用hwclock进行读写。

uart

I2c

I2ctools进行读写。

ethernet调试。

驱动分为两部分 mdio与gmac,配置完设备树后可以查看/sys/platform/mido/到相应设备。网卡模式为rgmii-rxid因此仅需要设置tx 延迟即可。

1、如果mdio下没有设备或读phyid错误检查网卡复位脚MDIO硬件连接。

2、如果网卡不能up需要检查gamc线。

3、如果能up但无法ping通需要检查TX延迟与晶振问题。 

switchRTL8370MB调试

硬件连接为spi+gmac,

spi 采样条件没有限制。

gmac中需要将延迟设置为0并强制设置成1000M。

8370的驱动是应用层通过open、ioctl调用进行spi通信。满足于系统的完整度与实时性,需要集成至kernel。

1、设备树spi中增加8370参数

2、gmac完成后即刻调用 rtl8370。

目的完成内核实时性。

显示设备调试。

虚拟网卡

思路:忽略对硬件的操作在内核中创建虚拟串口,应用层操作串口, 驱动中收发。

uart数据结构与系统调用, 注册中断用于接收数据。

网络为TcpClient, 通过ioctl传入server ip mac信息,创建网络数据包struct sk_buff进行 TCP三次握手,中间需要序号、检验和、长度。再发送数据 。

驱动调试

根据pc指向的函数地址

分为两种 1、驱动已集成内核中查看 /proc/kallsyms查看 或通过System.map查看。

2、使用obj-dump驱动查看地址 在/sys/module/ 中查看到偏移的 bss. data  .txt。 查看.txt就可以了

mipi与dp屏开发

内核开发

中断
  • 概念与作用:中断是硬件或软件向处理器发出的信号,用于通知CPU有紧急事件需要处理,打断当前运行的任务,从而实现异步事件的处理。
  • 在内核中的应用:内核中断处理程序(ISR)负责响应外设的中断请求,处理设备数据,并唤醒等待该事件的进程。
  • 深入理解:包括中断向量、中断优先级、嵌套中断、软中断与硬中断的区别,以及在 SMP(对称多处理)环境下中断处理的优化和锁的使用。

MMU

cache、多核等机制; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值