哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

實(shí)戰(zhàn)復(fù)盤:RK3588 SPI+PCIe3x4方案啟動(dòng)修復(fù),從節(jié)點(diǎn)配置到驅(qū)動(dòng)適配全解析

jf_44130326 ? 來(lái)源:Linux1024 ? 作者:Linux1024 ? 2026-01-08 10:24 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

RK3588嵌入式項(xiàng)目中,接口配置不匹配是高頻踩坑點(diǎn)——近期基于linux6.1內(nèi)核調(diào)試SPI閃存+PCIe3x4外設(shè)方案時(shí),就遇到了“eMMC方案正常,切換后系統(tǒng)卡死的問(wèn)題。核心癥結(jié)不僅是驅(qū)動(dòng)適配,更在于PCIe3x4節(jié)點(diǎn)的硬件參數(shù)未對(duì)齊。本文將聚焦pcie3x4接口的關(guān)鍵配置,結(jié)合驅(qū)動(dòng)優(yōu)化與系統(tǒng)掛載同步,完整拆解解決方案,幫你避開(kāi)同類陷阱。

一、問(wèn)題背景:PCIe3x4接口成啟動(dòng)瓶頸

wKgZPGlfFX6AC5eWAAXG15miHhM769.png

RK3588支持多組PCIe接口(如pcie3x2、pcie3x4),不同接口的lane數(shù)、復(fù)位引腳、供電要求差異極大。我們的項(xiàng)目需求是:

?存儲(chǔ)介質(zhì):SPI閃存(存儲(chǔ)uboot);

?擴(kuò)展接口:PCIe3x4(需工作在2 lane模式,存儲(chǔ)kernelrootfs)。

但實(shí)際調(diào)試時(shí),系統(tǒng)啟動(dòng)直接卡死,串口日志報(bào)兩類關(guān)鍵錯(cuò)誤:

1.PCIe相關(guān):rk-pcie fe150000.pcie: fail to init phy, err -110PHY初始化失?。?、PCIe Link Fail, LTSSM is 0x0(鏈路未建立);

2.系統(tǒng)掛載:Waiting for root device PARTUUID=614e0000-0000...(根分區(qū)UUID不匹配)。

對(duì)比eMMC方案,問(wèn)題根源清晰:PCIe3x4節(jié)點(diǎn)配置未識(shí)別硬件,且存儲(chǔ)的根分區(qū)配置未同步。

二、排查與修復(fù):三步搞定PCIe3x4+SPI啟動(dòng)

1.第一步:修正PCIe3x4節(jié)點(diǎn)配置——硬件參數(shù)必須對(duì)齊

RK3588PCIe接口需通過(guò)設(shè)備樹(shù)(DTS)指定硬件參數(shù),默認(rèn)配置往往與實(shí)際版型不匹配。我們最終確定的pcie3x4節(jié)點(diǎn)正確配置如下,每一項(xiàng)參數(shù)都需對(duì)應(yīng)硬件設(shè)計(jì):

