91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

linux系統(tǒng)下M.2硬盤調(diào)試和測試全指南:從初始化失敗到讀寫滿速,避坑就看這篇

jf_44130326 ? 來源:Linux1024 ? 2026-02-02 17:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式開發(fā)中,M.2接口NVMe硬盤憑借高速讀寫和小巧體積,成了RK瑞芯微)等平臺的性能擔(dān)當(dāng)。但調(diào)試時總繞不開幾個坑:主機初始化失敗、硬盤掛載不上、測試后重啟翻車……

今天結(jié)合實際項目文檔,從調(diào)試(硬件+配置)測試(掛載+讀寫),手把手教你搞定M.2硬盤,附帶避坑要點,新手也能少走彎路。

一、調(diào)試篇:先解決認(rèn)得到,再談用得好

M.2硬盤(NVMe協(xié)議)依賴PCIe鏈路通信,調(diào)試的核心是PCIe鏈路通、電源穩(wěn)、配置對。最常見的問題是主機初始化失敗,先從這入手。

1.硬件先查:電源+時鐘生命線

wKgZPGkanJiANiUcAAHujs1uwQc296.png

M.2硬盤要工作,首先得有穩(wěn)定的電源和時鐘,這一步別光看原理圖,要結(jié)合實際測量:

?電源:VCC3V3_PCIE30必須到位

原理圖中M.2的供電依賴VCC3V3_PCIE30(文檔2原理圖標(biāo)注),實際調(diào)試時要確認(rèn)兩點:

電源芯片輸出是否穩(wěn)定(用萬用表測電壓,需在3.25~3.35V之間);

電源使能GPIO是否正常(文檔2中用gpio4 RK_PB2控制,通過/sys/kernel/debug/gpio查看狀態(tài)):

#查看GPIO電平,確認(rèn)電源使能(gpio-138對應(yīng)vcc3v3-ssd,out hi表示已使能)

cat /sys/kernel/debug/gpio | grep vcc3v3-ssd

若顯示out lo,說明電源沒打開,需檢查DTS中電源regulator配置(下文會講)。

?時鐘:PCIE_CLKREQn引腳別浮空

M.2PCIe時鐘需要PCIE_CLKREQn引腳(文檔2中是pcie20x1_0_clkreqn_m1,對應(yīng)gpio4 RK_PB4)控制,該引腳負(fù)責(zé)請求時鐘輸出:

原理圖中時鐘路徑需無虛焊(比如HCSL差分線阻抗匹配);

② DTS中引腳配置要符合硬件(文檔2中是&pcfg_pull_none,若之前遇到過不穩(wěn)定,可參考?xì)v史經(jīng)驗改為&pcfg_pull_down)。

2. DTS配置:3個關(guān)鍵節(jié)點不能錯

RK平臺的M.2硬盤(NVMe)依賴PCIe控制器PHY配置,DTS中這3個節(jié)點必須寫對,少一個都可能初始化失?。?/span>

1PCIe PHY配置:指定工作模式

&pcie30phy節(jié)點控制PCIe PHY的工作模式,M.2 NVMe通常用聚合模式AGGREGATION):

&pcie30phy {

rockchip,pcie30-phymode = ; //聚合模式,適配NVMe

status = "okay"; //啟用PHY

};

2PCIe控制器配置:電源+復(fù)位+引腳

&pcie3x4PCIe控制器節(jié)點,需關(guān)聯(lián)電源供應(yīng)、復(fù)位GPIO和時鐘引腳:

&pcie3x4 {

reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>; //復(fù)位GPIO,高電平有效

vpcie3v3-supply = <&vcc3v3_pcie30>; //關(guān)聯(lián)PCIe 3.3V電源

pinctrl-names = "default";

pinctrl-0 = <&pcie20x1_0_clkreqn_m1>; //關(guān)聯(lián)時鐘請求引腳

status = "okay"; //啟用控制器

};

?重點:vpcie3v3-supply必須指向正確的電源regulator(下文節(jié)點),否則控制器沒電,直接初始化失敗。

3)電源Regulator:確保穩(wěn)定供電

單獨配置M.2硬盤的電源regulator,加入延遲避免上電沖擊:

