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

嚴華  论坛元老 | 2025-3-22 20:25:04 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3030


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

    • rapidio.ko:

      • 这是RapidIO焦点模块,为RapidIO子系统提供基础支持。它负责管理RapidIO设备、维护RapidIO网络拓扑布局,以及处理RapidIO协议的底层细节。

    • rio_cm.ko:

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

    • rio_scan.ko:

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

    • rio_mport_cdev.ko:

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

    • tsi721_mport.ko:

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

    • idt_gen2.ko
      交换
    在DMA传输方面,tsi721_mport.ko 模块是直接相干的,由于它提供了TSI721芯片特有的DMA功能实现。DMA是提高数据传输速度的关键技能,它答应硬件直接在内存和I/O设备之间传输数据,而不必要CPU的干预,从而显著提高数据传输服从。

  • 编译链接过程

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

    • 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 目标文件,这个目标文件是内核模块的一部分。

    • 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文件)。

  • 留意事项

    • 板卡用的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
    • 手里的程序,板卡版本(吴改)、tsi官网最新版、0400依次版本。按照次序依次研究,比对差别。
    • 板卡中的驱动必要不能编译lib测试用例,必要在新版本里边编译
    • 主从模式
      Hdid分别为一正一负


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

嚴華

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表