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

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

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

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

深入解析RK3588 U-Boot板級(jí)文件:evb_rk3588.c核心邏輯拆解

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

掃碼添加小助手

加入工程師交流群

嵌入式開(kāi)發(fā)領(lǐng)域,瑞芯微RK3588憑借超強(qiáng)的算力、豐富的接口和廣泛的場(chǎng)景適配性,成為高端邊緣計(jì)算、消費(fèi)電子項(xiàng)目的熱門(mén)選擇。而U-Boot作為嵌入式系統(tǒng)第一道門(mén),負(fù)責(zé)硬件初始化、引導(dǎo)內(nèi)核啟動(dòng),其板級(jí)適配代碼直接決定了芯片硬件能力的落地。

今天我們聚焦RK3588評(píng)估板(EVB)的核心板級(jí)文件——u-boot/board/rockchip/evb_rk3588/evb_rk3588.c,拆解這份代碼的底層邏輯,搞懂RK3588USB功能是如何在U-Boot中被初始化和管理的。

wKgZPGmOXcqANRrfAAAv0f_A8Ck906.png

一、文件定位:RK3588 USB功能的板級(jí)適配基石

evb_rk3588.cRockchipRK3588評(píng)估板定制的U-Boot板級(jí)適配文件,核心職責(zé)是RK3588USB DWC3控制器提供板級(jí)初始化和管理邏輯,是評(píng)估板USB功能能正常工作的核心保障。

具體來(lái)說(shuō),這份文件的核心價(jià)值體現(xiàn)在3點(diǎn):

1.適配瑞芯微RK3588USB OTG控制器(基于DWC3架構(gòu)),實(shí)現(xiàn)硬件復(fù)位、參數(shù)配置等底層操作;

2.支撐USB Gadget(設(shè)備模式)功能,是瑞芯微Rockusb協(xié)議(刷機(jī)/調(diào)試專用)的底層依賴;

3.處理USB 3.0/2.0模式的兼容邏輯,包括PHY初始化失敗時(shí)的降級(jí)策略(USB3.0→USB2.0),保證基礎(chǔ)功能不丟失。

簡(jiǎn)單講:沒(méi)有這份文件,RK3588評(píng)估板的USB刷機(jī)、USB調(diào)試等核心功能,在U-Boot階段就無(wú)法正常工作。

二、逐行拆解:核心宏定義與函數(shù)功能

這份文件的代碼圍繞“USB控制器適配展開(kāi),我們從宏定義、全局配置、核心函數(shù)三個(gè)維度,逐一解析其功能。

1.硬件相關(guān)宏定義:操作時(shí)鐘與復(fù)位的地址鑰匙

#defineCRU_BASE0xfd7c0000#defineCRU_SOFTRST_CON420x0aa8

RK3588的硬件操作依賴時(shí)鐘復(fù)位單元(CRU,這兩個(gè)宏是操作USB OTG控制器復(fù)位的關(guān)鍵:

?CRU_BASECRU模塊的基地址,所有時(shí)鐘、復(fù)位寄存器都基于此地址訪問(wèn);

?CRU_SOFTRST_CON42USB OTG控制器的軟復(fù)位寄存器偏移量,寫(xiě)入特定值可觸發(fā)/釋放復(fù)位。

這是嵌入式開(kāi)發(fā)的典型設(shè)計(jì):通過(guò)物理地址直接操作硬件寄存器,實(shí)現(xiàn)對(duì)底層硬件的控制。

2.全局配置結(jié)構(gòu)體:DWC3控制器的參數(shù)清單

staticstructdwc3_device dwc3_device_data = {.maximum_speed = USB_SPEED_SUPER,.base=0xfc000000,.dr_mode = USB_DR_MODE_PERIPHERAL,.index =0,.dis_u2_susphy_quirk =1,.dis_u1u2_quirk =1,.usb2_phyif_utmi_width =16,};

這是給DWC3 USB控制器的初始化參數(shù),每一項(xiàng)都針對(duì)RK3588的硬件特性定制:

?maximum_speed:默認(rèn)開(kāi)啟USB 3.0超高速(SUPER);

?dr_mode:強(qiáng)制工作在設(shè)備模式(而非主機(jī)模式),因?yàn)?/span>U-Boot階段USB主要用于刷機(jī)/調(diào)試;

?dis_u2_susphy_quirk/dis_u1u2_quirk:關(guān)閉USB2.0 PHY休眠、U1/U2節(jié)能模式,避免初始化失敗或穩(wěn)定性問(wèn)題;

?usb2_phyif_utmi_width:配置USB2.0 PHY接口寬度為16位,匹配RK3588的硬件設(shè)計(jì)。