pcie20_vcc3v3_ssd_4G: vcc3v3-ssd{

compatible = "regulator-fixed"; //固定電壓調(diào)節(jié)器

gpio = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>; //電源使能GPIO

pinctrl-names = "default";

pinctrl-0 = <&pcie20_3v3_drv_4G>; //電源使能引腳配置

regulator-name = "pcie20_3v3_ssd"; //電源名稱,與控制器對應(yīng)

enable-active-high; //高電平使能電源

start-delays-us = <5000>; //啟動延遲5ms,避免沖擊

off-on-delay-us = <5000>; //切換延遲5ms

regulator-always-on; //始終供電,避免休眠斷電

regulator-boot-on; //啟動階段即供電,保證初始化

};

3.排查:主機初始化失敗?兩步定位

wKgZPGkanJiAfRu9AADaSDWNfrg397.png


若開機后dmesg看不到NVMe設(shè)備,提示主機初始化失敗,按這兩步查:

第一步:看PCIe鏈路是否“Link up”

通過dmesg查看PCIe控制器日志,核心看“LTSSM狀態(tài)PCIe鏈路訓(xùn)練狀態(tài)機):

#過濾PCIe控制器日志(以fe150000.pcie為例,根據(jù)實際地址修改)

dmesg | grep fe150000

?成功標(biāo)志:日志中出現(xiàn)PCIe Link up, LTSSM is 0x230011(如文檔2中的成功日志),說明PCIe鏈路已建立;

?失敗標(biāo)志:若LTSSM停在0x30x210022,說明鏈路沒訓(xùn)練成功,回頭查硬件(電源、時鐘引腳虛焊)。

第二步:查電源GPIO是否正常

如前文所述,通過/sys/kernel/debug/gpio查看電源使能GPIO(比如gpio-138):

?若顯示out lo:檢查DTSregulator節(jié)點的enable-active-high是否配置正確,或GPIO引腳復(fù)用沖突;

?若電壓正常但GPIO無輸出:排查GPIO引腳是否被其他驅(qū)動占用(用cat /sys/kernel/debug/pinctrl/pinctrl-soc/registered-pins查看)。

二、測試篇:三步走,測性能還不翻車

搞定初始化后,下一步是測試硬盤的掛載和讀寫性能,但要注意:測試會損壞硬盤格式,必須按流程來。

1.第一步:掛載硬盤,先確保掛得上

M.2 NVMe硬盤在Linux下識別為/dev/nvme0n1(若多個則為nvme0n2等),掛載分臨時掛載開機自動掛載

臨時掛載:快速測試

# 1.創(chuàng)建掛載點(比如/mnt/ssd

mkdir /mnt/ssd

# 2.掛載ext4格式的硬盤(若未格式化,先執(zhí)行mkfs.ext4 /dev/nvme0n1

mount -t ext4 /dev/nvme0n1 /mnt/ssd

# 3.檢查是否掛載成功(看/dev/nvme0n1是否在列表中)

df -h

?成功示例:文檔2df -h顯示/dev/nvme0n1 469G 28K 445G 1% /mnt/ssd,說明掛載正常。

開機自動掛載:避免每次手動操作

臨時掛載重啟后失效,通過/etc/fstab配置自動掛載:

# 1.先檢查/dev/nvme0n1UUID(避免設(shè)備名變動導(dǎo)致掛載失?。?/span>

blkid /dev/nvme0n1

# 2.將掛載信息寫入/etc/fstab(示例,UUID需替換為實際值)

echo 'UUID=xxxx-xxxx/mnt/ssdext4defaults00' | sudo tee -a /etc/fstab

# 3.測試自動掛載(無需重啟)

sudo mount -a

# 4.驗證:再次用df -h查看,確認(rèn)已掛載

?避坑:不要直接寫/dev/nvme0n1,用UUID更穩(wěn)定(設(shè)備名可能因插其他硬盤變動)。

2.第二步:用dd測讀寫速率,看性能達標(biāo)沒

M.2硬盤的核心優(yōu)勢是速度,用dd指令測試讀寫速率(文檔1中的核心指令),注意指令含義和參數(shù):

測試讀取速率

# if=輸入文件(從硬盤讀),of=輸出文件(丟棄到/dev/null),bs=塊大小1MBcount=1024次(共1GB

dd if=/dev/nvme0n1 of=/dev/null bs=1M count=1024

?文檔2中實際結(jié)果:1073741824字節(jié)已復(fù)制, 0.535s, 2.0 GB/s,說明讀取速率達標(biāo)(PCIe 3.0×4的理論上限是4GB/s,實際因損耗在2GB/s左右正常)。

測試寫入速率

# if=輸入文件(從/dev/zero讀零數(shù)據(jù)),of=輸出文件(寫入硬盤),conv=fdatasync(強制同步到硬件,避免緩存干擾)

