日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

jf_44130326 ? 來源: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)卡死的問題。核心癥結(jié)不僅是驅(qū)動(dòng)適配,更在于PCIe3x4節(jié)點(diǎn)的硬件參數(shù)未對齊。本文將聚焦pcie3x4接口的關(guān)鍵配置,結(jié)合驅(qū)動(dòng)優(yōu)化與系統(tǒng)掛載同步,完整拆解解決方案,幫你避開同類陷阱。

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

wKgZPGlfFX6AC5eWAAXG15miHhM769.png

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

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

?擴(kuò)展接口:PCIe3x4(需工作在2 lane模式,存儲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不匹配)。

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

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

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

RK3588PCIe接口需通過設(shè)備樹(DTS)指定硬件參數(shù),默認(rèn)配置往往與實(shí)際版型不匹配。我們最終確定的pcie3x4節(jié)點(diǎn)正確配置如下,每一項(xiàng)參數(shù)都需對應(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è)備無法復(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)中適配性問題,確保pcie3x4接口穩(wěn)定工作:

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

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

// 原代碼:判斷條件過嚴(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的信號校準(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)未處理DMA對象的場景,導(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;+// 新增:無DMA對象時(shí)正常返回(避免驅(qū)動(dòng)崩潰)+}elseif(!rk_pcie->dma_obj) {/* !CONFIG_ROCKCHIP_PCIE_DMA_OBJ */+return0;}// 啟用客戶端讀寫中斷(保留原邏輯)...}

修改后重新編譯內(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)猜測)

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(來自編譯日志)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)即可識別;test_data:growSPI的擴(kuò)展分區(qū),主要用于測試,按需添加。

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

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

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

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

3.穩(wěn)定性PCIe鏈路無斷開,ssd存儲讀寫無異常。

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

本次修復(fù)的核心是硬件參數(shù)對齊+配置同步,關(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ǔ)充DMA對象的判斷邏輯,避免驅(qū)動(dòng)崩潰

根分區(qū)UUID同步

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

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

系統(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í)性

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

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

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

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

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


審核編輯 黃宇

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

    關(guān)注

    17

    文章

    1900

    瀏覽量

    102185
  • PCIe
    +關(guān)注

    關(guān)注

    16

    文章

    1483

    瀏覽量

    88962
  • RK3588
    +關(guān)注

    關(guān)注

    8

    文章

    592

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    貝啟科技RK3588+RK1828方案機(jī)器人展示

    貝啟科技攜手AutoCore達(dá)成深度合作,聯(lián)合打造RK3588+RK1828國產(chǎn)化機(jī)器人開發(fā)平臺。該方案實(shí)現(xiàn)芯片、硬件、軟件鏈路國產(chǎn)自研,核心技術(shù)具備自主知識產(chǎn)權(quán),支持規(guī)?;焖倭慨a(chǎn),能夠有效幫助
    的頭像 發(fā)表于 04-28 17:12 ?944次閱讀
    貝啟科技<b class='flag-5'>RK3588+RK</b>1828<b class='flag-5'>方案</b>機(jī)器人展示

    RK3588操控終端

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

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

    你的專屬“數(shù)字員工”已到崗!迅為RK3588系列適配OpenClaw
    的頭像 發(fā)表于 02-27 15:33 ?835次閱讀
    你的專屬“數(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ī) ,且均支持通過vendor_storage動(dòng)態(tài)配置隔離核心,無需反復(fù)編譯固件,重啟即可生效。下文將從隔離原理、適用場景、雙
    的頭像 發(fā)表于 02-09 07:12 ?569次閱讀
    <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?壓測:崩潰排障的流程解析

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

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

    嵌入式開發(fā)中,DisplayPort(DP)接口的調(diào)試常讓工程師頭疼 —— 不同芯片特性差異大、Type-C 與標(biāo)準(zhǔn)口配置不同、高分辨率輸出異常、MST 多屏適配難… 尤其是 Rockchip RK3399、
    的頭像 發(fā)表于 02-04 16:14 ?1027次閱讀
    一文打通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>平臺

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

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

    RK3588平臺雙存儲(SPI+PCIE)OTA升級方案教學(xué)文檔

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

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

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

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

    資源解析、 3? 大拆分方案實(shí)戰(zhàn)、關(guān)鍵配置步驟及避坑要點(diǎn),附帶可視化腦圖,助力開發(fā)者快速落地? PCIe
    的頭像 發(fā)表于 11-20 18:18 ?4876次閱讀
    一文搞懂?<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>?+?避坑指南(含腦圖)

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

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

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

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

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

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

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

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

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

    RK3588參數(shù)與主要特性 RK3588數(shù)據(jù)手冊解讀
    的頭像 發(fā)表于 05-19 18:34 ?1.5w次閱讀
    <b class='flag-5'>RK3588</b>參數(shù)與主要特性  <b class='flag-5'>RK3588</b>數(shù)據(jù)手冊解讀
    玛曲县| 岐山县| 临泉县| 扶余县| 齐齐哈尔市| 石屏县| 江北区| 铅山县| 南召县| 长兴县| 青岛市| 阿瓦提县| 翼城县| 周宁县| 印江| 都兰县| 睢宁县| 太谷县| 姚安县| 建平县| 铁力市| 普定县| 德昌县| 民乐县| 三江| 水富县| 绥化市| 呼伦贝尔市| 湘乡市| 岳阳县| 龙胜| 灌云县| 缙云县| 九龙城区| 山丹县| 伽师县| 灵川县| 临高县| 黎平县| 楚雄市| 屏边|