<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/201710/365539.htm

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

          Little Kernel概述

          Android系統(tǒng)的Boot Loader為Little Kernel

          LK實現(xiàn)如下功能:

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

          從存儲器件中導(dǎo)入boot.img文件

          支持Flashing與恢復(fù)操作

          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)建一個build-msm8916文件:

          其中,文件編譯目標(biāo)位于/lk/target中

          在Android 工程中,編譯器位于/prebuild/gcc/linux-x86/arm/arm-toolchain/arm-eabi-4.7/bin/arm-eabi-

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

          設(shè)備樹的申明

          設(shè)備樹是一種描述硬件的數(shù)據(jù)結(jié)構(gòu)

          設(shè)備樹源代碼包含如下結(jié)構(gòu)(dts文件):

          包含了節(jié)點與屬性的簡單樹結(jié)構(gòu)

          屬性由鍵值對所組成,節(jié)點有可能同時包含子節(jié)點與屬性

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

          對于ARM架構(gòu)來說,設(shè)備樹源代碼可以在kernel/arch/arm/boot/dts/qcom文件夾中找到

          Device Tress Blob(dtb):

          設(shè)備樹編譯器將dts文件編譯為能被Linux Kernel所識別的二進制目標(biāo)dtb文件。

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

          圖 1 DTB文件與內(nèi)核關(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;

          };

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

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

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

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

          LK在啟動節(jié)點使用如下信息來決定,使用哪一個設(shè)備樹并傳遞到內(nèi)核中的設(shè)備樹中:

          qcom,msm-id = ;

          qcom,board-id =



          關(guān)鍵詞: DragonBoard410c 開發(fā)板

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();