linux_kernel驱动开发_驱动调试

embedded/2025/2/11 15:24:10/

调试思路

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

开发思路

  • 先在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就可以了


http://www.ppmy.cn/embedded/161357.html

相关文章

Spring容器初始化扩展点:ApplicationContextInitializer

目录 一、什么是ApplicationContextInitializer?1、核心作用2、适用场景 二、ApplicationContextInitializer的使用方式1、实现ApplicationContextInitializer接口2、注册初始化器 三、ApplicationContextInitializer的执行时机四、实际应用案例1、动态设置环境变量…

springtask基本使用

Spring Task 介绍与基本使用 1. 什么是 Spring Task? Spring Task 是 Spring 框架提供的 轻量级任务调度模块,用于在应用程序中实现定时任务、周期性任务或延迟任务。它通过注解和配置简化了任务调度的开发,适用于单机环境下的简单调度需求。…

远程 IO 模块:汽车零部件产线的高效生产引擎

在汽车零部件生产的激烈竞争中,效率与质量是企业立足的根本。传统生产模式在面对日益增长的市场需求时,逐渐显露出短板。而明达技术MR20远程 IO 模块的出现,如同一束强光,照亮了汽车零部件生产高效发展的新道路。 MR20远程 IO 模块…

【Kubernetes的SpringCloud最佳实践】有Service是否还需要Eureka?

在 Kubernetes 中部署 Spring Cloud 微服务时,是否还需要 Eureka 取决于具体场景和架构设计。以下是详细的实践建议和结论: 1. Kubernetes 原生服务发现 vs Eureka Kubernetes 自身提供了完善的服务发现机制(通过 Service 资源)&…

【cocos creator】拖拽排序列表

DEMO下载 GameCtrl.ts import ItemCtrl from "./ItemCtrl";const { ccclass, property } cc._decorator;ccclass export default class GameCtrl extends cc.Component {property(cc.Node)content: cc.Node null;property(cc.Node)prefab: cc.Node null;arr []…

Linux 安装 Ollama

1、下载地址 Download Ollama on Linux 2、有网络直接执行 curl -fsSL https://ollama.com/install.sh | sh 命令 3、下载慢的解决方法 1、curl -fsSL https://ollama.com/install.sh -o ollama_install.sh 2、sed -i s|https://ollama.com/download/ollama-linux|https://…

高效利用Python爬虫获取淘宝店铺详情:电商数据挖掘

在电商行业竞争日益激烈的当下,精准且高效地获取淘宝店铺详情对于商家和数据分析师来说至关重要。无论是进行市场调研、优化商品布局,还是制定竞争策略,店铺详情数据的全面掌握都是关键。Python爬虫技术以其强大的功能和灵活性,成…

DeepSeek之于心理学的一点思考

模型和硬件参数对应关系参考 模型参数规模 典型用途 CPU建议 GPU建议 最小内存建议 磁盘空间建议 适用场景 1.5b(15亿) 小型推理、轻量级任务 4核以上(Intel i5/AMD Ryzen5) 可选,入门级GPU(如NVIDIA GTX1650 4GB显存) 8GB 10GB以上SSD 小型NLP任务、文…