ArmSoM Rockchip系列产品 通用教程 之 PCIe 使用

这篇具有很好参考价值的文章主要介绍了ArmSoM Rockchip系列产品 通用教程 之 PCIe 使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. PCIe 简介​

PCIe(Peripheral Component Interconnect Express)是一种用于连接主板和外部设备的高速串行接口标准。它是 PCI 技术的后继者,旨在提供更高的带宽和更好的性能。

  • 高速传输: PCIe接口提供了高速的数据传输通道,可用于连接各种硬件设备,如图形卡、存储设备、网络适配器等。它的速度通常以每秒传输的数据位数(例如PCIe x1、x4、x8、x16等)来表示,每个通道的带宽可以根据需要扩展。
  • 点对点连接: PCIe采用点对点连接的架构,这意味着每个设备都直接连接到主板上的PCIe插槽,而不需要与其他设备共享带宽。这有助于减少延迟并提高性能。
  • 热插拔支持: PCIe接口支持热插拔,允许用户在计算机运行时添加或移除PCIe设备,而不需要重新启动计算机。
  • 广泛应用: PCIe接口广泛用于连接图形卡、固态硬盘(SSD)、扩展卡、网络适配器和其他高性能设备。这使得计算机用户可以根据需要扩展和升级系统的性能和功能。

综上所述,PCIe 是一种高速、灵活且广泛应用的串行接口标准,它在现代计算机系统中发挥着关键作用,为连接各种外部设备提供了可靠的解决方案。

2. RK3588的PCIe控制器​

  • RK3588共有5个PCIe的控制器,硬件IP是⼀样的,配置不⼀样,其中⼀个4Lane DM模式可以⽀持作为EP 使⽤,另外⼀个2Lane和3个1Lane控制器均只能作为RC使⽤。
  • RK3588有两种PCIe PHY,其中⼀种为pcie3.0PHY,含2个Port共4个Lane,另⼀种是pcie2.0的PHY有3 个,每个都是2.0 1Lane,跟SATA和USB combo使⽤。
  • pcie3.0 PHY的4Lane可以根据实际需求拆分使⽤,拆分后需要合理配置对应的控制器,所有配置在DTS中 完成,⽆需修改驱动。 

    phy_mode_pcie_aggregation,嵌入式硬件,驱动开发,rockchip,rk3588

RK3588 PCIe 的硬件资源及软件上 pcie 控制器节点、 PHY 节点对应关系如图:

phy_mode_pcie_aggregation,嵌入式硬件,驱动开发,rockchip,rk3588

3. RK3588 DTS配置​

3.1 ArmSoM-W3上的PCIe接口​

  • 这里以ArmSoM-W3开发板为例,讲解RK3588的PCIe配置
  • Armsom-W3开发板上有 1 个 PCIe3.0 x 4 接口和两个PCIe2.0接口,如图:

phy_mode_pcie_aggregation,嵌入式硬件,驱动开发,rockchip,rk3588

3.2 ArmSoM-W3开发板PCie相关的DTS配置:​

一般根据原理图在 DTS 中配置PCie的供电引脚、复位引脚,选择正确的 pcie 控制器节点以及 PHY 节点使能。

  • 在kernel/arch/arm64/boot/dts/rockchip/rk3588-armsom-w3.dts中配置如下:
/ {
    vcc12v_dcin: vcc12v-dcin {
        compatible = "regulator-fixed";
        regulator-name = "vcc12v_dcin";
        regulator-always-on;
        regulator-boot-on;
        regulator-min-microvolt = <12000000>;
        regulator-max-microvolt = <12000000>;
    };

    vcc5v0_sys: vcc5v0-sys {
        compatible = "regulator-fixed";
        regulator-name = "vcc5v0_sys";
        regulator-always-on;
        regulator-boot-on;
        regulator-min-microvolt = <5000000>;
        regulator-max-microvolt = <5000000>;
        vin-supply = <&vcc12v_dcin>;
    };

    vcc3v3_pcie2x1l0: vcc3v3-pcie2x1l0 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v3_pcie2x1l0";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        enable-active-high;
        regulator-boot-on;
        regulator-always-on;
        gpios = <&gpio1 RK_PD2 GPIO_ACTIVE_HIGH>;
        startup-delay-us = <50000>;
        vin-supply = <&vcc5v0_sys>;
    };

    vcc3v3_pcie2x1l2: vcc3v3-pcie2x1l2 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v3_pcie2x1l2";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        startup-delay-us = <5000>;
        vin-supply = <&vcc_3v3_s3>;
    };

    vcc3v3_pcie30: vcc3v3-pcie30 {
        compatible = "regulator-fixed";
        regulator-name = "vcc3v3_pcie30";
        regulator-min-microvolt = <3300000>;
        regulator-max-microvolt = <3300000>;
        enable-active-high;
        gpios = <&gpio1 RK_PA4 GPIO_ACTIVE_HIGH>;
        startup-delay-us = <5000>;
        vin-supply = <&vcc5v0_sys>;
    };
}

