新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 關于DragonBoard 410c開發板上的Little Kernel介紹

        關于DragonBoard 410c開發板上的Little Kernel介紹

        作者: 時間:2017-10-11 來源:網絡 收藏

        Little Kernel是DragonBoard 410c上的Boot Loader,用于實現硬件初始化、從存儲器件中讀取Linux內核與ramdisk并導入到RAM、為Linux內核設置初始化寄存器與命令行參數并跳轉到Linux內核中進行執行。LK基于www.kernel.org上的開源項目進行開發。

        本文引用地址:http://www.104case.com/article/201710/365539.htm

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

        Little Kernel概述

        Android系統的Boot Loader為Little Kernel

        LK實現如下功能:

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

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

        支持Flashing與恢復操作

        Little Kernel代碼的下載與編譯

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

        從LK的Git網站中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中創建一個build-msm8916文件:

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

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

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

        設備樹的申明

        設備樹是一種描述硬件的數據結構

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

        包含了節點與屬性的簡單樹結構

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

        dts文件的格式支持C與C++風格的注釋

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

        Device Tress Blob(dtb):

        設備樹編譯器將dts文件編譯為能被Linux Kernel所識別的二進制目標dtb文件。

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

        圖 1 DTB文件與內核關系

        設備樹表頭如下所示:

        struct dt_table{

        uint32_t magic;

        uint32_t version;

        uint32_t num_entries;

        };

        設備樹入口如下所示:

        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;

        };

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

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

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

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

        LK在啟動節點使用如下信息來決定,使用哪一個設備樹并傳遞到內核中的設備樹中:

        qcom,msm-id = ;

        qcom,board-id =



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 临安市| 柘城县| 卢湾区| 遂川县| 益阳市| 锡林浩特市| 黑山县| 德阳市| 满洲里市| 彭州市| 永仁县| 荔波县| 塘沽区| 深州市| 隆化县| 柘荣县| 扶余县| 睢宁县| 专栏| 新竹县| 阿克陶县| 德令哈市| 从江县| 许昌市| 营口市| 毕节市| 丹江口市| 林甸县| 文化| 嘉鱼县| 临汾市| 灵山县| 赤城县| 上高县| 酒泉市| 桦甸市| 广东省| 祥云县| 左贡县| 乌苏市| 南宫市|