linux_kernel驱动开发_驱动调试

news/2025/2/11 21:21:31/

整体框架

调试思路

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

开发思路

  • 先在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.ppmy.cn/news/1571243.html

相关文章

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展,以DeepSeek为代表的大语言模型(LLM)正在逐步渗透到传统硬件开发领域。在FPGA(现场可编程门阵列)和IC(集成电路)开发这一技术密集型行业中,DeepSeek凭借其…

前后端分离项目部署到云服务器、宝塔(前端vue、后端springboot)详细教程

一、部署介绍 部署的环境是宝塔(宝塔9.0.0)、阿里云服务器(centos 7.6);前端是Vue3项目、后端是springboot3x、jdk11、数据库有redis、mysql;搜索采用的是es。 由于宝塔面板中可以快速进行环境的配置&…

C# 字符串与正则表达式介绍

.NET学习资料 .NET学习资料 .NET学习资料 在 C# 编程中,字符串和正则表达式是处理文本数据时不可或缺的工具。深入理解它们的特性和用法,能够显著提升开发效率和代码质量。 一、C# 字符串 (一)字符串的不可变性 在 C# 中&…

centOS8安装MySQL8设置开机自动启动失败

提供一个终极解决方案虽然systemctl 更符合管理预期但是不能用 使用一下命令 修改配置文件、修改mysql.service全是问题 systemctl start mysqld systemctl enable mysqld systemctl daemon-reload完全不生效各种报错 提示配置文件内容有问题 Main process exited, codeexite…

go并发和并行

进程和线程 进程(Process)就是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位,进程是一个动态概念,是程序在执行过程中分配和管理资源的基本单位,每一个进程都有一个自己的地址空间。…

WordPress博客在fnOS环境下的极简搭建与公网地址配置指南

文章目录 前言1. Docker下载源设置2. Docker下载WordPress3. Docker部署Mysql数据库4. WordPress 参数设置5. 飞牛云安装Cpolar工具6. 固定Cpolar公网地址7. 修改WordPress配置文件8. 公网域名访问WordPress 前言 你是否曾经为搭建自己的网站而头疼不已?是不是觉得…

React 中的 useMemo 和 useCallback 有什么区别?

useMemo 和 useCallback 是 React 中的两个 Hook,主要用于性能优化,但它们的用途和工作方式有所不同。以下是它们之间的主要区别: 1. useMemo 用途:用于记忆计算值。它可以避免在每次组件渲染时重新计算一个值,只有当依赖项发生变化时,才会重新计算。 返回值:返回缓存的…

【计算机网络基础】fa地址

Forwarding-Address 如果引入到OSPF中的外部路由的下一跳在一个OSPF路由域内,则在描述该外部路由的AS-External-LSA中,Forwarding Address应当被设置为ASBR路由表中该路由的下一跳。 PS:要是文章对你有用的话别忘了一键三连噢~