3.核心函數(shù)解析:USB功能的核心操作邏輯

1usb_gadget_handle_interruptsUSB中斷的響應(yīng)入口

intusb_gadget_handle_interrupts(intindex){dwc3_uboot_handle_interrupt(0);return0;}

功能:處理USB Gadget模式下的中斷請(qǐng)求。

U-Boot運(yùn)行時(shí),USB設(shè)備模式會(huì)產(chǎn)生各類(lèi)中斷(比如數(shù)據(jù)傳輸完成、設(shè)備枚舉),該函數(shù)是中斷處理的入口”——內(nèi)部調(diào)用U-Boot通用DWC3驅(qū)動(dòng)的中斷處理函數(shù),確保中斷被及時(shí)響應(yīng),保證USB數(shù)據(jù)傳輸不中斷。

2rkusb_usb3_capableUSB3.0能力的判斷開(kāi)關(guān)

boolrkusb_usb3_capable(void){returntrue;}

功能:告知上層邏輯(如Rockusb協(xié)議),當(dāng)前板子支持USB 3.0。

Rockusb是瑞芯微定制的USB協(xié)議(用于刷機(jī)、燒錄固件),該函數(shù)直接返回true,表示RK3588評(píng)估板硬件支持USB 3.0,上層可啟用高速傳輸模式,提升刷機(jī)/調(diào)試效率。

3usb_reset_otg_controllerUSB控制器的復(fù)位操作

staticvoidusb_reset_otg_controller(void){writel(0x00100010,CRU_BASE+CRU_SOFTRST_CON42);mdelay(1);writel(0x00100000,CRU_BASE+CRU_SOFTRST_CON42);mdelay(1);}

功能:對(duì)USB OTG控制器執(zhí)行軟復(fù)位,清除硬件異常狀態(tài)。

硬件初始化前,復(fù)位是必備步驟:

1.向復(fù)位寄存器寫(xiě)入0x00100010,觸發(fā)OTG控制器復(fù)位;

2.延時(shí)1ms,確保復(fù)位動(dòng)作完成;

3.寫(xiě)入0x00100000釋放復(fù)位;

4.再延時(shí)1ms,保證控制器穩(wěn)定運(yùn)行。

這一步能解決控制器殘留的異常狀態(tài),為后續(xù)初始化鋪路,是嵌入式硬件初始化的常規(guī)操作

4board_usb_initUSB初始化的核心入口

intboard_usb_init(intindex,enumusb_init_typeinit){u32 ret =0;usb_reset_otg_controller();// 先復(fù)位控制器#ifdefined(CONFIG_SUPPORT_USBPLUG)// 啟用USB插拔檢測(cè)時(shí),默認(rèn)降級(jí)為USB2.0dwc3_device_data.maximum_speed = USB_SPEED_HIGH;if(rkusb_switch_usb3_enabled()) {// 若開(kāi)啟USB3.0,嘗試初始化USB3.0 PHYdwc3_device_data.maximum_speed = USB_SPEED_SUPER;ret = rockchip_u3phy_uboot_init();if(ret) {// PHY初始化失敗,強(qiáng)制USB2.0rkusb_force_to_usb2(true);dwc3_device_data.maximum_speed = USB_SPEED_HIGH;}}#else// 未啟用插拔檢測(cè),直接初始化USB3.0 PHYret = rockchip_u3phy_uboot_init();if(ret) {// 失敗則降級(jí)為USB2.0rkusb_force_to_usb2(true);dwc3_device_data.maximum_speed = USB_SPEED_HIGH;}#endif// 調(diào)用通用驅(qū)動(dòng)完成DWC3控制器初始化returndwc3_uboot_init(&dwc3_device_data);}

功能U-Boot板級(jí)USB初始化的核心函數(shù),是USB控制器能工作的總開(kāi)關(guān)。

執(zhí)行流程拆解:

1.先復(fù)位控制器,清理初始狀態(tài);

2.若開(kāi)啟CONFIG_SUPPORT_USBPLUGUSB插拔檢測(cè)):

?先默認(rèn)設(shè)置為USB2.0高速模式,再檢查是否啟用USB3.0;

?嘗試初始化USB3.0 PHY,失敗則強(qiáng)制降級(jí)為USB2.0;

3.若未開(kāi)啟插拔檢測(cè):直接初始化USB3.0 PHY,失敗則降級(jí);

4.最后調(diào)用U-Boot通用DWC3驅(qū)動(dòng)的初始化函數(shù),完成控制器配置。

