在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

Rockchip rk3588 U-Boot詳解 (二)

jf_30051736 ? 來源:jf_30051736 ? 作者:jf_30051736 ? 2023-06-13 10:49 ? 次閱讀

Rockchip rk3588 U-Boot詳解 (二)

1.1 DM

DM (Driver Model) 是 U-Boot 標(biāo)準(zhǔn)的 device-driver 開發(fā)模型,跟 kernel 的 device-driver 模型?常類似。

v2017版本也遵循 DM 框架開發(fā)各功能模塊。建議讀者先閱讀DM?檔,了解DM架構(gòu)原理和實(shí)現(xiàn)。

README:

/doc/driver-model/README.txt

Terminology
-----------
Uclass - a group of devices which operate in the same way. A uclass provides
a way of accessing individual devices within the group, but always
using the same interface. For example a GPIO uclass provides
operations for get/set value. An I2C uclass may have 10 I2C ports,
4 with one driver, and 6 with another.
Driver - some code which talks to a peripheral and presents a higher-level
interface to it.
Device - an instance of a driver, tied to a particular port or peripheral.

簡要概括:

  • uclass: 設(shè)備驅(qū)動(dòng)模型
  • driver:驅(qū)動(dòng)
  • device:設(shè)備

核心代碼:

./driver/core

1.2 Security

U-Boot在ARM TrustZone的安全體系中屬于Non-Secure World, 無法直接訪問任何安全的資源(如:安全memory、安全otp、efuse...),需要借助trust間接訪問。RK平臺(tái)上U-boot的CPU運(yùn)行模式:

32位平臺(tái):Non-Secure PL2
64位平臺(tái):EL2(Always be Non-Secure)

1.3 Boot-order

RK平臺(tái)根據(jù)前級Loader代碼是否開源,目前有兩套啟動(dòng)方式:

// 前級loader鼻淵
BOOTROM = > ddr bin = > Miniloader = > TRUST = > U-Boot = > KERNEL
// 前級loader開源
BOOTROM = > TPL(Tiny Program Loader) = > SPL(Secondary Program Loader) = > TRUST = > U-Boot = > KERNEL

TPL相當(dāng)于ddr bin,SPL相當(dāng)于miniloader。TPL + SPL 的組合實(shí)現(xiàn)了跟RK閉源ddr.bin+miniloader一致的功能,可相互替換。

1.4 Driver-probe

U-boot雖然引入了device-device開發(fā)模型,但初始化階段不會(huì)像kernel那樣自動(dòng)發(fā)起已注冊device-driver的probe。driver的probe必須由用戶主動(dòng)調(diào)用發(fā)起。接口如下

int uclass_get_device(enum uclass_id id, int index, struct udevice **devp);
int uclass_get_device_by_name(enum uclass_id id, const char *name,
struct udevice **devp);
int uclass_get_device_by_seq(enum uclass_id id, int seq, struct udevice **devp);
int uclass_get_device_by_of_offset(enum uclass_id id, int node, struct udevice
**devp);
int uclass_get_device_by_ofnode(enum uclass_id id, ofnode node, struct udevice
**devp);
int uclass_get_device_by_phandle_id(enum uclass_id id,
int phandle_id, struct udevice **devp);
int uclass_get_device_by_phandle(enum uclass_id id,
struct udevice *parent, struct udevice **devp);
int uclass_get_device_by_driver(enum uclass_id id,
const struct driver *drv, struct udevice **devp);
int uclass_get_device_tail(struct udevice *dev, int ret, struct udevice **devp);
......

上述接口的核心調(diào)用

1.5 Shell

U-Boot的Shell叫CLI(cmdline line interface),即命令行模式,用戶可以根據(jù)自己需求自定義CMD,CMD除了通過Shell調(diào)用,還能通過run_command()和run_command_list()以代碼的形式調(diào)用

int run_command(const char *cmd, int flag)
int run_command_list(const char *cmd, int len, int flag)

1.6 Boot-Command

U-Boot最終通過CONFIG_BOOTCOMMAND定義的啟動(dòng)命令引導(dǎo)kernel。在執(zhí)行CONFIG_BOOTCMD之前還會(huì)執(zhí)行CONFIG_PREBOOT預(yù)啟動(dòng)命令,通常這個(gè)命令定義為空

1.7 TPL/SPL/U-Boot-proper

U-Boot通過使用不同的編譯條件可以用同一套代碼獲取三種不同功能的Loader:TPL/SPL/U-Boot-proper

  • TPL: 運(yùn)行在sram中,負(fù)責(zé)完成ddr初始化;
  • SPL:運(yùn)行在ddr中,負(fù)責(zé)完成系統(tǒng)的lowlevel初始化,后級固件加載(trust.img和uboot.img)
  • U-Boot proper: 運(yùn)行在ddr中,即我們通常所說的 U-Boot,它負(fù)責(zé)引導(dǎo)kernel;

啟動(dòng)流程:

