欢迎来到天天文库
浏览记录
ID:27850995
大小:25.50 KB
页数:4页
时间:2018-12-06
《关于DragonBoard 410c开发板上的Little Kernel介绍.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、关于DragonBoard410c开发板上的LittleKernel介绍 LittleKernel是DragonBoard410c上的BootLoader,用于实现硬件初始化、从存储器件中读取Linux内核与ramdisk并导入到RAM、为Linux内核设置初始化寄存器与命令行参数并跳转到Linux内核中进行执行。LK基于www.kernel.org上的开源项目进行开发。 如果需要明白此文章,您需要对设备树有基本的了解。设备树是用于描述硬件的数据结构。它具备一个节点的树,每个节点都包含了属性与其他节点
2、。本文仅仅适用于安卓开发者。 LittleKernel概述 Android系统的BootLoader为LittleKernel LK实现如下功能: 硬件初始化:设置向量表,MMU,缓存,初始化外围模块,存储器件,USB,加密等 从存储器件中导入boot.img文件 支持Flashing与恢复操作 LittleKernel代码的下载与编译 我们可以按照如下步骤下载代码 从LK的Git网站中clone代码 gitclonegit://codeaurora.org/kernel/lk.git
3、 更新代码:gitpullorigin或gitfetchorgin 检查特定版本的分支:gitcheckout–b exportPATH=$PATH:binaries exportTOOLCHAIN_PREFIX=arm-eabi- makemsm8916EMMC_BOOT=1123123 在LittleKernel中创建一个build-msm8916文件: 其中,文件编译目标位于/lk/target中 在Android工程中,编译器位于/prebuild/gcc/linux-x86/ar
4、m/arm-toolchain/arm-eabi-4.7/bin/arm-eabi- 此外,build/目标文件中包括了:emmc_appsboot.mbn(映像文件)与LK,其中包括了所有的符号。 设备树的申明 设备树是一种描述硬件的数据结构 设备树源代码包含如下结构(dts文件): 包含了节点与属性的简单树结构 属性由键值对所组成,节点有可能同时包含子节点与属性 dts文件的格式支持C与C++风格的注释 对于ARM架构来说,设备树源代码可以在kernel/arch/arm/boot/d
5、ts/qcom文件夹中找到 DeviceTressBlob(dtb): 设备树编译器将dts文件编译为能被LinuxKernel所识别的二进制目标dtb文件。 blob以如下的方式在编译期间被添加到kernel镜像中。 图1DTB文件与内核关系 设备树表头如下所示: structdt_table{ uint32_tmagic; uint32_tversion; uint32_tnum_entries; }; 设备树入口如下所示: structdt_entry{ uint32_tp
6、latform_id;→PlatformID/ChipsetID uint32_tvariant_id;→Hardwarevariants(MTP,CDP,etc.) uint32_tboard_hw_subtype;→DisTInguishesbetweensubtypeslike pmicvariants,fusion/standaloneetc. uint32_tsoc_rev;→SOCrevision uint32_tpmic_rev[4];→PMICrevision uint32_t
7、offset; uint32_tsize; }; 每个设备的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-i
8、d=
此文档下载收益归作者所有