chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

RK8XX SPI驅(qū)動優(yōu)化:跳過Loader模式3秒長按開機(jī)檢查,提升開發(fā)調(diào)試效率

jf_44130326 ? 來源:Linux1024 ? 作者:Linux1024 ? 2026-04-15 14:58 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在基于瑞芯微Rockchip)平臺的開發(fā)調(diào)試過程中,不少工程師都會遇到一個(gè)棘手的問題:系統(tǒng)進(jìn)入loader模式時(shí),RK8XX SPI驅(qū)動的長按開機(jī)檢查機(jī)制,會導(dǎo)致燒錄或執(zhí)行reboot loader命令時(shí)必須手動長按開機(jī)鍵3秒以上,嚴(yán)重拖慢開發(fā)調(diào)試節(jié)奏。今天我們就深入剖析這個(gè)問題,并給出一套完整的解決方案。

一、問題描述

系統(tǒng)進(jìn)入loader模式時(shí),RK8XX SPI驅(qū)動的rk8xx_spi_probe函數(shù)會執(zhí)行3秒長按開機(jī)檢查邏輯。這一邏輯在正常開機(jī)場景下是必要的,但在開發(fā)調(diào)試場景中(如燒錄固件、執(zhí)行reboot loader命令),手動長按開機(jī)鍵的操作不僅繁瑣,還大幅降低了開發(fā)和調(diào)試效率。

二、問題分析:從代碼到啟動流程

要解決問題,首先要摸清問題的根源,我們從代碼邏輯系統(tǒng)啟動流程兩個(gè)維度展開分析。

1.代碼層面:長按檢查的核心邏輯

查看rk8xx_spi.c文件中rk8xx_spi_probe函數(shù),其包含的關(guān)鍵邏輯如下:

?讀取芯片版本信息;

?配置PWRON按鍵的防抖參數(shù);

?進(jìn)入無限循環(huán),持續(xù)檢測PWRON按鍵狀態(tài);

?檢測到長按(3秒以上):繼續(xù)執(zhí)行驅(qū)動初始化流程;

?檢測到短按或等待超時(shí)(10秒):觸發(fā)關(guān)機(jī)操作。

2.啟動流程層面:Loader模式檢測的關(guān)鍵矛盾

通過分析boot_mode.c文件中的系統(tǒng)啟動流程,我們發(fā)現(xiàn)了核心矛盾點(diǎn):

1.系統(tǒng)啟動時(shí),setup_boot_mode函數(shù)優(yōu)先執(zhí)行;

2.該函數(shù)調(diào)用rockchip_get_boot_mode獲取當(dāng)前啟動模式;

3.若檢測到BOOT_MODE_LOADER模式,setup_boot_mode會執(zhí)行run_command("download", 0),進(jìn)入rockusb模式(阻塞操作);

4.只有當(dāng)rockusb模式結(jié)束后,rk8xx_spi_probe函數(shù)才會執(zhí)行;

5.此時(shí)rockchip_get_boot_mode已清除引導(dǎo)模式寄存器的值,導(dǎo)致rk8xx_spi_probe無法檢測到loader模式,只能執(zhí)行默認(rèn)的長按檢查邏輯。

3.解決方案探索:三種思路的可行性分析

針對上述問題,我們梳理了三種解決方案,并分析其可行性:

方案 核心思路 可行性分析
方案1:直接讀取引導(dǎo)模式寄存器 繞過rockchip_get_boot_mode,直接調(diào)用readl((void *)CONFIG_ROCKCHIP_BOOT_MODE_REG)讀取寄存器 無效。因?yàn)閟etup_boot_mode執(zhí)行后,寄存器值已被清除,讀取結(jié)果無意義
方案2:添加配置選項(xiàng) 新增CONFIG_RK8XX_SKIP_LONG_PRESS_CHECK配置項(xiàng),在rk8xx_spi_probe中檢查該選項(xiàng),按需跳過長按檢查 可行。優(yōu)點(diǎn):通過配置文件靈活控制,適配不同環(huán)境;缺點(diǎn):需修改配置文件(可接受)
方案3:在rockchip_get_boot_mode執(zhí)行前檢測 調(diào)整檢測時(shí)機(jī),在setup_boot_mode執(zhí)行前完成loader模式檢測 不可行。setup_boot_mode本身就在rk8xx_spi_probe之前執(zhí)行,無前置檢測時(shí)機(jī)

綜上,方案2(添加配置選項(xiàng))是兼顧靈活性、兼容性的最優(yōu)解。

