Vrams Rock960c rk3399開發(fā)板,編譯5.8.y內(nèi)核后,nvme m.2接口不能用,這里有一個(gè)坑
我使用主線linux內(nèi)核,dts源碼地址:
https://github.com/torvalds/linux/blob/master/arch/arm64/boot/dts/rockchip/rk3399-rock960.dts
這個(gè)文件就是設(shè)備樹的源文件,它會(huì)被編譯成linux kernel啟動(dòng)所需要的dtb,這個(gè)文件中有這樣一句。
&pcie0 {
ep-gpios = <&gpio2 RK_PA2 GPIO_ACTIVE_HIGH>;
};
這個(gè)是定義nvme即m.2接口的PCIE_PERST_L信號(hào)的。
源碼定義了使用gpio2的pa2來控制這個(gè)信號(hào)
我對(duì)比了網(wǎng)上下載的rock960c的原理圖,這個(gè)代碼是正確的,是根據(jù)電路圖的接線設(shè)計(jì)的。
然而,源碼編譯出來的dtb,m.2接口無法使用,識(shí)別不到任何設(shè)備,不能用。
所以我把vrams官方提供的ubuntu 16.04系統(tǒng)的dtb文件反編譯成dts進(jìn)行比對(duì)
發(fā)現(xiàn)了官方系統(tǒng)采用gpio4 pd3這個(gè)引腳來控制PCIE_PERST_L信號(hào)的
同時(shí)在vrams官方提供的ubuntu 16.04系統(tǒng)中,m.2接口功能是正常的。
所以,修改rk3399-rock960.dts為:
ep-gpios = <&gpio4 RK_PD3 GPIO_ACTIVE_HIGH>;
重新編譯dtb
復(fù)制到開發(fā)板上
插電
開機(jī)
m.2接口功能可用了
用16gb英特爾洋垃圾傲騰測(cè)試
寫入204MB/s
讀取1.8GB/s
性能還不錯(cuò)呢!