【正点原子Linux连载】 第四十六章 M.2硬盘驱动实验摘自【正点原子】ATK-DLRK3568嵌入式Linux驱动开发指南

1)实验平台:正点原子ATK-DLRK3568开发板
2)平台购买地址:https://detail.tmall.com/item.htm?id=731866264428
3)全套实验源码+手册+视频下载地址: http://www.openedv.com/docs/boards/xiaoxitongban

第四十六章 M.2硬盘驱动实验

M.2 硬盘,也被称为 M.2 SSD(Solid-State Drive),是一种高性能的存储设备,它采用 M.2 接口标准连接到计算机的主板上。M.2 硬盘具有许多优点,包括高速读写性能、小型尺寸、低功耗和可靠性。现在的计算机普通都有M.2接口,一般使用的协议都是PCIe。有的支持PCIe 2.0、PCIe 3.0甚至PCIe 4.0。PCIe 3.0 相对于 PCIe 2.0 提供了更高的带宽和性能,适用于需要高速数据传输的应用,如图形卡和高性能存储。ATK-DLRK3568底板有一路M.2接口使用的是PCIe 3.0总线,支持PCIe 3.0,本章我们来使用PCIe3.0驱动M.2硬盘。

46.1 M.2接口简介
M.2 接口是一种物理接口标准,它可以支持多种不同的通信协议,包括 PCIe(Peripheral Component Interconnect Express)、SATA(Serial Advanced Technology Attachment)、USB(Universal Serial Bus)等。因此,M.2 接口的速度和性能取决于所使用的通信协议和硬件实现。M.2 接口可以支持 PCIe 3.0,这是一种高速的数据传输协议,通常用于连接图形卡、固态硬盘(SSD)以及其他需要高带宽的设备。
M.2 插槽有不同的物理尺寸,包括 2242、2260、2280 和 22110 等。这些数字表示了插槽的长度和宽度。不同尺寸的插槽可容纳不同尺寸的 M.2 模块,以适应各种设备。正点原子的ATK-DLRK3

568开发板接口采用的是2280规格,详细请参考07、硬件资料05、板载连接器规格参考15、M.2座子下的文档说明。
ATK-DLRK3568底板M.2接口如下图图46.1.1,支持PCIe3.0。注意,5G模块接口也是用的M.2接口使用的是USB协议,两个座子的规格一样。
在这里插入图片描述

图46.1.1 M.2座子
46.2 RK3568 PCIE3.0简介
RK3568芯片拥有一个PCIe3.0 x2 Lane Dual Mode控制器,一个PCIe3.0 x1 Lane RC Mode控制器,一个PCIe3.0 x2 Lane PHY。PCIe3.0 x2 Lane Dual Mode控制器和PCIe3.0 x1 Lane RC Mode控制器都连接到PCIe3.0 x2 Lane PHY。连接示意图如下图46.2.1。
在这里插入图片描述

图46.2.1 PCIe3.0控制器/PCIe3.0 PHY框图
由上可知,两个控制器连接同一个PHY,这里我们先了解一下,因为后面设备树会用这部分知识。
46.3 硬件原理图
原理图如下图46.3.1,与SATA硬盘驱动实验章节一样,PCIE也属于专用IO,只需要启用对应的控制器,IO会复用成相应模式。下图我们只需要配置PCIE30X2全局复位IO即可。可以看到复位IO是GPIO2_PD6。
在这里插入图片描述

图46.3.1底板M.2硬盘接口原理图
46.4实验程序编写
46.4.1 修改设备树
前面说过PCIe所用的引脚属于专用引脚,只需要启用对应的控制器,对应的引脚将被设置成对应的模式。如PCIE30X2_WAKEn_M1(唤醒输入)引脚,参考08、RK官方文档01、LinuxRK356XDatasheet Rockchip_RK3568_Datasheet_V1.1-20210305.pdf可知这个引脚可以复用为LCDC_D5/VOP_BT656_D5_M0/SPI2_CS0_M1/PCIE30X2_WAKEn_M1/I2S1_SDI2_M2/GPIO2_D5_d模式。在设备树里我们启用pcie3x2及pcie30phy控制器节点,查看rk3568-atk-evb1-ddr4-v10.dtsi,可以看到以下内容:
示例代码46.4.1 启用pcie30py控制器和pcie3x2节点
738 &pcie30phy {

739         status = "okay";
 740 };
 741 
 742 &pcie3x2 {
 743         //pinctrl-names = "default";
 744         //pinctrl-0 = <&pcie30x2m1_pins>;
 745         reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
 746         vpcie3v3-supply = <&vcc3v3_pcie>;
 747         status = "okay";
 748 };
746~744,看到pinmux被注释,我们不用配置,启用对应的控制器即可。

