Linux驱动开发实战之SRIO驱动(二)基于Tsi721驱动

devtools/2025/3/28 13:14:49/
  1. 常用驱动介绍

    在RapidIO系统中,TSI721是一款常用的RapidIO交换芯片,其驱动程序和相关模块负责管理和优化数据传输,包括DMA(直接内存访问)操作。以下是您提到的各个模块的作用概述:

    1. rapidio.ko:

      • 这是RapidIO核心模块,为RapidIO子系统提供基础支持。它负责管理RapidIO设备、维护RapidIO网络拓扑结构,以及处理RapidIO协议的底层细节。
    2. rio_cm.ko:

      • 这个模块通常与RapidIO连接管理相关。它可能负责维护和管理RapidIO网络中的连接,包括设备发现、链路维护等功能。
    3. rio_scan.ko:

      • 这不是一个内核模块,而是一个工具或脚本来扫描RapidIO网络,发现网络中的设备,并建立设备列表。它通常用于系统启动时配置RapidIO网络。
    4. rio_mport_cdev.ko:

      • 这个模块提供了一个字符设备接口,允许用户空间应用程序与RapidIO主端口(Maintenance Port)进行交互。通过这个接口,可以执行RapidIO维护操作,如读取和写入维护寄存器。
    5. tsi721_mport.ko:

      • 这是专门为TSI721芯片设计的RapidIO主端口驱动模块。它负责实现TSI721特定的功能,包括DMA操作、中断处理、以及与TSI721硬件相关的其他高级特性。这个模块是实现高速DMA传输的关键部分,因为它直接与TSI721硬件交互,优化数据传输效率。
    6. idt_gen2.ko

      交换

    在DMA传输方面,tsi721_mport.ko 模块是直接相关的,因为它提供了TSI721芯片特有的DMA功能实现。DMA是提高数据传输速度的关键技术,它允许硬件直接在内存和I/O设备之间传输数据,而不需要CPU的干预,从而显著提高数据传输效率。

  2. 编译链接过程

    在这里插入图片描述

    在Linux内核模块的编译过程中,CC 和 LD [M] 是两种不同的操作,它们分别代表编译(Compilation)和链接(Linking)的过程:

    1. CC [M]:
      • CC 代表的是编译器(通常是gcc),它用于将源代码文件(.c 文件)编译成目标代码文件(.o 文件),这个过程包括预处理、编译和汇编。
      • [M] 表示这个编译操作是为构建一个内核模块(module)而进行的。这意味着在编译时,会包含内核模块特有的编译选项和宏定义。
      • 例如,CC [M] /home/ict/yjl/kernel-rapidio-x86-5.4-banka-x2-801/rio.o 这行命令表示正在编译c 文件,生成rio.o 目标文件,这个目标文件是内核模块的一部分。
    2. LD [M]:
      • LD 代表链接器(通常是ld),它用于将一个或多个目标代码文件(.o 文件)以及库文件链接成一个可执行文件或者内核模块(.ko 文件)。
      • [M] 同样表示这个链接操作是为构建内核模块而进行的。
      • 例如,LD [M] /home/ict/yjl/kernel-rapidio-x86-5.4-banka-x2-801/rapidio.o 这行命令表示正在将之前编译生成的目标文件(比如o、rio-access.o 等)链接成一个名为rapidio.o 的单一目标文件,这个文件随后可能会被进一步处理以生成最终的内核模块文件(通常是 .ko 文件)。

    简而言之,CC [M] 是用来编译源代码文件的,而 LD [M] 是用来将编译好的目标文件链接成最终的内核模块。这两个步骤是构建内核模块必需的。

    Linux内核模块通常是由对应的.c源文件编译而来的。每个模块都有一个或多个.c文件,这些文件包含了模块的源代码。在编译过程中,这些.c文件会被编译成目标文件(.o文件),然后这些目标文件再通过链接器(通常是ld)链接成最终的模块文件(通常是.ko文件)。

  3. 注意事项

    1. 板卡用的pcie是gen1,主机是gen2,所需板卡发DMA是60MB/s,主机是700MB/s。

      lspci -n 查看节点号(一般是00:02.0)

      lspci -s 00:02.0 -vvv

      由于板卡不稳定,所以将pcie的gen2改成了gen1

      解决方法:
      不运行echo 8 8 0 8 > /proc/sys/kernel/printk(日志太多,存盘变慢)或者增加echo 0 > /sys/module/rio_mport_cdev/parameters/dbg_level

    2. 手里的程序,板卡版本(吴改)、tsi官网最新版、0400依次版本。按照顺序依次研究,比对不同。

    3. 板卡中的驱动需要不能编译lib测试用例,需要在新版本里边编译

    4. 主从模式

      Hdid分别为一正一负