這個(gè)函數(shù)的設(shè)計(jì)體現(xiàn)了嵌入式開(kāi)發(fā)的容錯(cuò)思想:優(yōu)先嘗試高性能模式(USB3.0),失敗則降級(jí)到基礎(chǔ)模式(USB2.0),保證核心功能不丟失。

5board_usb_cleanup(條件編譯):USB資源的清理入口

#ifdefined(CONFIG_SUPPORT_USBPLUG)intboard_usb_cleanup(intindex,enumusb_init_typeinit){dwc3_uboot_exit(index);return0;}#endif

功能:僅在啟用USB插拔檢測(cè)時(shí)生效,負(fù)責(zé)清理USB控制器資源。

當(dāng)USB設(shè)備插拔時(shí),需要釋放舊的控制器資源,該函數(shù)調(diào)用通用驅(qū)動(dòng)的退出函數(shù),保證多次插拔時(shí)USB功能的穩(wěn)定性。

三、USB功能異常排查流程圖:快速定位問(wèn)題

U-Boot階段USB功能異常(刷機(jī)失敗、調(diào)試無(wú)響應(yīng))的排查流程圖,直接對(duì)照即可快速縮小故障范圍,適配evb_rk3588.c的核心邏輯:

wKgZPGmOXcqABG3pAAHtnQtm430238.png

四、總結(jié):嵌入式板級(jí)適配的核心思路

evb_rk3588.c雖代碼量不大,但濃縮了嵌入式板級(jí)適配的核心思想:

1.分層設(shè)計(jì):硬件無(wú)關(guān)的邏輯交給U-Boot通用驅(qū)動(dòng)(如DWC3驅(qū)動(dòng)),硬件相關(guān)的細(xì)節(jié)(復(fù)位、PHY配置)交給板級(jí)文件;

2.容錯(cuò)設(shè)計(jì):關(guān)鍵功能(如USB3.0)做降級(jí)兼容,保證基礎(chǔ)功能可用;

3.硬件直操:通過(guò)物理地址操作寄存器,實(shí)現(xiàn)對(duì)底層硬件的精準(zhǔn)控制。

對(duì)于RK3588開(kāi)發(fā)者來(lái)說(shuō),理解這份代碼不僅能解決USB初始化失敗、刷機(jī)異常等問(wèn)題,更能掌握板級(jí)適配的核心邏輯——把通用驅(qū)動(dòng)和具體硬件結(jié)合,讓芯片的能力真正落地。

