Zynq安装nvme ssd

前言

如图所示,给Zynq开发板装上NVMe ssd固态硬盘,其M.2接口是PL端的资源,通过Vivado配置可以让Linux系统访问硬盘

nvme

Vivado部分

进行Block Design

bd

生成比特流,导出xsa

Vitis部分

生成设备树,摘要部分在下文

这里选择了内存结尾的 256M 空间来作为 DMA 缓存,reserved-memory 即为预留内存,系统将会保留这一段内存,其他程序均无法访问

	memory {
		device_type = "memory";
		reg = <0x0 0x0 0x0 0x7ff00000>;
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		/* global autoconfigured region for contiguous allocations 256MB*/
		linux,cma@0x6ff00000 {
			compatible = "shared-dma-pool";
			reusable;
			reg = <0x0 0x6ff00000 0x0 0x10000000>;
			alignment = <0x1000>;
			linux,cma-default;
		};
	};

然后到Linux环境交叉编译生成BOOT文件,存入sd卡

上板验证

ssd1

前面流程都正确后,开机ssd会亮灯

开机后,ssh登录,命令行输入

fdisk -l

可以看到Linux系统识别出了加装的nvme ssd硬盘,即/dev/nvme0n1,空间为477G

0

分别输入下面命令测试硬盘读写速度

time dd if=/dev/zero of=/dev/nvme0n1 bs=2M count=1024
time dd if=/dev/nvme0n1 of=/dev/null bs=2M count=1024

注意测试会擦除硬盘,请勿在存放有重要文件的硬盘尝试

1


本文章使用limfx的vscode插件快速发布