RK3588-PCIe

news2024/11/19 1:32:58

1. 简介

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中
    完成,⽆需修改驱动。
    在这里插入图片描述

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

在这里插入图片描述

3. RK3588 DTS配置

3.1 ArmSoM-W3上的PCIe接口

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

在这里插入图片描述

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
    
  2. 查看设备的分区信息:

    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。

  3. 格式化为EXT4文件格式 ( 根据个人需求运行格式化操作 )

    sudo mkfs.ext4 /dev/nvme0n1
    
  4. 挂载设备

    armsom@armsom:~$ sudo mount /dev/nvme0n1 /mnt
    
  5. 查看挂载路径

    df -h
    /dev/nvme0n1     14G   24K   13G   1% /mnt
    

    或者

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

    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
    

    读写性能可能会受到多种因素的影响,包括设备型号、硬件配置和测试条件等

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1509117.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【wine】WINEDEBUG 分析mame模拟器不能加载roms下面的游戏 可以调整参数,快速启动其中一个游戏kof98

故障现象&#xff0c;MAME启动后&#xff0c;游戏都没有识别 添加日志输出&#xff0c;重新启动wine #!/bin/bashexport WINEPREFIX$(pwd)/.wine export WINESERVER$(pwd)/bin/wineserver export WINELOADER$(pwd)/bin/wine export WINEDEBUG"file,mame,warn,err"…

CCF-C推荐会议 IEEE CLOUD‘24 3月24日截稿!深圳开启全球云计算新纪元!

会议之眼 快讯 IEEE CLOUD(IEEE International Conference on Cloud Computing)即IEEE云计算国际会议将于 2024 年7月7日至13日在中国深圳举行&#xff01;IEEE CLOUD由lEEE Computer Society主办&#xff0c;CCF服务计算专委会、北京大学、IBM Research承办。CLOUD一直是研究人…

Linux---多线程(上)

一、线程概念 线程是比进程更加轻量化的一种执行流 / 线程是在进程内部执行的一种执行流线程是CPU调度的基本单位&#xff0c;进程是承担系统资源的基本实体 在说线程之前我们来回顾一下进程的创建过程&#xff0c;如下图 那么以进程为参考&#xff0c;我们该如何去设计创建一个…

STM32串口:DMA空闲中断实现接收不定长数据(基于HAL库)

STM32串口&#xff1a;DMA空闲中断实现接收不定长数据&#xff08;基于HAL库&#xff09;&#xff1a; 第一步&#xff1a;设置rcc&#xff0c;时钟频率&#xff0c;下载方式 设置system core->RCC如图所示&#xff1a;&#xff08;即High Speed Clock和Low Speed Clock都选…

EasyNVR级联EasyCVR,在EasyCVR播放视频会导致EasyNVR崩溃的原因排查与解决

视频综合管理平台EasyCVR视频监控系统支持多协议接入、兼容多类型设备&#xff0c;平台可以将监控区域内所有部署的监控设备进行统一接入与集中汇聚管理&#xff0c;实现对监控区域的实时视频监控、录像与存储、设备管理、云台控制、语音对讲、级联共享等&#xff0c;在监控中心…

跨境账号养号怎么做?Facebook、亚马逊运营必看

之前我们讨论过很多关于代理器的问题。它们的工作原理是什么?在不同的软件中要使用那些代理服务器?这些代理服务器之间的区别是什么?什么是反检测浏览器等等。 除了这些问题&#xff0c;相信很多人也会关心在使用不同平台的时代理器的选择问题。比如&#xff0c;为什么最好…

深入理解React中的useState:函数组件状态管理的利器

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

别再盲目推广!用Xinstall第三方统计,精准衡量广告ROI

在移动互联网时代&#xff0c;App推广已经成为各大广告主和开发者的必修课。然而&#xff0c;面对复杂的推广环境和多变的用户需求&#xff0c;如何提升推广效率、洞悉推广效果、衡量广告ROI&#xff0c;一直是困扰着广大广告主和开发者的难题。今天&#xff0c;我们就来聊聊一…

ChatGPT怎么用 ChatGPT小白能掌握的技巧原理

ChatGPT(Chat Generative Pre-training Transformer) 是一个 AI 模型,属于自然语言处理( Natural Language Processing , NLP ) 领域,NLP 是人工智能的一个分支。所谓自然语言,就是人们日常生活中接触和使用的英语、汉语、德语等等。自然语言处理是指,让计算机来理解并…