最后,留一個(gè)互動(dòng)問(wèn)題:你在做RK3588開(kāi)發(fā)時(shí),遇到過(guò)USB初始化失敗的問(wèn)題嗎?評(píng)論區(qū)聊聊你的排坑經(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)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5198

    文章

    20435

    瀏覽量

    333918
  • 評(píng)估板
    +關(guān)注

    關(guān)注

    1

    文章

    931

    瀏覽量

    31169
  • RK3588
    +關(guān)注

    關(guān)注

    8

    文章

    555

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    瑞芯微RK3588開(kāi)發(fā)RK3588 EVBRK3588S EVB解讀

    瑞芯微RK3588開(kāi)發(fā)RK3588 EVBRK3588S EVB解讀 瑞芯微旗艦芯
    的頭像 發(fā)表于 09-22 15:54 ?2.3w次閱讀
    瑞芯微<b class='flag-5'>RK3588</b>開(kāi)發(fā)<b class='flag-5'>板</b><b class='flag-5'>RK3588</b> <b class='flag-5'>EVB</b>和<b class='flag-5'>RK3588</b>S <b class='flag-5'>EVB</b>解讀

    RK3588 EVB開(kāi)發(fā)原理圖講解【八】 RK3588 power Tree

    GPU負(fù)載高時(shí)自動(dòng)通知RK860-2調(diào)高CPU電壓 RK3588 Power Tree完整版圖太大,截圖看不完,需要的可以下載附件完成版。 RK3588 EVB開(kāi)發(fā)
    發(fā)表于 03-01 11:38

    RK3588 EVB 開(kāi)發(fā)介紹

    行業(yè)AIoT終端設(shè)備。RK3588 EVB功能配置表 2. RK3588S EVB:更輕薄 消費(fèi)級(jí)RK3
    發(fā)表于 03-16 16:39

    RK3588 EVB 用戶使用指南

    本文檔主要介紹 RK3588 EVB 基本功能和硬件特性、多功能硬件配置、軟件調(diào)試操作使用方法,旨在幫助調(diào)試人員更快、更準(zhǔn)確地使用 RK3588 EVB,熟悉
    發(fā)表于 03-16 16:57

    RK3588J和RK3588是什么關(guān)系?

    RK3588J是不是一個(gè)開(kāi)發(fā)的名字,里面的SOC是RK3588?還是RK3588J屬于RK3588的子系列?
    發(fā)表于 03-13 14:22

    RK3588RK3588S之間的區(qū)別是什么

    RK3588類(lèi)似,但是接口較少,主要面向消費(fèi)類(lèi)的產(chǎn)品。 RK3588S的視頻輸入輸出接口,type-c接口,SATA接口,RJ45網(wǎng)口
    發(fā)表于 03-10 19:22 ?3w次閱讀

    【LGA封裝RK3588核心板】基于RK3588,小而強(qiáng)大的ArmSom-W3 CORE BOARD

    Armsom-RK3588 LGA Core board 是一款基于Rockchip RK3588芯片平臺(tái),采用LGA(506pin)封裝設(shè)計(jì)的一款極小尺寸的RK3588核心板。
    的頭像 發(fā)表于 07-03 16:08 ?3242次閱讀
    【LGA封裝<b class='flag-5'>RK3588</b><b class='flag-5'>核心板</b>】基于<b class='flag-5'>RK3588</b>,小而強(qiáng)大的ArmSom-W3 CORE BOARD

    rk3588rk3588s的區(qū)別

    rk3588rk3588s的區(qū)別 Rockchip是一家專業(yè)的半導(dǎo)體公司,成立于2001年,總部位于中國(guó)深圳,主要從事集成電路的設(shè)計(jì)、開(kāi)發(fā)和銷(xiāo)售。他們的熱門(mén)產(chǎn)品RK3588RK3588
    的頭像 發(fā)表于 08-15 16:44 ?2.1w次閱讀

    RK35883588s的區(qū)別

    RK35883588s的區(qū)別 Rockchip RK3588RK3588s是兩種功能強(qiáng)大且廣受歡迎的片上系統(tǒng)(SoC)解決方案,用于一系列設(shè)備,包括智能電視、高性能平板電腦、筆記本
    的頭像 發(fā)表于 08-15 17:03 ?2.9w次閱讀

    極小極輕LGA封裝 |RK3588核心板SOM-3588-LGA現(xiàn)貨發(fā)售!

    SOM-3588-LGA 是一款基于Rockchip RK3588芯片平臺(tái),采用LGA(506pin)封裝設(shè)計(jì)的一款極小尺寸的商規(guī)級(jí)核心板?,F(xiàn)在核心
    的頭像 發(fā)表于 10-23 11:50 ?4791次閱讀
    極小極輕LGA封裝 |<b class='flag-5'>RK3588</b><b class='flag-5'>核心板</b>SOM-<b class='flag-5'>3588</b>-LGA現(xiàn)貨發(fā)售!

    迅為電子RK3588S與RK3588硬件性能區(qū)別及板卡選型

    迅為電子RK3588S與RK3588硬件性能區(qū)別及板卡選型
    的頭像 發(fā)表于 06-25 15:30 ?6281次閱讀
    迅為電子<b class='flag-5'>RK3588</b>S與<b class='flag-5'>RK3588</b>硬件性能區(qū)別及板卡選型

    RK3588!黑神話悟空,啟動(dòng)?-迅為電子RK3588開(kāi)發(fā)

    RK3588!黑神話悟空,啟動(dòng)?-迅為電子RK3588開(kāi)發(fā)
    的頭像 發(fā)表于 08-30 14:13 ?2308次閱讀
    <b class='flag-5'>RK3588</b>!黑神話悟空,啟動(dòng)?-迅為電子<b class='flag-5'>RK3588</b>開(kāi)發(fā)<b class='flag-5'>板</b>

    PET_RK3588_CORE核心板

    一、PET_RK3588_CORE 核心板圖片 二、PET_RK3588_CORE 核心板詳細(xì)參數(shù) 注意:RK3588 引腳大部分是功能復(fù)用
    的頭像 發(fā)表于 01-15 14:12 ?1575次閱讀
    PET_<b class='flag-5'>RK3588</b>_CORE<b class='flag-5'>核心板</b>

    RK3588原理圖

    RK3588開(kāi)發(fā)原理圖文件
    發(fā)表于 02-24 15:57 ?61次下載

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

    RK3588參數(shù)與主要特性 RK3588數(shù)據(jù)手冊(cè)解讀
    的頭像 發(fā)表于 05-19 18:34 ?1.3w次閱讀
    <b class='flag-5'>RK3588</b>參數(shù)與主要特性  <b class='flag-5'>RK3588</b>數(shù)據(jù)手冊(cè)解讀