http://www.ppmy.cn/devtools/171073.html

相关文章

内网渗透(CSMSF) 构建内网代理的全面指南:Cobalt Strike 与 Metasploit Framework 深度解析

目录 1. Cobalt Strike 在什么情况下会构建内网代理? 2. Cobalt Strike 构建内网代理的主要作用和目的是什么? 3. Cobalt Strike 如何构建内网代理?需要什么条件和参数? 条件 步骤 参数 4. Cobalt Strike 内网代理能获取什…

Jupyter Notebook 常用命令(自用)

最近有点忘记了一些常见命令,这里就记录一下,懒得找了。 文章目录 一、文件操作命令1. %cd 工作目录2. %pwd 显示路径3. !ls 列出文件4. !cp 复制文件5. !mv 移动或重命名6. !rm 删除 二、代码调试1. %time 时间2. %timeit 平均时长3. %debug 调试4. %ru…

OLED中英文混合显示

前情提要 内容主要包含OLED显示中英文混合的代码逻辑。 OLED屏幕介绍 四针脚 OLED 显示屏是一种常见的显示模块,包括一个 OLED 显示屏和 4 个引脚,常用于嵌入式系统、小型电子设备,如智能手表、健康追踪器等3。 引脚功能3 VCC:…

田间机器人幼苗视觉检测与护苗施肥装置研究(大纲)

田间机器人幼苗视觉检测与护苗施肥装置研究 基于多光谱视觉与精准施肥的农业机器人系统设计 第一章 绪论 1.1 研究背景与意义 农业智能化需求: 传统幼苗检测依赖人工,效率低且易遗漏弱苗/病苗施肥不精准导致资源浪费和环境污染 技术挑战:…

【新能源汽车温度采集与控制系统设计深度解析】

面向汽车行业研发与测试测量设备从业者的技术指南 一、硬件架构设计 新能源汽车的温度采集与控制系统是保障电池、电机、电控等核心部件安全运行的核心技术之一。其硬件架构需兼顾高精度、抗干扰、可靠性与集成化,以下从信号调理电路、ADC模块、隔离设计三个维度展…

专业级 AI 提示生成工具清单

1. 引言 近年来,随着 GPT-3、GPT-4 等大规模预训练语言模型的广泛应用,提示(Prompt)工程作为驱动模型输出质量的重要环节,受到了各界的高度关注。精心设计、管理与优化提示,不仅能够大幅提高生成文本的准确…

Photoshop基础操作全解析

以下是综合多篇权威教程整理的Photoshop基础操作全解析(含新手到进阶核心技巧),建议结合实践练习掌握: 一、文件与视图基础操作 文件操作三剑客 • 新建文件:CtrlN,注意预设分辨率(印刷用300ppi…

自动化测试框架维护成本高怎么办

自动化测试框架维护成本高,可以通过优化测试用例设计、引入持续集成(CI)策略、强化代码规范和审查机制、建立明确的维护计划、定期进行技术债务清理等方式来降低成本。 其中,优化测试用例设计尤其关键,它不仅能提高测试…