三、具體實(shí)現(xiàn):配置選項(xiàng)+模式檢測雙保障

我們基于方案2,實(shí)現(xiàn)了“配置控制+模式檢測”的雙重邏輯,既保證靈活性,又精準(zhǔn)適配loader模式場景。

1.步驟1:添加配置選項(xiàng)定義

在rk8xx_spi.c文件頂部添加配置選項(xiàng)的宏定義,確保未顯式配置時(shí)使用默認(rèn)值:

/* Configuration option to skip long press check */#ifndefCONFIG_RK8XX_SKIP_LONG_PRESS_CHECK#defineCONFIG_RK8XX_SKIP_LONG_PRESS_CHECK 0#endif

2.步驟2:修改rk8xx_spi_probe函數(shù)邏輯

在rk8xx_spi_probe函數(shù)中添加配置選項(xiàng)檢查和loader模式檢測邏輯,跳過長按檢查:

// Skip long press check if configuredif(CONFIG_RK8XX_SKIP_LONG_PRESS_CHECK) {  dev_info(dev,"Skip long press check due to configurationn"); gotocontinue_init;}// 檢查是否為loader模式,如果是則跳過3秒長按檢查intboot_mode = rockchip_get_boot_mode();if(boot_mode == BOOT_MODE_LOADER) {  dev_info(dev,"Loader mode detected, skip long press checkn"); gotocontinue_init;}

3.步驟3:配置啟用方法

在U-Boot配置文件中添加以下配置,即可啟用“跳過長按檢查”功能:

CONFIG_RK8XX_SKIP_LONG_PRESS_CHECK=y

四、技術(shù)細(xì)節(jié):讀懂實(shí)現(xiàn)背后的邏輯

1.引導(dǎo)模式檢測的關(guān)鍵特性

rockchip_get_boot_mode函數(shù)的核心行為:讀取引導(dǎo)模式寄存器后,會立即清除寄存器值。這一設(shè)計(jì)是為了確保引導(dǎo)模式僅生效一次,但也導(dǎo)致setup_boot_mode執(zhí)行后,rk8xx_spi_probe無法檢測到loader模式——這也是我們需要額外通過配置選項(xiàng)兜底的原因。

2.配置選項(xiàng)的核心優(yōu)勢

?環(huán)境適配性:可通過配置文件靈活控制是否跳過長按檢查,適配開發(fā)(啟用)、生產(chǎn)(禁用)等不同場景;

?代碼兼容性:無需大幅修改原有邏輯,僅通過條件判斷實(shí)現(xiàn)功能開關(guān);

?可維護(hù)性:符合U-Boot配置項(xiàng)的設(shè)計(jì)規(guī)范,便于后續(xù)迭代和團(tuán)隊(duì)協(xié)作。

3.實(shí)現(xiàn)的注意事項(xiàng)

?邏輯保留:僅在loader模式/配置啟用時(shí)跳過長按檢查,正常模式下仍保留原有長按邏輯,保證系統(tǒng)安全性;

?日志輸出:添加詳細(xì)的dev_info日志,便于調(diào)試時(shí)定位功能是否生效;

?代碼風(fēng)格:與現(xiàn)有rk8xx_spi.c代碼風(fēng)格保持一致,確保可讀性和可維護(hù)性。

五、總結(jié)

通過添加CONFIG_RK8XX_SKIP_LONG_PRESS_CHECK配置選項(xiàng),我們既實(shí)現(xiàn)了loader模式下跳過長按開機(jī)檢查的核心需求(提升開發(fā)調(diào)試效率),又保留了正常模式下的長按邏輯(保障系統(tǒng)安全)。

該方案的核心優(yōu)勢可總結(jié)為四點(diǎn):

1.靈活性:配置文件控制開關(guān),適配不同使用場景;

2.兼容性:與現(xiàn)有代碼完全兼容,不影響其他功能模塊;

3.可維護(hù)性:代碼風(fēng)格統(tǒng)一,邏輯清晰易理解;

4.可靠性:經(jīng)充分測試,可穩(wěn)定運(yùn)行在各類開發(fā)調(diào)試場景中。

這套優(yōu)化方案既解決了實(shí)際開發(fā)中的痛點(diǎn),又兼顧了代碼的規(guī)范性和系統(tǒng)的安全性,是嵌入式驅(qū)動優(yōu)化中“小改動、大收益”的典型實(shí)踐。

wKgZPGnfN3GAAUQYAADqEGHmxYA022.png

審核編輯 黃宇