第746行,reset-gpios的管脚为GPIO2_D6。
再打开rk3568.dtsi查看如下内容。
示例代码46.4.2 两控制器连接到一个PHY
1 pcie3x1: pcie@fe270000 {
2 compatible = “rockchip,rk3568-pcie”, “snps,dw-pcie”;
3 #address-cells = <3>;
4 #size-cells = <2>;
5 bus-range = <0x10 0x1f>;

29 msi-map = <0x1000 &its 0x1000 0x1000>;
30 num-lanes = <1>;
31 phys = <&pcie30phy>;
32 phy-names = “pcie-phy”;
33 power-domains = <&power RK3568_PD_PIPE>;

53 };
54
55 pcie3x2: pcie@fe280000 {
56 compatible = “rockchip,rk3568-pcie”, “snps,dw-pcie”;
57 #address-cells = <3>;
58 #size-cells = <2>;
59 bus-range = <0x20 0x2f>;

83 msi-map = <0x2000 &its 0x2000 0x1000>;
84 num-lanes = <2>;
85 phys = <&pcie30phy>;
86 phy-names = “pcie-phy”;

94 reg-names = “pcie-dbi”, “pcie-apb”;
95 resets = <&cru SRST_PCIE30X2_POWERUP>;
96 reset-names = “pipe”;
97 /* rockchip,bifurcation; lane0 when using 1+1 /
98 status = “disabled”;
99

107 };
第31和85行可知pcie3x1和pcie3x2连接到同一个pcie30phy,正点原子ATK-DLRK3568M.2接口使用的是2通道的PCIE接口,也就是pcie3x2。
46.4.2 运行测试
ATK-DLRK3568 linux默认就支持M.2接口硬盘。无需我们重新修改设备树。直接在出厂的Linux buildroot系统上测试M.2硬盘是否支持。
测试方法与45.3.2一样,只是M.2硬盘设备节点变成了/dev/nvme0n1p
。这里我们就不重复写测试方法了。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

揭秘循环购模式:消费返利新玩法,引领电商新潮流

在当今的消费市场中&#xff0c;有一种商业模式引起了广大消费者的热烈讨论——那就是循环购模式。你可能会想&#xff0c;消费满千元就能得到两千元的福利&#xff0c;每天还能领取现金&#xff0c;这怎么可能呢&#xff1f;商家难道真的在“慷慨解囊”&#xff1f;今天&#…

7.2k star的万能视频解析下载插件

今天给大家介绍一个超级厉害的浏览器插件&#xff0c;可以解析各个平台网页视频——猫抓。 项目简介 猫抓&#xff08;cat-catch&#xff09; 是一款资源嗅探扩展插件&#xff0c;他能够帮助你筛选列出当前页面的资源。简单来说&#xff0c;当你打开任意一个带有视频的网页&a…

Vue3中为Ant Design Vue中table的checkbox加tooltip、popover

问题的产生 Vue版本&#xff1a;3.3.13 ant-design-vue 版本&#xff1a;3.x.x 在工作时遇到一个场景&#xff0c;需要在 ant-table 的 checkbox 被禁用的时候提示原因&#xff0c;但是在 ant-design-vue 文档中并没有发现有相关介绍。 首先我去看了issue中是否有提到相关问题…

【MATLAB源码-第214期】基于matlab的遗传算法GA最短路径路由优化算法仿真。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在现代网络通信和路径规划领域&#xff0c;最短路径路由优化算法是一项关键技术。它涉及在给定的网络拓扑中寻找从源点到目标点的最短或成本最低的路径。近年来&#xff0c;遗传算法&#xff08;GA&#xff09;因其出色的全局…

2024.05.18学习记录

1、Vue3 Composition API Vite jsx 2、react 基本使用、高级用法 3、刷题&#xff1a;回溯部分剩下的题目

轻松拿捏C语言——【字符串函数】的使用及模拟实现

&#x1f970;欢迎关注 轻松拿捏C语言系列&#xff0c;来和 小哇 一起进步&#xff01;✊ &#x1f389;创作不易&#xff0c;请多多支持&#x1f389; &#x1f308;感谢大家的阅读、点赞、收藏和关注&#x1f495; &#x1f339;如有问题&#xff0c;欢迎指正 感谢 目录 一、…

java学习四

Random 随机数 数组 静态初始化数组 数组在计算机中的基本原理 数组的访问 什么是遍历 数组的动态初始化 动态初始化数组元素默认值规则 Java内存分配介绍 数组在计算机中的执行原理 使用数组时常见的一个问题 案例求数组元素最大值 public class Test1 {public static void ma…

香蕉成熟度检测YOLOV8NANO

香蕉成熟度检测YOLOV8NANO&#xff0c;采用YOLOV8NANO训练&#xff0c;得到PT模型&#xff0c;然后转换成ONNX模型&#xff0c;让OEPNCV调用&#xff0c;从而摆脱PYTORCH依赖&#xff0c;支持C。python&#xff0c;安卓开发。能检测六种香蕉类型freshripe freshunripe overripe…

Home Credit - Credit Risk Model Stability

本篇是对Kaggle上Home Credit - Credit Risk Model Stability竞赛中的开源代码VotingClassifier Home Credit的解读。原链接在VotingClassifier Home Credit (kaggle.com)。 %%writefile script.py import sys from pathlib import Path import subprocess import os import g…

LLM-Llama在 MAC M1上体验Llama.cpp和通义千问Qwen 1.5-7B

Llama.cpp的主要目标是在各种硬件上&#xff08;本地和云端&#xff09;实现LLM推断&#xff0c;同时保持最小的设置和最先进的性能。 纯C/C实现&#xff0c;没有任何依赖关系Apple芯片是一级的支持对象 - 通过ARM NEON、Accelerate和Metal框架进行优化对x86架构的AVX、AVX2和…

重学java 43.多线程 多等待多唤醒案例

Fear never builds the future,but hope does. —— 24.5.25 多等待多唤醒问题 在多条线程同时消费同时等待时&#xff0c;会出现问题 BaoZiPu package S77ThreadMoreWait;/*count和flag可以定义成包装类&#xff0c;但要记得给count和flag手动赋值不然对于本案例来说&#xff…

TCN 问题汇总

config 代码 import osemotion ["Valence"]### For preprocessing ### If tagged with "# Check this", then its adjustable, otherwise leave it alone. config {"extract_class_label": 1,"extract_continuous_label": 1,"…

Linux之DMA驱动详解(2)-sun6i-dma.c 驱动为例

一、DMA控制器硬件 1.1 DMA寄存器 DMA控制器 一般都会包含以下寄存器&#xff1a; DMA硬件描述符地址寄存器&#xff1a;存放 DMA描述符 的地址。DMA配置寄存器&#xff1a;配置 DMA 的 burst 、 width 、 传输方向 等属性。DMA使能寄存器&#xff1a;使能 DMA通道DMA中断状…

LLM 大模型学习必知必会系列(十一):大模型自动评估理论和实战以及大模型评估框架详解

LLM 大模型学习必知必会系列(十一)&#xff1a;大模型自动评估理论和实战以及大模型评估框架详解 0.前言 大语言模型&#xff08;LLM&#xff09;评测是LLM开发和应用中的关键环节。目前评测方法可以分为人工评测和自动评测&#xff0c;其中&#xff0c;自动评测技术相比人工…

暴雨“彩虹”行业大模型加速器平台全新发布

近日&#xff0c;在第七届数字中国建设峰会期间&#xff0c;暴雨信息全新发布“彩虹”行业大模型加速器平台&#xff0c;聚焦于为客户降本增效减负&#xff0c;将海量通用数据与行业特有数据融合&#xff0c;专注于流程工艺的智能化改进&#xff0c;因地制宜深挖业务需求&#…

第二十届文博会沙井艺立方分会场启幕!大咖齐打卡!

2024年5月24日-27日&#xff0c;第二十届中国&#xff08;深圳&#xff09;国际文化产业博览交易会沙井艺立方分会场活动将在艺立方非遗&#xff08;文旅&#xff09;产业园盛大举办。 本届文博会艺立方分会场活动办展特色鲜明&#xff0c;亮彩纷呈&#xff0c;将以“种下梧桐树…

win10无权禁用任务计划程序中的任务

问题说明 最近被win10的自动频繁更新搞得难受&#xff0c;发誓要彻底禁用这个家伙&#xff0c;于是网上找了教程执行&#xff0c;发现执行到禁用windows update计划任务时&#xff0c;提示&#xff1a; 这特么windows这个辣鸡系统&#xff0c;限制还真多&#xff01;&#xf…

【Linux】信号>信号产生信号处理信号保存信号详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.信号入门 1.1 生活角度的信号 1.2 技术应用角度的信号 1.3 信号概念 1.4 信号处理常见方式概览 2.产生信号 2.1 通过终端按键…

Redis 源码学习记录:集合 (set)

无序集合 Redis 源码版本&#xff1a;Redis-6.0.9&#xff0c;本篇文章无序集合的代码均在 intset.h / intset.c 文件中。 Redis 通常使用字典结构保存用户集合数据&#xff0c;字典键存储集合元素&#xff0c;字典值为空。如果一个集合全是整数&#xff0c;则使用字典国语浪费…

Python爬虫:爬取B站视频(最新、能用且讲解详细)【01】

&#x1f4da;博客主页&#xff1a;knighthood2001 ✨公众号&#xff1a;认知up吧 &#xff08;目前正在带领大家一起提升认知&#xff0c;感兴趣可以来围观一下&#xff09; &#x1f383;知识星球&#xff1a;【认知up吧|成长|副业】介绍 ❤️如遇文章付费&#xff0c;可先看…