BOOTROM => TPL(ddr bin) => SPL(miniloader) => TRUST => U-BOOT => KERNEL

1.8 Build-Output

U-Boot編譯成功后會(huì)在根目錄下生成一些重要文件(支持TPL/SPL編譯時(shí)才有TPL/SPL的生成文件)

// U-Boot階段
./u-boot.map //MAP表文件
./u-boot.sym //SYMBOL表文件
./u-boot //ELF文件,類同內(nèi)核的vmlinux(重要!)

// SPL階段
./spl/u-boot-spl.map //MAP表文件
./spl/u-boot-spl.sym //SYMBOL表文件
./spl/u-boot-spl // ELF文件,類同內(nèi)核的vmlinux(重要)
./spl/u-boot-spl.dtb //spl自己的dtb文件
./spl/u-boot-spl.bin //可執(zhí)行二進(jìn)制文件,會(huì)被打包成loader用于燒寫

// TPL階段
./tpl/u-boot-tpl.map // MAP表文件
./tpl/u-boot-tpl.sym // SYMBOL表文件
./tpl/u-boot-tpl //ELF文件,類同內(nèi)核的vmlinux(重要!)
./tpl/u-boot-tpl.dtb //tpl自己的dtb文件
./tpl/u-boot-tpl.bin // 可執(zhí)行二進(jìn)制文件,會(huì)被打包成loader用于燒寫

1.9 Environment-Variables

ENV(Environment-Variables)是U-Boot支持的一種全局?jǐn)?shù)據(jù)管理和傳遞方式,原理是構(gòu)建一張HASH映射表,把用戶的數(shù)據(jù)以“鍵值-數(shù)據(jù)”作為表項(xiàng)進(jìn)行管理。

EVN通常用于定義平臺(tái)配置參數(shù):固件加載地址,網(wǎng)絡(luò)配置(ipaddr、serverip)、bootcmd、bootargs等,用戶可以在命令行下使用printenv命令打印出來

  • ??可選擇是否把ENV數(shù)據(jù)保存到本地存儲(chǔ)上
  • ENV數(shù)據(jù)僅限于U-Boot使?,?法直接傳遞給內(nèi)核、內(nèi)核也?法直接解析
  • ??層可以通過U-Boot提供的fw_printenv?具訪問ENV數(shù)據(jù)

RK 平臺(tái)上 ENV 數(shù)據(jù)的存儲(chǔ)地址和?小定義如下(單位:字節(jié)):

if ARCH_ROCKCHIP
config ENV_OFFSET
hex
depends on !ENV_IS_IN_UBI
depends on !ENV_IS_NOWHERE
default 0x3f8000
help
Offset from the start of the device (or partition)
config ENV_SIZE
hex
default 0x8000
help
Size of the environment storage area
endif

審核編輯 黃宇

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

    關(guān)注

    0

    文章

    73

    瀏覽量

    18664
  • RK3588
    +關(guān)注

    關(guān)注

    7

    文章

    346

    瀏覽量

    4597