聲明:本文內(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

    文章

    1897

    瀏覽量

    102061
  • loader
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    8031
  • 開發(fā)調(diào)試
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    BSP調(diào)試#03:Ethernet(RK3588)

    本合集的是我當(dāng)初調(diào)試 RK3588 平臺時(shí)的 原始筆記 ——只保留了那些踩過坑的問題接口,沒出過問題的內(nèi)容全刪掉了。文章框架如下: 其中,“ 調(diào)試過程 ”章節(jié)可能有點(diǎn)意思(記錄了我踩過的坑),其他
    的頭像 發(fā)表于 04-03 15:53 ?9894次閱讀
    BSP<b class='flag-5'>調(diào)試</b>#03:Ethernet(<b class='flag-5'>RK</b>3588)

    迅為電子RK3568+RK3588開發(fā)板資料煥新升級!多維度優(yōu)化助力開發(fā)效率提升

    迅為電子RK3568+RK3588開發(fā)板資料煥新升級!多維度優(yōu)化助力開發(fā)效率提升
    的頭像 發(fā)表于 03-26 15:06 ?351次閱讀
    迅為電子<b class='flag-5'>RK3568+RK</b>3588<b class='flag-5'>開發(fā)</b>板資料煥新升級!多維度<b class='flag-5'>優(yōu)化</b>助力<b class='flag-5'>開發(fā)</b>者<b class='flag-5'>效率</b><b class='flag-5'>提升</b>

    RK平臺新聲卡添加與驅(qū)動調(diào)試指南

    在瑞芯微(RK)平臺的嵌入式系統(tǒng)開發(fā)中,音頻功能的實(shí)現(xiàn)核心依賴于 Sound Card(聲卡)的正確配置與驅(qū)動調(diào)試
    的頭像 發(fā)表于 02-09 16:42 ?969次閱讀
    <b class='flag-5'>RK</b>平臺新聲卡添加與<b class='flag-5'>驅(qū)動</b><b class='flag-5'>調(diào)試</b>指南

    深入解析RK平臺GPIO驅(qū)動:從原理到調(diào)試,開發(fā)者必看指南

    )平臺上,GPIO 驅(qū)動的實(shí)現(xiàn)直接影響著硬件交互的穩(wěn)定性與效率。本文將帶你深入剖析 RK 平臺 GPIO 驅(qū)動的核心邏輯、使用方法,以及對調(diào)試
    的頭像 發(fā)表于 02-03 15:53 ?1204次閱讀
    深入解析<b class='flag-5'>RK</b>平臺GPIO<b class='flag-5'>驅(qū)動</b>:從原理到<b class='flag-5'>調(diào)試</b>,<b class='flag-5'>開發(fā)</b>者必看指南

    RK3576音頻調(diào)試全紀(jì)錄

    在嵌入式設(shè)備開發(fā)中,音頻調(diào)試往往是“牽一發(fā)而動全身” 的環(huán)節(jié) —— 既需要對齊硬件原理圖的信號定義,又要適配軟件層的 codec 配置、引腳映射和驅(qū)動邏輯。本文基于 RK3576 平臺
    的頭像 發(fā)表于 02-02 17:13 ?1798次閱讀
    <b class='flag-5'>RK</b>3576音頻<b class='flag-5'>調(diào)試</b>全紀(jì)錄

    RK?平臺?SPI?開發(fā)完全指南(驅(qū)動?+?配置?+?測試?+?優(yōu)化

    Linux 平臺 SPI 驅(qū)動已形成完善的開發(fā)體系,支持 Master/Slave 雙模式、多速率適配及靈活配置。本文基于 Rockchip 官方
    的頭像 發(fā)表于 01-30 22:35 ?1110次閱讀
    <b class='flag-5'>RK</b>?平臺?<b class='flag-5'>SPI</b>?<b class='flag-5'>開發(fā)</b>完全指南(<b class='flag-5'>驅(qū)動</b>?+?配置?+?測試?+?<b class='flag-5'>優(yōu)化</b>)

    拒絕卡頓,觸覺智能RK3562核心板成功實(shí)現(xiàn)2級疾速啟動,響應(yīng)快到離譜!

    還在忍受漫長開機(jī)等待?觸覺智能再放大招,繼RK3506方案實(shí)現(xiàn)2內(nèi)疾速啟動后,觸覺智能旗下爆款方案RK3562核心板再放大招,開機(jī)速度飆到
    的頭像 發(fā)表于 01-16 18:00 ?617次閱讀
    拒絕卡頓,觸覺智能<b class='flag-5'>RK</b>3562核心板成功實(shí)現(xiàn)2<b class='flag-5'>秒</b>級疾速啟動,響應(yīng)快到離譜!

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

    ? ? ? 在 RK3588 嵌入式項(xiàng)目中, “ 接口配置不匹配 ” 是高頻踩坑點(diǎn) —— 近期 基于 linux6.1 內(nèi)核 調(diào)試 SPI 閃存 +PCIe3x4 外設(shè) 方案時(shí),就遇到
    的頭像 發(fā)表于 01-08 10:24 ?684次閱讀
    實(shí)戰(zhàn)復(fù)盤:<b class='flag-5'>RK</b>3588 <b class='flag-5'>SPI+PCIe3</b>x4方案啟動修復(fù),從節(jié)點(diǎn)配置到<b class='flag-5'>驅(qū)動</b>適配全解析

    Linux系統(tǒng)冗余設(shè)計(jì)裁剪開機(jī)時(shí)間優(yōu)化

    1、在保留現(xiàn)有功能(RT-Linux實(shí)時(shí)特性、SPI驅(qū)動正常工作、網(wǎng)口通信正常、USB驅(qū)動)的前提下,將Upboard開發(fā)板的Linux系統(tǒng)開機(jī)
    發(fā)表于 12-16 22:17

    快得嚇人!LVGL小于2,Qt小于3開機(jī)體驗(yàn)瞬間提升!

    您是否也曾為設(shè)備開機(jī)慢,而抓狂?啟動要半分鐘甚至更久……,開機(jī)體驗(yàn)差到極點(diǎn)! 咱不頭疼,今天小編給大家?guī)砹巳鹦疚?b class='flag-5'>RK3506的“閃電開機(jī)”方案,不到2
    的頭像 發(fā)表于 12-10 10:01 ?463次閱讀
    快得嚇人!LVGL小于2<b class='flag-5'>秒</b>,Qt小于<b class='flag-5'>3</b><b class='flag-5'>秒</b>,<b class='flag-5'>開機(jī)</b>體驗(yàn)瞬間<b class='flag-5'>提升</b>!

    AT32F4xx SPI使用單工模式通訊

    AT32F4xx SPI使用單工模式通訊 示例目的演示AT32F403Axx SPI使用單工模式通訊,其余系列使用方式與此類似。 注:本示
    發(fā)表于 11-05 13:34

    ElfBoard技術(shù)貼|如何在【RK3588】ELF 2開發(fā)板用戶空間更換開機(jī)Logo

    ,提升開發(fā)調(diào)試效率。一、添加Logo分區(qū)elf@ubuntu:~/work/ELF2-linux-source$videvice/rockchip/.chip
    的頭像 發(fā)表于 10-29 11:12 ?1320次閱讀
    ElfBoard技術(shù)貼|如何在【<b class='flag-5'>RK</b>3588】ELF 2<b class='flag-5'>開發(fā)</b>板用戶空間更換<b class='flag-5'>開機(jī)</b>Logo

    硬件調(diào)試:JLink 驅(qū)動配置與調(diào)試技巧

    調(diào)試器的工作原理、驅(qū)動配置流程、調(diào)試環(huán)境搭建、斷點(diǎn)設(shè)置、寄存器與內(nèi)存調(diào)試調(diào)試日志分析等方面,結(jié)合實(shí)際應(yīng)用案例,旨在為硬件工程師和技術(shù)
    的頭像 發(fā)表于 06-12 23:20 ?1856次閱讀
    硬件<b class='flag-5'>調(diào)試</b>:JLink <b class='flag-5'>驅(qū)動</b>配置與<b class='flag-5'>調(diào)試</b>技巧

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

    瑞芯微(Rockchip)最新發(fā)布的 RK3576 一經(jīng)推出,就吸引了大量原本關(guān)注 RK3588 的開發(fā)者。RK3588 作為旗艦級芯片,性能固然強(qiáng)大,但
    發(fā)表于 05-30 08:46

    基于RK3576開發(fā)板的固件燒錄與更新

    RK3576開發(fā)板上單擊【RESET按鍵】,長按【LOAD按鍵】等待3~4,松開【LOAD按鍵】出現(xiàn)該設(shè)備信息則可以 進(jìn)行固件燒錄
    的頭像 發(fā)表于 04-21 16:54 ?1739次閱讀
    基于<b class='flag-5'>RK</b>3576<b class='flag-5'>開發(fā)</b>板的固件燒錄與更新