&pcie3x4 {num-lanes = <2>; //關(guān)鍵:根據(jù)硬件設(shè)計(jì)設(shè)為2lane(非默認(rèn)4lane)//reset-gpios = <&gpio4 RK_PB6 GPIO_ACTIVE_HIGH>;//適配“RK57”版型,當(dāng)前不用reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;//關(guān)鍵:“RN01”版型的復(fù)位引腳vpcie3v3-supply = <&vcc3v3_pcie30>;//供電:PCIe3.0標(biāo)準(zhǔn)3.3V供電pinctrl-names ="default";//啟用默認(rèn)引腳控制status ="okay";//啟用接口(默認(rèn)可能為“disabled”)};

關(guān)鍵參數(shù)解讀(避坑重點(diǎn)):

?num-lanes = <2>PCIe3x4接口支持1/2/4 lane,但硬件若只布了2 lane線路,設(shè)為4 lane會(huì)導(dǎo)致鏈路協(xié)商失敗;

?reset-gpios:復(fù)位引腳必須與硬件原理圖一致錯(cuò)配會(huì)導(dǎo)致PCIe設(shè)備無(wú)法復(fù)位初始化;

?vpcie3v3-supply:必須關(guān)聯(lián)正確的3.3V電源域(vcc3v3_pcie30),供電缺失會(huì)直接報(bào)PHY初始化錯(cuò)誤(err -110)。

2.第二步:優(yōu)化PCIe驅(qū)動(dòng)——解決PHY初始化與DMA適配

僅配置節(jié)點(diǎn)還不夠,需修復(fù)驅(qū)動(dòng)中適配性問(wèn)題,確保pcie3x4接口穩(wěn)定工作:

1)修復(fù)PCIe PHY初始化邏輯(phy-rockchip-snps-pcie3.c

原驅(qū)動(dòng)中SRAM初始化判斷與超時(shí)定義存在問(wèn)題,導(dǎo)致PHY啟動(dòng)超時(shí):

// 原代碼:判斷條件過(guò)嚴(yán),超時(shí)定義不通用-#defineRK3588_SRAM_INIT_DONE(reg)((reg & 0xff) == 0x49)-#defineRK3588_SRAM_INIT_TIMEOUT20000// 修改后:寬松且準(zhǔn)確的判斷,通用超時(shí)宏+#defineRK3588_SRAM_INIT_DONE(reg)((reg & 0xf) == 0xf)+#defineRK_PCIE_SRAM_INIT_TIMEOUT20000// 新增PHY校準(zhǔn)函數(shù)(適配pcie3x4的信號(hào)校準(zhǔn))+staticintrockchip_p3phy_rk3588_calibrate(structrockchip_p3phy_priv *priv)+{+intret =0;+u32 reg;+// 等待PHY0初始化完成(pcie3x4核心PHY)+ret = regmap_read_poll_timeout(priv->phy_grf,+    RK3588_PCIE3PHY_GRF_PHY0_STATUS1,+    reg, RK3588_SRAM_INIT_DONE(reg),+   100, RK_PCIE_SRAM_INIT_TIMEOUT);+// 若為聚合模式,需同時(shí)校準(zhǔn)PHY1+if(priv->pcie30_phymode == PHY_MODE_PCIE_AGGREGATION) {+ret |= regmap_read_poll_timeout(priv->phy_grf,+RK3588_PCIE3PHY_GRF_PHY1_STATUS1,+reg, RK3588_SRAM_INIT_DONE(reg),+100, RK_PCIE_SRAM_INIT_TIMEOUT);+}+if(ret)+pr_err("pcie3x4 PHY calibrate failed, check refclk/powern");+returnret;+}// 關(guān)聯(lián)校準(zhǔn)函數(shù)到RK3588操作集staticconststructrockchip_p3phy_ops rk3588_ops = {.phy_init = rockchip_p3phy_rk3588_init,+.phy_calibrate = rockchip_p3phy_rk3588_calibrate,// 啟用校準(zhǔn)};

2)適配PCIe DMA初始化(pcie-dw-rockchip.c

原驅(qū)動(dòng)未處理無(wú)DMA對(duì)象的場(chǎng)景,導(dǎo)致驅(qū)動(dòng)異常退出,需補(bǔ)充判斷:

staticintrk_pcie_init_dma_trx(structrk_pcie *rk_pcie){if(IS_ERR(rk_pcie->dma_obj)) {dev_err(rk_pcie->pci->dev,"failed to prepare dmatestn");return-EINVAL;+// 新增:無(wú)DMA對(duì)象時(shí)正常返回(避免驅(qū)動(dòng)崩潰)+}elseif(!rk_pcie->dma_obj) {/* !CONFIG_ROCKCHIP_PCIE_DMA_OBJ */+return0;}// 啟用客戶端讀寫(xiě)中斷(保留原邏輯)...}

修改后重新編譯內(nèi)核,串口日志顯示pcie3x4接口正常啟動(dòng)

rk-pcie fe150000.pcie: PCIe Link up, LTSSM is 0x30011——鏈路協(xié)商成功。

3.第三步:同步pcie根分區(qū)UUID——解決找不到根設(shè)備

pcie的根分區(qū)UUIDeMMC完全不同,需從編譯日志獲取真實(shí)UUID,并同步到兩處配置:

wKgZPGlfFX6AHEB8AAAhHHujxiQ943.png

1)從編譯日志取UUID(關(guān)鍵!避免手動(dòng)猜測(cè))

wKgZPGlfFX6AQME5AAAnCJpew2Y116.png

生成根文件系統(tǒng)(rootfs)時(shí),編譯日志會(huì)明確輸出UUID

FilesystemUUID: c2ebb35f-b6ea-47ac-94e7-eeb1c99df3cb // 這是ssd根分區(qū)的真實(shí)UUID

2)同步修改parameter.txtbootargs

?修改device/rockchip/.chips/rk3588/parameter.txt:更新rootfsUUID

-uuid:rootfs=4b74bac5-ff38-46be-ae91-7452df777ae8 // 原eMMC的UUID+uuid:rootfs=c2ebb35f-b6ea-47ac-94e7-eeb1c99df3cb // ssd的UUID(來(lái)自編譯日志)uuid:boot=7A3F0000-0000-446A-8000-702F00006273

?修改kernel-6.1/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsi:同步bootargs的根分區(qū)配置,并添加ssdUUID

chosen: chosen {-  bootargs ="earlycon=uart8250,mmio32,0xfeb50000 ... root=PARTUUID=614e0000-0000 ... mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00800000@0x00800000(uboot)";+  bootargs ="earlycon=uart8250,mmio32,0xfeb50000 ... root=PARTUUID=c2ebb35f-b6ea ... mtdparts=sfc_nor:0x00040000@0x00180000(vnvm),0x00800000@0x00800000(uboot),-@0x00A00000(test_data:grow)";};

注:root=PARTUUID只需填前16位(c2ebb35f-b6ea),系統(tǒng)即可識(shí)別;test_data:growSPI的擴(kuò)展分區(qū),主要用于測(cè)試,按需添加。

三、最終驗(yàn)證:PCIe3x4+SPI方案正常工作

完成上述修改后,燒錄鏡像測(cè)試,結(jié)果符合預(yù)期:

1.PCIe3x4外設(shè)lspci命令能識(shí)別到PCIe設(shè)備(如NVMe硬盤),讀寫(xiě)速度正常;

2.系統(tǒng)啟動(dòng):無(wú)等待根設(shè)備報(bào)錯(cuò);

3.穩(wěn)定性PCIe鏈路無(wú)斷開(kāi),ssd存儲(chǔ)讀寫(xiě)無(wú)異常。

四、關(guān)鍵修改總結(jié)

本次修復(fù)的核心是硬件參數(shù)對(duì)齊+配置同步,關(guān)鍵修改點(diǎn)整理如下:

模塊

修改文件路徑

核心修改內(nèi)容

PCIe3x4節(jié)點(diǎn)配置

kernel-6.1/arch/arm64/boot/dts/rockchip/xxx.dtsi(如rk3588-evb7-v11.dtsi

設(shè)置num-lanes=2、reset-gpios=gpio1 RK_PB2,status="okay"

PCIe PHY驅(qū)動(dòng)

kernel-6.1/drivers/phy/rockchip/phy-rockchip-snps-pcie3.c

修復(fù)SRAM初始化判斷,新增rockchip_p3phy_rk3588_calibrate校準(zhǔn)函數(shù)

PCIe DMA驅(qū)動(dòng)

kernel-6.1/drivers/pci/controller/dwc/pcie-dw-rockchip.c

補(bǔ)充無(wú)DMA對(duì)象的判斷邏輯,避免驅(qū)動(dòng)崩潰

根分區(qū)UUID同步

device/rockchip/.chips/rk3588/parameter.txt

更新uuid:rootfspcie根分區(qū)UUID(來(lái)自編譯日志)

系統(tǒng)啟動(dòng)參數(shù)

kernel-6.1/arch/arm64/boot/dts/rockchip/rk3588-linux.dtsi

同步bootargsroot=PARTUUID

內(nèi)核配置優(yōu)化

kernel-6.1/arch/arm64/configs/rk3588_linux.config

新增CONFIG_RCU_FAST_NO_HZ=y,提升系統(tǒng)實(shí)時(shí)性

五、嵌入式開(kāi)發(fā)啟示:細(xì)節(jié)決定適配成敗

1.PCIe接口配置硬軟必須對(duì)齊lane數(shù)、復(fù)位引腳、供電域需1:1對(duì)應(yīng)硬件原理圖,尤其是不同版型的引腳差異,錯(cuò)配必出問(wèn)題;

2.UUID從編譯日志取,不猜不試pcie/eMMC的根分區(qū)UUID不同,手動(dòng)填寫(xiě)易出錯(cuò),直接從rootfs編譯日志復(fù)制最準(zhǔn)確;

3.驅(qū)動(dòng)調(diào)試抓日志,看關(guān)鍵值PHY初始化失敗(err -110)先查供電/復(fù)位,鏈路失敗(LTSSM=0x0)先查lane數(shù)與引腳配置,日志是最佳線索。

如果你的RK3588項(xiàng)目也在PCIe+SPI方案上卡殼,不妨對(duì)照本文檢查節(jié)點(diǎn)配置與UUID同步——多數(shù)時(shí)候,問(wèn)題都藏在這些細(xì)節(jié)里。歡迎在評(píng)論區(qū)分享你的調(diào)試經(jīng)驗(yàn)~


審核編輯 黃宇

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

    關(guān)注

    17

    文章

    1897

    瀏覽量

    101990
  • PCIe
    +關(guān)注

    關(guān)注

    16

    文章

    1471

    瀏覽量

    88867
  • RK3588
    +關(guān)注

    關(guān)注

    8

    文章

    583

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    RK3588操控終端

    RK3588操控終端全國(guó)產(chǎn)化無(wú)人裝備手持操控終端,搭載工業(yè)級(jí)瑞芯微RK3588J芯片,適配麒麟等自主操作系統(tǒng),硬件核心到軟件應(yīng)用實(shí)現(xiàn) 100% 國(guó)產(chǎn)化,徹底擺脫外部技術(shù)依賴。設(shè)備標(biāo)配
    發(fā)表于 02-28 09:42

    你的專屬“數(shù)字員工”已到崗!迅為RK3588系列適配OpenClaw

    你的專屬“數(shù)字員工”已到崗!迅為RK3588系列適配OpenClaw
    的頭像 發(fā)表于 02-27 15:33 ?754次閱讀
    你的專屬“數(shù)字員工”已到崗!迅為<b class='flag-5'>RK3588</b>系列<b class='flag-5'>適配</b>OpenClaw

    RK3588 CPU?隔離:AB/非?AB?系統(tǒng)雙方案適配實(shí)戰(zhàn)

    方案 ,兩套方案代碼均完整可直接套用,核心差異僅在于 代碼集成路徑與函數(shù)調(diào)用時(shí)機(jī) ,且均支持通過(guò)vendor_storage動(dòng)態(tài)配置隔離核心,無(wú)需反復(fù)編譯固件,重啟即可生效。下文將從隔離原理、適用場(chǎng)景、雙
    的頭像 發(fā)表于 02-09 07:12 ?503次閱讀
    <b class='flag-5'>RK3588</b> CPU?隔離:AB/非?AB?系統(tǒng)雙<b class='flag-5'>方案</b><b class='flag-5'>適配</b><b class='flag-5'>實(shí)戰(zhàn)</b>

    RK3588 PCIe?壓測(cè):崩潰排障的流程解析

    ? ? ? ? ? ? 在 RK3588 平臺(tái)上進(jìn)行 PCIe 設(shè)備(如 NVMe SSD )壓測(cè)時(shí),不少開(kāi)發(fā)者遇到過(guò)這樣的 “ 噩夢(mèng) ” :高負(fù)載下系統(tǒng)突然失去響應(yīng),日志里滿是異常信息,甚至直接
    的頭像 發(fā)表于 02-06 07:11 ?542次閱讀
    <b class='flag-5'>RK3588</b> <b class='flag-5'>PCIe</b>?壓測(cè):<b class='flag-5'>從</b>崩潰<b class='flag-5'>到</b>排障的<b class='flag-5'>全</b>流程<b class='flag-5'>解析</b>

    一文打通Rockchip DP調(diào)試:原理到實(shí)戰(zhàn),覆蓋RK3399/RK3576/RK3588平臺(tái)

    嵌入式開(kāi)發(fā)中,DisplayPort(DP)接口的調(diào)試常讓工程師頭疼 —— 不同芯片特性差異大、Type-C 與標(biāo)準(zhǔn)口配置不同、高分辨率輸出異常、MST 多屏適配難… 尤其是 Rockchip RK3399、
    的頭像 發(fā)表于 02-04 16:14 ?842次閱讀
    一文打通Rockchip DP調(diào)試:<b class='flag-5'>從</b>原理到<b class='flag-5'>實(shí)戰(zhàn)</b>,覆蓋<b class='flag-5'>RK</b>3399/<b class='flag-5'>RK</b>3576/<b class='flag-5'>RK3588</b><b class='flag-5'>全</b>平臺(tái)

    調(diào)試RK3588必看!這個(gè)臨時(shí)設(shè)備樹(shù)文件,藏著你要的所有配置答案

    ”——rk3588-evb7-v11-linux.dtb.dts.tmp。不少人以為它是編譯過(guò)程的“臨時(shí)垃圾”,看完這篇你就知道:它其實(shí)是解決硬件適配、內(nèi)核啟動(dòng)問(wèn)題的“調(diào)試鑰匙”。
    的頭像 發(fā)表于 02-03 15:55 ?1378次閱讀
    調(diào)試<b class='flag-5'>RK3588</b>必看!這個(gè)臨時(shí)設(shè)備樹(shù)文件,藏著你要的所有<b class='flag-5'>配置</b>答案

    RK3588平臺(tái)雙存儲(chǔ)(SPI+PCIE)OTA升級(jí)方案教學(xué)文檔

    在嵌入式設(shè)備中,單一存儲(chǔ)介質(zhì)可能存在容量限制或可靠性風(fēng)險(xiǎn)。RK3588 平臺(tái)的雙存儲(chǔ) OTA 升級(jí)方案支持SPI(如 SPI NAND/NOR)與
    的頭像 發(fā)表于 02-01 16:46 ?1756次閱讀
    <b class='flag-5'>RK3588</b>平臺(tái)雙存儲(chǔ)(<b class='flag-5'>SPI+PCIE</b>)OTA升級(jí)<b class='flag-5'>方案</b>教學(xué)文檔

    保姆級(jí)教程!RK3588 Linux6.1?固件簽名完整實(shí)現(xiàn)方案(不含rootfs)

    內(nèi)核)上實(shí)操固件簽名時(shí),踩了不少官方文檔的坑,經(jīng)過(guò)反復(fù)調(diào)試終于打通流程。今天就把這份實(shí)戰(zhàn)經(jīng)驗(yàn)整理成保姆級(jí)教程,配置問(wèn)題排查,一步步帶
    的頭像 發(fā)表于 01-14 17:21 ?2216次閱讀
    保姆級(jí)教程!<b class='flag-5'>RK3588</b> Linux6.1?固件簽名完整實(shí)現(xiàn)<b class='flag-5'>方案</b>(不含rootfs)

    迅為RK3588開(kāi)發(fā)環(huán)境搭建“三步曲”,一輕松上手!

    迅為RK3588開(kāi)發(fā)環(huán)境搭建“三步曲”,一輕松上手!
    的頭像 發(fā)表于 12-01 11:51 ?1300次閱讀
    迅為<b class='flag-5'>RK3588</b>開(kāi)發(fā)環(huán)境搭建“三步曲”,<b class='flag-5'>從</b>零<b class='flag-5'>到</b>一輕松上手!

    一文搞懂?RK3588 PCIe硬件資源拆分配置?+?避坑指南(含腦圖)

    資源解析3? 大拆分方案實(shí)戰(zhàn)、關(guān)鍵配置步驟及避坑要點(diǎn),附帶可視化腦圖,助力開(kāi)發(fā)者快速落地? PCIe
    的頭像 發(fā)表于 11-20 18:18 ?4595次閱讀
    一文搞懂?<b class='flag-5'>RK3588</b> <b class='flag-5'>PCIe</b>:<b class='flag-5'>從</b>硬件資源<b class='flag-5'>到</b>拆分<b class='flag-5'>配置</b>?+?避坑指南(含腦圖)

    開(kāi)發(fā)者必備,10 分鐘搞定 RK3588 PCIE 拆分!

    RK3588PCIE拆分的核心邏輯、配置步驟與實(shí)戰(zhàn)技巧,輕松上手!一、RK3588PCIE拆分映射關(guān)系圖PCIE的拆分機(jī)制的核心主要在于對(duì)于
    的頭像 發(fā)表于 11-13 08:31 ?1881次閱讀
    開(kāi)發(fā)者必備,10 分鐘搞定 <b class='flag-5'>RK3588</b> <b class='flag-5'>PCIE</b> 拆分!

    RK3588數(shù)據(jù)手冊(cè)

    RK3588的資料
    發(fā)表于 08-01 16:08 ?54次下載

    RK這2款旗艦芯片RK3588 PK RK3576,誰(shuí)是最優(yōu)選

    架構(gòu)來(lái)看,RK3588 的 Cortex - A75 和 Cortex - A55 核心在緩存配置上更為先進(jìn),尤其是 L3 緩存的共享機(jī)制可能使其在多核心協(xié)作和數(shù)據(jù)讀取方面具有優(yōu)勢(shì)。RK
    發(fā)表于 07-10 18:24

    RK3576 vs RK3588:為何越來(lái)越多的開(kāi)發(fā)者轉(zhuǎn)向RK3576?

    、商顯設(shè)備)。 RK3588 的 8K@60fps 更適合超高清視頻處理(如高端電視盒子、AI 視覺(jué)設(shè)備)。 RK3576 存儲(chǔ)選擇更靈活,可搭配低成本方案(如 SPI NAND),而
    發(fā)表于 05-30 08:46

    RK3588參數(shù)與主要特性 RK3588數(shù)據(jù)手冊(cè)解讀

    RK3588參數(shù)與主要特性 RK3588數(shù)據(jù)手冊(cè)解讀
    的頭像 發(fā)表于 05-19 18:34 ?1.4w次閱讀
    <b class='flag-5'>RK3588</b>參數(shù)與主要特性  <b class='flag-5'>RK3588</b>數(shù)據(jù)手冊(cè)解讀
    陵水| 崇礼县| 乌鲁木齐县| 若尔盖县| 宝清县| 合作市| 邹平县| 宁武县| 罗田县| 若尔盖县| 罗田县| 遵义市| 泾源县| 天台县| 鹤峰县| 汶川县| 固原市| 天气| 辉南县| 张家港市| 蓬莱市| 孝感市| 许昌市| 耒阳市| 揭西县| 保康县| 新余市| 松溪县| 珲春市| 长丰县| 陈巴尔虎旗| 岳西县| 原阳县| 金华市| 牡丹江市| 浦江县| 富宁县| 万山特区| 沐川县| 鄱阳县| 饶阳县|