<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于DragonBoard 410c開(kāi)發(fā)板上的Little Kernel介紹

關(guān)于DragonBoard 410c開(kāi)發(fā)板上的Little Kernel介紹

作者: 時(shí)間:2017-10-11 來(lái)源:網(wǎng)絡(luò ) 收藏

Little Kernel是DragonBoard 410c上的Boot Loader,用于實(shí)現硬件初始化、從存儲器件中讀取Linux內核與ramdisk并導入到RAM、為L(cháng)inux內核設置初始化寄存器與命令行參數并跳轉到Linux內核中進(jìn)行執行。LK基于www.kernel.org上的開(kāi)源項目進(jìn)行開(kāi)發(fā)。

本文引用地址:http://dyxdggzs.com/article/201710/365539.htm

如果需要明白此文章,您需要對設備樹(shù)有基本的了解。設備樹(shù)是用于描述硬件的數據結構。它具備一個(gè)節點(diǎn)的樹(shù),每個(gè)節點(diǎn)都包含了屬性與其他節點(diǎn)。本文僅僅適用于安卓開(kāi)發(fā)者。

Little Kernel概述

Android系統的Boot Loader為L(cháng)ittle Kernel

LK實(shí)現如下功能:

硬件初始化:設置向量表,MMU,緩存,初始化外圍模塊,存儲器件,USB,加密等

從存儲器件中導入boot.img文件

支持Flashing與恢復操作

Little Kernel代碼的下載與編譯

我們可以按照如下步驟下載代碼

從LK的Git網(wǎng)站中clone代碼

git clone git://codeaurora.org/kernel/lk.git

更新代碼: git pull origin或 git fetch orgin

檢查特定版本的分支:git checkout –b

export PATH = $PATH:Path to arm-eabi-*> binaries

export TOOLCHAIN_PREFIX = arm-eabi-

make msm8916 EMMC_BOOT = 1123123

在Little Kernel中創(chuàng )建一個(gè)build-msm8916文件:

其中,文件編譯目標位于/lk/target中

在A(yíng)ndroid 工程中,編譯器位于/prebuild/gcc/linux-x86/arm/arm-toolchain/arm-eabi-4.7/bin/arm-eabi-

此外,build/目標文件中包括了:emmc_appsboot.mbn(映像文件)與LK,其中包括了所有的符號。

設備樹(shù)的申明

設備樹(shù)是一種描述硬件的數據結構

設備樹(shù)源代碼包含如下結構(dts文件):

包含了節點(diǎn)與屬性的簡(jiǎn)單樹(shù)結構

屬性由鍵值對所組成,節點(diǎn)有可能同時(shí)包含子節點(diǎn)與屬性

dts文件的格式支持C與C++風(fēng)格的注釋

對于A(yíng)RM架構來(lái)說(shuō),設備樹(shù)源代碼可以在kernel/arch/arm/boot/dts/qcom文件夾中找到

Device Tress Blob(dtb):

設備樹(shù)編譯器將dts文件編譯為能被Linux Kernel所識別的二進(jìn)制目標dtb文件。

blob以如下的方式在編譯期間被添加到kernel鏡像中。

圖 1 DTB文件與內核關(guān)系

設備樹(shù)表頭如下所示:

struct dt_table{

uint32_t magic;

uint32_t version;

uint32_t num_entries;

};

設備樹(shù)入口如下所示:

struct dt_entry{

uint32_t platform_id; → Platform ID/Chipset ID

uint32_t variant_id; → Hardware variants (MTP, CDP, etc.)

uint32_t board_hw_subtype; → DisTInguishes between subtypes like

pmicvariants, fusion/standalone etc.

uint32_t soc_rev;→ SOC revision

uint32_t pmic_rev[4];→ PMIC revision

uint32_t offset;

uint32_t size;

};

每個(gè)設備的DTS代碼都添加了qcom,msm-id/qcom,board-id/qcom,pmic-id入口,其中:

qcom,msm-id入口定義了MSM芯片集,硬件版本以及可選的制造商

qcom,msm-id入口定義了硬件的參數與子類(lèi)版本

qcom,pmic-id入口定義了支持給定MSM平臺的PMIC芯片

LK在啟動(dòng)節點(diǎn)使用如下信息來(lái)決定,使用哪一個(gè)設備樹(shù)并傳遞到內核中的設備樹(shù)中:

qcom,msm-id = ;

qcom,board-id =



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>