&pcie2x1l0 {
    reset-gpios = <&gpio4 RK_PA5 GPIO_ACTIVE_HIGH>;
    vpcie3v3-supply = <&vcc3v3_pcie2x1l0>;
    status = "okay";
};

&pcie2x1l2 {
    reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_HIGH>;
    vpcie3v3-supply = <&vcc3v3_pcie2x1l2>;
    status = "okay";
};

&combphy1_ps {
    status = "okay";
};

&pcie30phy {
    rockchip,pcie30-phymode = <PHY_MODE_PCIE_AGGREGATION>;
    status = "okay";
};

&pcie3x4 {
    reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;
    vpcie3v3-supply = <&vcc3v3_pcie30>;
    status = "okay";
};
  • pcie30phy、combphy1_ps:PHY 节点
  • pcie3x4、pcie2x1l0、 pcie2x1l2 :pcie控制器节点
  • reset-gpios:复位引脚属性
  • vcc3v3_pcie2x1l0、vcc3v3_pcie2x1l2、vcc3v3_pcie30:供电引脚节点

4. PCIe设备使用方法​

执行lspci命令会列出所有PCI设备的信息,包括设备的制造商、型号、PCI地址等。输出通常以文本形式提供,并按总线地址(BDF:Bus, Device, Function)的顺序排列。

armsom@armsom:~$ lspci
0000:00:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
0000:01:00.0 Non-Volatile memory controller: Intel Corporation NVMe Optane Memory Series
0002:20:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
0002:21:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)
0003:30:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
0003:31:00.0 Network controller: Broadcom Inc. and subsidiaries Device 449d (rev 02)
0004:40:00.0 PCI bridge: Rockchip Electronics Co., Ltd Device 3588 (rev 01)
0004:41:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8125 2.5GbE Controller (rev 05)

pcie接口接高速固态硬盘(SSD)的情景较多,这里以Intel Corporation生产的非易失性内存(NVMe)控制器为例,详解NVMe控制器的使用方法。

4.1 NVMe控制器使用​

  1. 检查NVMe设备是否被识别:
  • 运行以下命令,查看系统是否正确识别了NVMe设备
armsom@armsom:/$  lspci | grep NVMe
0000:01:00.0 Non-Volatile memory controller: Intel Corporation NVMe Optane Memory Series

如果您看到与Intel Corporation相关的NVMe设备信息,则表示设备已经被识别。

  1. 查找设备节点
ls /dev/nvme*
/dev/nvme0  /dev/nvme0n1
  1. 查看设备的分区信息:
armsom@armsom:/$ lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
mmcblk0      179:0    0 58.3G  0 disk
├─mmcblk0p1  179:1    0    4M  0 part
├─mmcblk0p2  179:2    0    4M  0 part
├─mmcblk0p3  179:3    0   64M  0 part
├─mmcblk0p4  179:4    0  128M  0 part
├─mmcblk0p5  179:5    0   32M  0 part
├─mmcblk0p6  179:6    0   14G  0 part
├─mmcblk0p7  179:7    0  128M  0 part
└─mmcblk0p8  179:8    0 43.9G  0 part
mmcblk0boot0 179:32   0    4M  1 disk
mmcblk0boot1 179:64   0    4M  1 disk
mmcblk1      179:96   0 29.7G  0 disk
├─mmcblk1p1  179:97   0  512M  0 part /boot/firmware
└─mmcblk1p2  179:98   0 29.2G  0 part /
nvme0n1      259:0    0 13.4G  0 disk /mnt

NVMe设备通常以/dev/nvmeXnY的形式表示,其中X是NVMe设备的编号,Y是分区编号。此处的NVMe设备名称是nvme0n1。

  1. 格式化为EXT4文件格式 ( 根据个人需求运行格式化操作 )
sudo mkfs.ext4 /dev/nvme0n1
  1. 挂载设备
armsom@armsom:~$ sudo mount /dev/nvme0n1 /mnt
  1. 查看挂载路径
df -h
/dev/nvme0n1     14G   24K   13G   1% /mnt

或者

cat /proc/mounts  | grep nvme
/dev/nvme0n1 /mnt ext4 rw,relatime 0 0
  1. 卸载设备
umount /mnt

4.2 读写测速​

使用dd命令进行读写测试:

  • 写测试命令:
sudo dd if=/dev/zero of=/dev/nvme0n1 bs=1M count=1000

其中if参数是输入文件(通常是/dev/zero,用于写入测试),of参数是输出文件(通常是您的NVMe设备),bs参数是块大小,count参数是要执行的块数

  • 读测试命令:
sudo dd if=/dev/nvme0n1 of=/dev/null bs=1M count=1000

读写性能可能会受到多种因素的影响,包括设备型号、硬件配置和测试条件等文章来源地址https://www.toymoban.com/news/detail-857538.html

