色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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 標準的 device-driver 開發模型,跟 kernel 的 device-driver 模型?常類似。

v2017版本也遵循 DM 框架開發各功能模塊。建議讀者先閱讀DM?檔,了解DM架構原理和實現。

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: 設備驅動模型
  • driver:驅動
  • device:設備

核心代碼:

./driver/core

1.2 Security

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

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

1.3 Boot-order

RK平臺根據前級Loader代碼是否開源,目前有兩套啟動方式:

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

TPL相當于ddr bin,SPL相當于miniloader。TPL + SPL 的組合實現了跟RK閉源ddr.bin+miniloader一致的功能,可相互替換。

1.4 Driver-probe

U-boot雖然引入了device-device開發模型,但初始化階段不會像kernel那樣自動發起已注冊device-driver的probe。driver的probe必須由用戶主動調用發起。接口如下

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);
......

上述接口的核心調用

1.5 Shell

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

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定義的啟動命令引導kernel。在執行CONFIG_BOOTCMD之前還會執行CONFIG_PREBOOT預啟動命令,通常這個命令定義為空

1.7 TPL/SPL/U-Boot-proper

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

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

啟動流程:

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

1.8 Build-Output

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

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

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

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

1.9 Environment-Variables

ENV(Environment-Variables)是U-Boot支持的一種全局數據管理和傳遞方式,原理是構建一張HASH映射表,把用戶的數據以“鍵值-數據”作為表項進行管理。

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

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

RK 平臺上 ENV 數據的存儲地址和?小定義如下(單位:字節):

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Rockchip
    +關注

    關注

    0

    文章

    73

    瀏覽量

    18618
  • RK3588
    +關注

    關注

    7

    文章

    342

    瀏覽量

    4487
收藏 人收藏

    評論

    相關推薦

    瑞芯微RK3588開發板RK3588 EVB和RK3588S EVB解讀

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

    Rockchip rk3588 U-Boot詳解(一)

    ,很慶幸,有很多現成的 bootloader 軟件可以使用,比如 U-Boot、vivi、RedBoot 等等,其中以 U-Boot 使用最為廣泛。
    的頭像 發表于 06-13 09:08 ?4455次閱讀
    <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默認的串口波特率嗎

    通過以下代碼進行修改:uboot下的相關設置:u-boot/configs/rk3588_defconfigCONFIG_BAUDRATE=1500000kernel下dts的相關設置
    發表于 09-09 17:49

    通過以下代碼修改RK3588的默認串口波特率

    通過以下代碼進行修改:uboot下的相關設置:u-boot/configs/rk3588_defconfigCONFIG_BAUDRATE=1500000kernel下dts的相關設置
    發表于 09-20 16:58

    如何在rk3588j上使用uboot命令行測試pwm驅動呢?

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

    Banana Pi BPI-W3 RK3588開發板基本使用文檔

    auto_run_script.service 以及它的腳本。 一、SDK 開發 本節向用戶介紹如何對 RK3588 Linux SDK 進行開發,包括 u-boot 開發、Linux 內核開發、buildroot 根文件系統
    發表于 11-02 12:33

    fireflyFace-RK3399主板U-Boot模式啟動

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

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

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

    rk3588rk3588s的區別

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

    rk3588rk3399的區別

    rk3588rk3399的區別 Rockchip是一家位于中國深圳的芯片設計公司,已經發布了一系列的處理器芯片。其中,Rockchip RK358
    的頭像 發表于 08-15 16:44 ?3986次閱讀

    RK3588RK3066哪個好?

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

    RK35883588s的區別

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

    rk3588是什么類型的芯片?

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

    rk3588參數詳解 rk3588芯片參數

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

    rk3588是armv8嗎?rk3588硬件資料

    rk3588是armv8嗎?rk3588 硬件資料 RK3588是一款高性能處理器,是Rockchip公司推出的最新芯片。本文將詳細介紹RK3588
    的頭像 發表于 08-21 17:32 ?3850次閱讀
    主站蜘蛛池模板: 一二三四在线观看韩国 | 97在线观看成人免费视频 | 久久re6热在线视频精品66 | 一个人在线观看免费中文www | 日本中文字幕伊人成中文字幕 | 国产精品 日韩精品 欧美 | 伦理电影2499伦理片 | 2018三级网站免费观看 | 色多多深夜福利免费观看 | 亚洲精品无码久久久久A片空 | 色婷婷综合久久久久中文一区二区 | 色综合伊人色综合网站 | 国产电影一区二区三区 | 精油按摩日本 | 天天狠狠色噜噜 | 精品无码久久久久久动漫 | 丫鬟粗大狠狠贯穿h | 东北成人社区 | 善良的小峓子2在钱中文版女主角 | 高hnp肉文| 秋霞电影网伦大理电影在线观看 | 欧美日韩中文字幕综合图区 | 年轻的老师5理伦片 | 国内精品一级毛片免费看 | 国产中的精品AV一区二区 | 亚洲AV无码乱码国产麻豆P | 久久天天躁狠狠躁夜夜呲 | 中文字幕一区二区三区在线观看 | 国产精品久久婷婷五月色 | 亚洲熟女乱色一区二区三区 | 侮辱丰满美丽的人妻 | 国产精品久久久久久免费播放 | 亚洲精品蜜夜内射 | 大陆老熟女60岁 | 日本亚洲精品无码区国产电影 | 色噜噜狠狠色综合欧洲 | 蜜桃传媒星空传媒在线播放 | 成人片免费看 | 快播电影频道 | 胸大美女又黄的网站 | 日韩欧美国产免费看清风阁 |