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

linux_kernel驱动开发_驱动调试

整体框架

调试思路

  • 对比开发板检查差异性。
  • 用试波器或万用表调试。
  • 配合硬件工程师共同解决问题。

开发思路

  • 先在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、多核等机制; 


http://www.mrgr.cn/news/90264.html

相关文章:

  • deepseek+kimi自动生成ppt
  • 模拟算法:深入探讨与C++实现
  • AI大语言模型
  • 本地部署DeepSeek-R1模型(新手保姆教程)
  • DEEPSEEK与GPT等AI技术在机床数据采集与数字化转型中的应用与影响
  • STM32G4系列微控制器深度解析
  • C++STL(六)——list模拟
  • verilog练习:i2c slave 模块设计
  • 一文总结C++ STL算法库
  • android framework原生功能配置改动
  • React(三)
  • 分布式id探索
  • PromptSource官方文档翻译
  • 【报错信息】环境安装、python
  • 【02】RUST项目(Cargo)
  • 微信小程序分包异步化
  • 互联网大厂中面试的高频计算机网络问题及详解
  • 几种3D 旋转 的参数化形式
  • Node.js笔记入门篇
  • 使用 AlexNet 实现图片分类 | PyTorch 深度学习实战
  • Windows电脑本地部署运行DeepSeek R1大模型(基于Ollama和Chatbox)
  • 【RabbitMQ重试】重试三次转入死信队列
  • Pdf手册阅读(1)--数字签名篇
  • Ubuntu安装PgSQL17
  • 嵌入式音视频开发(一)ffmpeg框架及内核解析
  • 擎天柱例程35 串口绘图