国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

掃碼添加小助手

加入工程師交流群

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

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

一、調試篇:先解決認得到,再談用得好

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

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

wKgZPGkanJiANiUcAAHujs1uwQc296.png

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

?電源:VCC3V3_PCIE30必須到位

原理圖中M.2的供電依賴VCC3V3_PCIE30(文檔2原理圖標注),實際調試時要確認兩點:

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

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

#查看GPIO電平,確認電源使能(gpio-138對應vcc3v3-ssdout hi表示已使能)

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

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

?時鐘:PCIE_CLKREQn引腳別浮空

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

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

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

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

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

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

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

&pcie30phy {

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

status = "okay"; //啟用PHY

};

2PCIe控制器配置:電源+復位+引腳

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

&pcie3x4 {

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

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

pinctrl-names = "default";

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

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

};

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

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

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

pcie20_vcc3v3_ssd_4G: vcc3v3-ssd{

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

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

pinctrl-names = "default";

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

regulator-name = "pcie20_3v3_ssd"; //電源名稱,與控制器對應

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設備,提示主機初始化失敗,按這兩步查:

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

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

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

dmesg | grep fe150000

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

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

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

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

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

?若電壓正常但GPIO無輸出:排查GPIO引腳是否被其他驅動占用(用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(避免設備名變動導致掛載失敗)

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查看,確認已掛載

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

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

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中實際結果:1073741824字節(jié)已復制, 0.535s, 2.0 GB/s,說明讀取速率達標(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中實際結果:1073741824字節(jié)已復制, 0.944s, 1.1 GB/s,寫入速率略低是正常現(xiàn)象(NVMe硬盤通常讀快于寫)。

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

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

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

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

umount /mnt/ssd

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

mkfs.ext4 /dev/nvme0n1

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

mount /mnt/ssd

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

三、避坑總結:3個關鍵要點記牢

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

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

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

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

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

?格式化前務必umount,否則會提示設備忙

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

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

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

結尾

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



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

    關注

    5198

    文章

    20442

    瀏覽量

    333963
  • 硬盤
    +關注

    關注

    3

    文章

    1361

    瀏覽量

    59874
  • Linux系統(tǒng)

    關注

    4

    文章

    614

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

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

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

    測試了 BLE,但是當使用示例代碼“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)象的情況,我們該怎么辦? 一般情況,當主板可以連接到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端口加載設計位文件的后,我可以初始化閃存。但是,當我BPI啟動我的設計時,閃存初始化
    發(fā)表于 10-11 13:11

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

    我正在使用 EVK 套件 MIMXRT1024。當我嘗試調試時出現(xiàn)以下錯誤閃存驅動程序 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)引導和初始化-LINUX內核解讀

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

    Linux內存初始化

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

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

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

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

    相關矩陣的最大特征值的特征向量。本文比較了秩和秩1初始化類型。另一方面,獨立低秩矩陣分析(ILRMA)通過使用秩1分解矩陣代替空間相關矩陣來加速矩陣分解。上述初始化方法可應用于ILRMA。ILRMA的缺點是過度確定的情況,在這
    發(fā)表于 10-16 08:00 ?3次下載
    如何使用精確估計<b class='flag-5'>滿</b>秩空間相關矩陣實現(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)硬盤的一半。這對于需要緊湊設計的設備非常重要,比如超薄筆記本電腦、
    的頭像 發(fā)表于 01-15 14:31 ?4220次閱讀

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

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