收藏 人收藏

    評論

    相關(guān)推薦

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀

    瑞芯微RK3588開發(fā)板RK3588 EVB和RK3588S EVB解讀 瑞芯微旗艦芯RK3588系列開發(fā)板受到廣大開發(fā)者伙伴的關(guān)注和問詢。針對相關(guān)的開發(fā)板功能、操作指南等問題,我們一
    的頭像 發(fā)表于 09-22 15:54 ?1.8w次閱讀
    瑞芯微<b class='flag-5'>RK3588</b>開發(fā)板<b class='flag-5'>RK3588</b> EVB和<b class='flag-5'>RK3588</b>S EVB解讀

    Rockchip rk3588 U-Boot詳解(一)

    ,很慶幸,有很多現(xiàn)成的 bootloader 軟件可以使用,比如 U-Boot、vivi、RedBoot 等等,其中以 U-Boot 使用最為廣泛。
    的頭像 發(fā)表于 06-13 09:08 ?4548次閱讀
    <b class='flag-5'>Rockchip</b> <b class='flag-5'>rk3588</b> <b class='flag-5'>U-Boot</b><b class='flag-5'>詳解</b>(一)

    有什么方法可以去修改RK3588默認(rèn)的串口波特率嗎

    通過以下代碼進(jìn)行修改:uboot下的相關(guān)設(shè)置:u-boot/configs/rk3588_defconfigCONFIG_BAUDRATE=1500000kernel下dts的相關(guān)設(shè)置
    發(fā)表于 09-09 17:49

    通過以下代碼修改RK3588的默認(rèn)串口波特率

    通過以下代碼進(jìn)行修改:uboot下的相關(guān)設(shè)置:u-boot/configs/rk3588_defconfigCONFIG_BAUDRATE=1500000kernel下dts的相關(guān)設(shè)置
    發(fā)表于 09-20 16:58

    如何在rk3588j上使用uboot命令行測試pwm驅(qū)動(dòng)呢?

    我想在rk3588j上使用uboot命令行測試pwm驅(qū)動(dòng),在u-boot/cmd/下添加了pwm.c,然后在rk3588_defconfig中添加CONFIG_CMD_PWM=y,在u-boo
    發(fā)表于 01-31 17:28

    Banana Pi BPI-W3 RK3588開發(fā)板基本使用文檔

    auto_run_script.service 以及它的腳本。 一、SDK 開發(fā) 本節(jié)向用戶介紹如何對 RK3588 Linux SDK 進(jìn)行開發(fā),包括 u-boot 開發(fā)、Linux 內(nèi)核開發(fā)、buildroot 根文件系統(tǒng)
    發(fā)表于 11-02 12:33

    fireflyFace-RK3399主板U-Boot模式啟動(dòng)

    RK U-Boot 基于開源的 U-Boot 進(jìn)行開發(fā),工作模式有啟動(dòng)加載模式和下載模式。
    的頭像 發(fā)表于 12-04 08:52 ?4628次閱讀
    fireflyFace-<b class='flag-5'>RK</b>3399主板<b class='flag-5'>U-Boot</b>模式啟動(dòng)

    【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 ?2055次閱讀
    【LGA封裝<b class='flag-5'>RK3588</b>核心板】基于<b class='flag-5'>RK3588</b>,小而強(qiáng)大的ArmSom-W3 CORE BOARD

    rk3588rk3588s的區(qū)別

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

    rk3588rk3399的區(qū)別

    rk3588rk3399的區(qū)別 Rockchip是一家位于中國深圳的芯片設(shè)計(jì)公司,已經(jīng)發(fā)布了一系列的處理器芯片。其中,Rockchip RK358
    的頭像 發(fā)表于 08-15 16:44 ?4079次閱讀

    RK3588RK3066哪個(gè)好?

    RK3588RK3066哪個(gè)好? Rockchip是一家中國的半導(dǎo)體公司,專注于提供高性能低成本的芯片解決方案。在Rockchip的產(chǎn)品線中,RK
    的頭像 發(fā)表于 08-15 16:44 ?1354次閱讀

    RK35883588s的區(qū)別

    RK35883588s的區(qū)別 Rockchip RK3588RK3588s是兩種功能強(qiáng)大且廣受歡迎的片上系統(tǒng)(SoC)解決方案,用于一系
    的頭像 發(fā)表于 08-15 17:03 ?2.5w次閱讀

    rk3588是什么類型的芯片?

    rk3588是什么類型的芯片? RK3588是一款高性能的處理器芯片,屬于Rockchip(瑞芯微電子)推出的第四代芯片產(chǎn)品。作為Rockchip旗下最頂級的處理器芯片,
    的頭像 發(fā)表于 08-15 17:04 ?6568次閱讀

    rk3588參數(shù)詳解 rk3588芯片參數(shù)

    rk3588參數(shù)詳解 rk3588芯片參數(shù) Rockchip官方已經(jīng)推出了全新一代的高端芯片RK3588,作為旗艦芯片,其蘊(yùn)含的高性能與先進(jìn)
    的頭像 發(fā)表于 08-21 17:16 ?3.7w次閱讀

    rk3588是armv8嗎?rk3588硬件資料

    rk3588是armv8嗎?rk3588 硬件資料 RK3588是一款高性能處理器,是Rockchip公司推出的最新芯片。本文將詳細(xì)介紹RK3588
    的頭像 發(fā)表于 08-21 17:32 ?3919次閱讀
    主站蜘蛛池模板: 日本大片免a费观看在线 | 男人扒开美女尿口无遮挡图片 | 亚洲黄色在线网站 | 三级毛片免费观看 | 色偷偷91综合久久噜噜 | 久久鬼| 午夜大片免费完整在线看 | 米奇777四色精品人人爽 | 日本h视频在线 | 亚洲成a人不卡在线观看 | 天天碰夜夜 | 人操人操 | 每日最新avhd101天天看新片 | 日日噜噜噜噜人人爽亚洲精品 | 色综合精品 | 日本三级香港三级三级人!妇久 | 天天操狠狠干 | 97色资源| 中文字幕一区二区三区四区五区 | 超级乱淫片67194免费看 | a级黄视频 | 国产91小视频在线观看 | 欧美色综合高清免费 | 黄网站色视频免费看无下截 | 亚洲国产成人精品久久 | 午夜视频1000部免费看 | 五月天情网 | 免费高清特黄a 大片 | 最新亚洲一区二区三区四区 | 日本与大黑人xxxx | 欧美又黄又嫩大片a级 | 18年大片免费在线观看 | 五月月色开心婷婷久久合 | 伊人久久大香线蕉综合网站 | 啪啪小视频网站 | 午夜三级理论在线观看视频 | 免费伦费一区二区三区四区 | 成人激情站 | 欧美三级一区二区三区 | 手机看片91| 嘿嘿嘿视频在线观看网站 |