#LT8711V适用于Type-C/DP1.2/EDP转VGA应用方案,分辨率高达1080P。

1. 概述 LT8711V是一款高性能 Type-C/DP1.2 转 VGA 转换器&#xff0c;设计用于将 USB Type-C 源或 DP1.2 源连接到 VGA 接收器。 该LT8711V集成了一个符合DP1.2标准的接收器和一个高速三通道视频DAC。此外&#xff0c;还包括两个用于 CC 通信的 CC 控制器&#xff0c;以实现 …

揭秘PostgreSQL:超越传统数据库的无限可能!

介绍&#xff1a;PostgreSQL是一个功能强大的开源对象关系数据库系统。以下是对PostgreSQL的详细介绍&#xff1a; 开源性&#xff1a;PostgreSQL是完全开源的&#xff0c;这意味着任何人都可以自由地获取、使用和修改它的源代码。 可定制性&#xff1a;它具有高度可定制性&…

gitee分支管理,合并冲突

1、gitee展示分支 git branch 2、展示远程分支 git branch -r 3、新建分支 git branch base 4、切换分支 git checkout base 合并冲突 当代码在服务器上被提交了&#xff0c;再在本地提交会提示报错 点击merge

《互联网的世界》第六讲-去中心化和安全

互联网构建于开放互联的中立原则之上&#xff0c;公平接入&#xff0c;数据互联互通&#xff0c;流量被无差别对待&#xff0c;这意味着互联网本质上是匿名&#xff0c;去中心的&#xff0c;这与我们的现实世界完全不同。 但互联网上的主流业务却是 c/s 产销模式&#xff0c;试…

ansible基础与基础命令模块

一Ansible 1. ansible 的概念 Ansible是一个基于Python开发的配置管理和应用部署工具&#xff0c;现在也在自动化管理领域大放异彩。它融合了众多老牌运维工具的优点&#xff0c;Pubbet和Saltstack能实现的功能&#xff0c;Ansible基本上都可以实现。 Ansible能批量配置、部署、…

Power Apps 学习笔记 -- Action

文章目录 1. Action 简介2. Action 配置3. 待补充 1. Action 简介 Action基础教程 : Action概述 操作Action: 1. 操作Action类似于工作流Workflow&#xff0c;提供一些重用性的操作&#xff0c;允许工作流或其他Web服务端点调用(例如javascript). 2. Action 类似于c#当中的一个…

HTML:注释的 5 种场景和 5 点注意事项

你好&#xff0c;我是云桃桃。 HTML 代码注释是用来在 HTML 源代码中添加一些说明性文字&#xff0c;而不会显示在页面中的内容。它们不会在浏览器中显示或渲染。 现在我们一起来看看它的语法&#xff0c;用途和注意事项吧。 注释语法 HTML 注释的基本语法格式是: <!--…

微信小程序-分包

分包 1.什么是分包 分包指的是把一个完整的小程序项目&#xff0c;按照需求划分为不同的子包&#xff0c;在构建时打包成不同的分包&#xff0c;用户在使用时按需进行加载。 2.分包的好处 对小程序进行分包的好处主要有以下两点&#xff1a; 可以优化小程序首次启动的下载时间…

从焦虑到成功:一个软件测试工程师的逆袭之路

日常大家聊天时经常提及一个关键词——大环境不好&#xff0c;由此带来了很多行为的变化&#xff0c;有的人迷茫&#xff0c;有的人躺平。本文给大家介绍发生在我身上和身边的真实案例&#xff0c;希望能带给你一些输入。 案例一&#xff1a;曾经的我也极度焦虑 我是2008年参加…

java(框架) springboot-1 基础使用+mybaits使用

学习视频&#xff1a;b站黑马java教程 tomcat spring-boot工程内嵌了tomcat服务器 所有请求经过DispatcherServlet(实现servlet接口的类)(核心控制器/前端控制器)处理&#xff0c;再通过DispatcherServlet转发给各个controller。 最后通过DispatcherServlet给浏览器响应数据…

笔记79:ROS入门之前的准备

一、ROS是什么 ROS其实是一个伪操作系统&#xff0c;是基于Liunx操作系统的一个用于机器人各个节点之间通信的系统&#xff1b;ROS制定了一系列规则使得每个节点之间遵循相同的通信规则&#xff0c;使得每个人都可以有一个守则区遵守开发自己的节点&#xff0c;也能和别人开发…