欢迎光临散文网 会员登陆 & 注册

Vrams Rock960c rk3399开发板,编译5.8.y内核后,nvme m.2接口不能用,这里有一个坑

2023-07-13 09:47 作者:车科技2020  | 我要投稿

我使用主线linux内核,dts源码地址:

https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts

这个文件就是设备树的源文件,它会被编译成linux kernel启动所需要的dtb,这个文件中有这样一句。

&pcie0 {

ep-gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;

};

这个是定义nvme即m.2接口的PCIE_PERST_L信号的。

源码定义了使用gpio2的pa2来控制这个信号

我对比了网上下载的rock960c的原理图,这个代码是正确的,是根据电路图的接线设计的。

然而,源码编译出来的dtb,m.2接口无法使用,识别不到任何设备,不能用。

所以我把vrams官方提供的ubuntu 16.04系统的dtb文件反编译成dts进行比对

发现了官方系统采用gpio4 pd3这个引脚来控制PCIE_PERST_L信号的

同时在vrams官方提供的ubuntu 16.04系统中,m.2接口功能是正常的。

所以,修改rk3399-rock960.dts为:

ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;

重新编译dtb

复制到开发板上

插电

开机

m.2接口功能可用了

用16gb英特尔洋垃圾傲腾测试

写入204MB/s

读取1.8GB/s

性能还不错呢!


Vrams Rock960c rk3399开发板,编译5.8.y内核后,nvme m.2接口不能用,这里有一个坑的评论 (共 条)

分享到微博请遵守国家法律