到了这里,关于ArmSoM Rockchip系列产品 通用教程 之 PCIe 使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Rockchip系列之RK3568 Android设备固件和分区信息

    目录 固件信息 分区信息 分区作用 增加新分区计算规则 分区信息单位解析 Sector 字节 为什么使用Sector? 单位转换 Android 11+增加了可以自动生成parameter.txt的工具,并支持编译parameter.txt 根据配置参数。如果没有配置模板文件,工具会发现并添加修改后的parameter.txt文件。(如果

    2024年02月09日
    浏览(74)
  • PCIE学习系列 五(Linux之PCIe设备驱动开发框架)

    本文讲述一个开源的PCIe设备驱动,通过这个例子可以基本上理解所有的PCIe设备驱动。后续也会做关于Linux各类驱动的文章。 通过前面的学习,我们知道PCIe设备访问之前需要先做枚举。一般来说,PCI设备的枚举操作不需要我们来做,BIOS或者系统初始化时已经做好了,当系统枚

    2024年02月05日
    浏览(56)
  • ESP系列入门教程(一)——之用继电器简单驱动一个LED【附 ESP32 / ESP8266 通用代码】

    最近在跟着几个大佬的教学视频做项目。陆续会更新记录一些要点,便于后期总结笔记的时候进行引用。 也可以帮助有心跟着一起复刻的宝子们,更好地捋清思路。 【本系列教程 - 总目标】: 使用ESP系列板卡,通过MQTT进行数据通信,达到远程控制多个传感器的效果。 ◆配

    2024年01月19日
    浏览(46)
  • 玩转 PI 系列-如何在 Rockchip Arm 开发板上安装 Docker Tailscale K3s Cilium?

    618 买了几个便宜的 Purple PI OH 开发板 (500 块多一点买了 3 个🤑), 这个开发板类似树莓派,是基于 Rockchip(瑞芯微) 的 rx3566 arm64 芯片。如下: 买来是用作家庭服务器或家庭实验室的。主要考虑就是: 便宜 可玩性高 功耗低 散热小,运行安静 Arm64 现在生态还凑活 其配置如下

    2024年02月17日
    浏览(115)
  • 亚马逊近日发布通用产品安全法规一般产品安全法规 (GPSR)

    亚马逊近日发布“为新的通用产品安全法规做好准备”--一般产品安全法规 (GPSR),公告如下: 译文:  为新的通用产品安全法规做好准备 如果您在欧盟和北爱尔兰销售非食品产品,则需要在 2024 年满足通用产品安全法规 (GPSR) 要求。 2024 年 12 月 13 日,GPSR 将对大多数非食品

    2024年02月02日
    浏览(36)
  • AirServer电脑通用版下载及使用教程

    AirServer 是一款功能十分强大的投屏软件,支持并适用于 Windows和Mac。AirServer 是接收方,而不是发送方。 AirServer 只允许您接收镜像或流媒体内容,反之则不行。AirServer虽然功能十分强大,但是整体操作和使用都十分简单,新手使用很好上手。 AirServer 是一个 AirPlay、Google Cast

    2024年02月09日
    浏览(91)
  • 【产品经理】小型团队通用工作流程SOP方案

    :所谓SOP,即标准作业程序,指将某一事件的标准操作步骤和要求以统一的格式描述出来,用于指导和规范日常的工作。实际执行过程中sop核心是符合本企业并可执行,不流于形式。 跨部门流程及职能如下图展示。 日常提交需求 运营及业务同学,按照下方模板填写后,提交

    2024年02月16日
    浏览(43)
  • 六叶树USBCAN1产品使用教程

    六叶树USBCAN1适配器        最近因项目需要,入手了一款USB转CAN适配器,最终选择了六叶树的这款USBCAN1适配器,性价比还不错,带中继透传和波特率侦测功能,资料还比较齐全,外观见上图,刚拿到时,不知道如何开始,后进他们官网找资料和技术沟通,很快就上手了,总

    2024年02月12日
    浏览(32)
  • 【产品新体验】CSDN. 云IDE体验与功能使用教程(保姆级教程)

    云IDE产品介绍 云IDE使用教程 免费使用地址:点击【云IDE】,即可开始创建工作空间啦~ CSDN最新产品【云IDE】来啦!【云IDE】将为各位技术er一键秒级构建云开发环境,提升开发效率!为持续提升产品体验,现CSDN特开展产品评测有奖话题征文活动,诚邀各位技术er免费试用【云

    2024年02月02日
    浏览(65)
  • GBASE南大通用 GBase 8a 产品构建数仓系统架构

    l GBASE南大通用 GBase 8a 产品构建数仓应用的系统架构: 架构 技术实现特点 适用场景 独立数据仓库(集市)系统架构 一套GBase 8a物理集群 适用于数据规模较小的业务场景 适用于各业务之间数据互访较频繁的业务场景 适用于单一独立的业务场景 企业级数仓系统架构 多套G

    2024年01月25日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包