dd if=/dev/zero of=/dev/nvme0n1 bs=1M count=1024 conv=fdatasync

?文檔2中實際結(jié)果:1073741824字節(jié)已復(fù)制, 0.944s, 1.1 GB/s,寫入速率略低是正?,F(xiàn)象(NVMe硬盤通常讀快于寫)。

3.關(guān)鍵一步:測試后必須格式化,否則重啟翻車

重點提醒:上述dd指令會直接讀寫硬盤原始扇區(qū),導(dǎo)致ext4格式損壞——若不重新格式化,下次重啟會找不到硬盤!

正確流程:測試后立即卸載并重新格式化:

# 1.先卸載掛載點(必須先卸載,否則無法格式化)

umount /mnt/ssd

# 2.重新格式化為ext4格式(注意:會清除所有數(shù)據(jù),測試后執(zhí)行)

mkfs.ext4 /dev/nvme0n1

# 3.格式化后重新掛載,確保正常使用

mount /mnt/ssd

?避坑:若忘記格式化,重啟后df -h看不到硬盤,需重新執(zhí)行上述指令修復(fù)。

三、避坑總結(jié):3個關(guān)鍵要點記牢

1.DTS配置:電源+時鐘別漏配

?控制器節(jié)點(&pcie3x4)必須關(guān)聯(lián)vpcie3v3-supply,否則沒電;

?時鐘請求引腳(pcie20x1_0_clkreqn_m1)拉取狀態(tài)要匹配硬件,不穩(wěn)定就改下拉。

1.測試后:格式化是保命步驟

?dd指令直接操作原始扇區(qū),不格式化會破壞文件系統(tǒng),重啟必翻車;

?格式化前務(wù)必umount,否則會提示設(shè)備忙。

1.排查時:先看鏈路和GPIO

?初始化失敗先查dmesgPCIe Link是否up;

?電源問題直接看/sys/kernel/debug/gpio,比測電壓更高效。

結(jié)尾

M.2硬盤調(diào)試看似復(fù)雜,實則圍繞電源穩(wěn)、鏈路通、配置對、測試規(guī)范這幾個核心。你在調(diào)試時遇到過掛載后掉盤”“速率不達標(biāo)這類問題嗎?歡迎在評論區(qū)分享你的踩坑經(jīng)歷,一起交流解決!



聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20446

    瀏覽量

    334010
  • 硬盤
    +關(guān)注

    關(guān)注

    3

    文章

    1361

    瀏覽量

    59879
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    614

    瀏覽量

    29905
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    串口通信基石:Air8000Modbus RTU串口初始化詳解!

    串口初始化是Modbus RTU通信穩(wěn)定可靠的關(guān)鍵起點。本篇深入剖析Air8000開發(fā)板串口參數(shù)配置、初始化代碼實現(xiàn)及調(diào)試要點,結(jié)合master_rtu示例,分享實際操作中的經(jīng)驗與
    的頭像 發(fā)表于 10-28 16:33 ?1654次閱讀
    串口通信基石:Air8000<b class='flag-5'>下</b>Modbus RTU串口<b class='flag-5'>初始化</b>詳解!

    將1YN M.2與COOLDIM_PRG_BOARD NUCLEO-H753ZI結(jié)合使用,初始化Wi-Fi失敗的原因?

    測試了 BLE,但是當(dāng)使用示例代碼“wifi_bt_tester”測試 WiFi 類型 - 1YN 時,出現(xiàn)如下錯誤: 接口未啟動/NULL,在函數(shù) whd_deinit 第 193 行失敗
    發(fā)表于 03-05 06:22

    M.2固態(tài)硬盤無法識別的兩個原因和解決方法

    。但是,有些朋友正在使用M.2 SSD,并且計算機無法識別硬盤。在這種現(xiàn)象的情況,我們該怎么辦? 一般情況,當(dāng)主板可以連接到M.2固態(tài)
    發(fā)表于 09-25 20:24

    請問M.2固態(tài)硬盤的接口種類有哪些?

    請問M.2固態(tài)硬盤的接口種類有哪些?
    發(fā)表于 06-18 08:00

    BPI啟動,F(xiàn)lash初始化失敗

    我有一個KC705評估板配置為在x16模式使用BPI Flash。在使用JTAG端口加載設(shè)計位文件的后,我可以初始化閃存。但是,當(dāng)我BPI啟動我的設(shè)計時,閃存初始化
    發(fā)表于 10-11 13:11

    MIMXRT1024-EVK閃存初始化失敗的原因?

    我正在使用 EVK 套件 MIMXRT1024。當(dāng)我嘗試調(diào)試時出現(xiàn)以下錯誤閃存驅(qū)動程序 V.2 啟動失敗 - rc Ef(34):初始化閃存超時。芯片
    發(fā)表于 04-11 06:37

    【資料分享】NXP i.MX 8M Mini評估版測試手冊(1)

    -u 圖 28 1.6 DDR讀寫測試Linux系統(tǒng)啟動時,在U-Boot的SPL階段完成DDR的初始化,并打印DDR實際容量,如下圖
    發(fā)表于 06-15 14:32

    AD2S1210初始化讀寫寄存器失敗的原因?如何解決?

    配置:并口通訊。 問題: 初始化讀寫寄存器失敗。正常工作后讀取速度數(shù)據(jù)失敗。 初始化中配置模式,讀寫
    發(fā)表于 12-04 06:33

    LINUX系統(tǒng)引導(dǎo)和初始化-LINUX內(nèi)核解讀

    Linux系統(tǒng)引導(dǎo)和初始化 ----------Linux2.4.22內(nèi)核解讀之一 一、 系統(tǒng)引導(dǎo)和
    發(fā)表于 11-03 22:31 ?53次下載

    Linux內(nèi)存初始化

    之前有幾篇博客詳細(xì)介紹了Xen的內(nèi)存初始化,確實感覺這部分內(nèi)容蠻復(fù)雜的。這兩天在看Linux內(nèi)核啟動中內(nèi)存的初始化,也是看的云里霧里的,想嘗試下邊看邊寫,在寫博客的過程中慢慢思考,最后也能把自己
    發(fā)表于 10-12 11:16 ?0次下載

    在51平臺初始化文件的引入導(dǎo)致全局變量無法初始化的問題如何解決

    本文檔的主要內(nèi)容詳細(xì)介紹的是在51平臺初始化文件的引入導(dǎo)致全局變量無法初始化的問題如何解決。
    發(fā)表于 08-20 17:31 ?0次下載
    在51平臺<b class='flag-5'>下</b><b class='flag-5'>初始化</b>文件的引入導(dǎo)致全局變量無法<b class='flag-5'>初始化</b>的問題如何解決

    如何使用精確估計滿秩空間相關(guān)矩陣實現(xiàn)MNMF穩(wěn)定初始化的方法

    相關(guān)矩陣的最大特征值的特征向量。本文比較了秩和秩1初始化類型。另一方面,獨立低秩矩陣分析(ILRMA)通過使用秩1分解矩陣代替空間相關(guān)矩陣來加速矩陣分解。上述初始化方法可應(yīng)用于ILRMA。ILRMA的缺點是過度確定的情況,在這
    發(fā)表于 10-16 08:00 ?3次下載
    如何使用精確估計<b class='flag-5'>滿</b>秩空間相關(guān)矩陣實現(xiàn)MNMF穩(wěn)定<b class='flag-5'>初始化</b>的方法

    MPU6050初始化失敗

    MPU6050初始化失敗osDelay(1000); //上電uint8_t mpu_ok = MPU_init();uint8_t cnt = 0;while
    發(fā)表于 12-06 12:36 ?13次下載
    MPU6050<b class='flag-5'>初始化</b><b class='flag-5'>失敗</b>

    M.2接口的固態(tài)硬盤有何優(yōu)勢?

    。 首先,M.2接口固態(tài)硬盤具有更小的尺寸。M.2接口是一種小型、薄型的連接器,其尺寸通常僅為SATA接口固態(tài)硬盤的一半。這對于需要緊湊設(shè)計的設(shè)備非常重要,比如超薄筆記本電腦、
    的頭像 發(fā)表于 01-15 14:31 ?4222次閱讀

    多塊 M.2 硬盤拆到崩潰?M.2 硬盤抽取盒才是救星!

    當(dāng)電腦裝多塊M.2固態(tài)硬盤,你是否常為調(diào)取文件,不得不關(guān)程序、斷電開機箱,在狹小空間擰螺絲、拔插硬盤?本需幾分鐘的操作,淪為耗時費力的工程;這就像有裝滿珍寶的保險庫,取物卻要大動干戈。你需要的不是
    的頭像 發(fā)表于 10-11 15:15 ?786次閱讀
    多塊 <b class='flag-5'>M.2</b> <b class='flag-5'>硬盤</b>拆到崩潰?<b class='flag-5'>M.2</b> <b class='flag-5'>硬盤</b>抽取盒才是救星!