高通android智能平台环境搭建_编译流程分析,高通平台环境搭建,编译,系统引导流程分析参考...

高通有两个cpu,他们分别跑不同的系统,应用程序(ap)端是android系统,modem 端是高通自己的系统。

要编译出可供烧写使用的镜像文件需要三部分代码:

1) 获取经过高通打补丁的 android 源代码

2) 获取高通针对不同处理器的 vendor 源代码

3) 获取 modem 源代码

高通的开发板子为例,看如何选择源代码,通过 QPST 连接高通的开发板,我们可以看到他的配置信息

BREW 无线二进制运行时环境.BREW 是一个位于嵌入式芯片操作系统之上的抽象层,它能够提供对一些低级功能、环境变量和子程序的访问功能。

mbn类型文件时最终要烧写到板子上的镜像文件。

modem代码编译结果:

其中 adsp.mbn,amss.mbn,dbl.mbn,osbl.mbn,partition.mbn 位于以下目录:

./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/adsp.mbn

./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/amss.mbn

./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/dbl.mbn

./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/osbl.mbn

./modem-M7630AABBQMAZM1220/AMSS/products/7x30/build/ms/bin/AAABQMAZ/partition.mbn

appsboot.mbn,boot.img,system.img,userdata.img 位于以下目录:

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/appsboot.mbn

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/boot.img

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/system.img.ext3

./eclair-M7630AABBQMLZA1150/out/target/product/msm7630_surf/userdata.img.ext3

要烧录的镜像文件:

烧录的镜像文件appsboothd.mbn  appsboot.mbn boot.img system.img userdata.img persist.img

来自 android 源码appsboot.mbn 的主要功能是装载 linux 内核,通过 linux 的引导来完成 android 系统的加载。

appsboot.mbn的生成过程

make out/target/product/msm7630_surf/appsboot.mbn

make out/target/product/msm7630_surf/nandwrite

make out/target/product/msm7630_surf/emmc_appsboot.mbn

boot.img->kernel+ramdisk

1  kernel:arm/boot/zImage

2  ramdisk:make  out/target/product/msm7630_surf/ramdisk.img showcommands

手动生成 boot.img 需要使用命令 mkbootimg ,语法如下:

mkbootimg --kernel 内核 --ramdisk ramdisk镜像 --cmdline 命令行 --base 基地址 --pagesize 大小 --output 输出的boot.img

appsboot.mbn:目录 bootable/bootloader/lk 下

env.MbnBuilder过程解析:

mbn 类型的文件是我们最终烧写到板子上的镜像文件

在文件: ./AMSS/products/7x30/core/bsp/build/scripts/mbn_builder.py 中有 mbn 文件的编译规则,要注意的是,不同的 modem 源代码版本,它里面的规则有可能不一样

partition规则解析:

eMCC 启动和 NAND 启动的分区格式是不一样的,如果是 eMCC 启动,多了编译选项:

USES_SDCC_BOOT=yes USES_HSU_MS_FD_BOOT=yes

如果 USES_HSU_MS_FD_BOOT=yes

=== Compiling  boot/osbl/fd_storage_scsi.c

=== Compiling  boot/osbl/fd_storage_usb.c

如果 USES_SDCC_BOOT=yes

那么会进行 partition 规则的处理,它会覆盖掉 corebsp_build 规则阶段生成的 partition.mbn

./AMSS/products/7x30/build/ms/dmss_rules.min

partition 规则主要完成以下功能:

1) 编译 ./AMSS/products/7x30/core/storage/tools/jsdcc/partition_load_pt 代码,生成 loadpt 和 msp

2) 解析 loadpt 解析 partition.xml 文件,把分区信息保存成二进制文件 partition.bin

3) 由 partition.bin 文件生成 partition.mbn,然后拷贝到 ./AMSS/products/7x30/build/ms/bin/AAABQMAZ/partition.mbn

高通平台 7630 启动流程分析

1.4 高通平台 7630 启动流程分析

开机后,首先从 rom 中的 pbl 开始执行,pbl 装载 dbl

pbl 是固化在高通芯片中的一段程序,没有相应的源代码。

pbl运行以后,它会装载 dbl,dbl是从其__main 函数开始执行,此函数在汇编文件 dbl.s 中.

经过一系列的初始化,dbl 会把控制权传递给 osbl

osbl 通过 osbl_main_procs 中定义的 osbl_load_appsbl 函数把应用程序的控制权交给了android 系统,modem 端的控制权通过 bl_shared_data.amss_entry_ptr() 交割 AMSS,他们分别在两个处理器上同时运行,两个处理期间通过 smd 进行通信。

obsi{

//初始化 迷你usb 充电硬件

osbl_hw_init

//在 osbl 阶段会提升系统时钟

#ifndef RUMIBUILD

osbl_increase_clk_speed,

#endif

//初始化 osbl 模并且锁住接口

osbl_init_modules,

初始化 flash 设备

osbl_flash_init,

//检测是否通过sd卡更新镜像文件

osbl_sd_image_upgrade,

//初始化数据结构,以便装载 AMSS 镜像

osbl_init_amss_image,

#endif /* FEATURE_FOTA */

//amss 镜像进行授权鉴定

osbl_auth_amss_image,

//如果有 adsp 那么进行相应处理

#ifdef FEATURE_OSBL_LOAD_AND_BOOT_ADSP

//装载 adsp 镜像

osbl_load_adsp,

//授权

osbl_auth_adsp,

#endif

#ifdef FEATURE_SDCC_BOOT

//装载 amss 镜像

osbl_load_amss_image,

#endif

#ifndef FEATURE_STANDALONE_MODEM

//从flash 设备装载 appsboot

osbl_load_appsbl,

//从flash中装载 OS 镜像

* Load the OS image from flash

osbl_load_apps_os,

//引导 aARM 处理器

osbl_boot_aarm,

#endif /* FEATURE_STANDALONE_MODEM */

对于 nand 启动,AMSS 应该在 apps 引导以后再装载

#ifndef FEATURE_SDCC_BOOT

// nand 启动,装载 amss 镜像

osbl_load_amss_image,

#endif

更新到:

{

1.4.5 appsbl 流程(源代码在 android中)

appsbl 是 applications ARM boot loader 的简称,不同的软件框架,此分区来自不同的源代码

}

高通手机开发过程大揭秘

Qualcomm手机开机全过程大揭密

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值