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

高通有两个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 的简称,不同的软件框架,此分区来自不同的源代码

参考网址:http://blog.csdn.net/lq50714/article/details/7053493

}


高通手机开发过程大揭秘

{

看门狗喂食

参考网址:http://wenku.baidu.com/view/dac78693daef5ef7ba0d3c31.html

}


Qualcomm手机开机全过程大揭密

http://www.ci800.com/news/htmlnew/2007-11/18767.htm

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
高通平台路由器SDK编译是指使用高通平台路由器软件开发工具包(SDK)进行软件编译的过程。 首先,我们需要准备开发环境,包括安装和配置高通平台路由器SDK所需的开发工具和依赖库。这些工具和库可以在高通官方网站上找到,并按照官方提供的安装指南进行安装和配置。 接下来,我们需要获取高通平台路由器SDK的源代码。这可以通过高通官方网站或开发者社区进行下载和获取。一旦获取到源代码,我们将其解压到一个合适的目录中。 然后,我们可以开始编译过程。通常,编译过程可以通过执行一系列的命令来完成。具体的编译命令可以在高通官方文档或SDK的说明文件中找到。 在编译过程中,我们需要配置编译选项和参数。这些选项和参数可以根据实际项目需求进行设置,以确保生成的软件能够在目标设备上正常运行。 编译过程可能需要一定的时间和系统资源,具体取决于项目的规模和复杂度。一旦编译完成,我们将得到一个可执行文件或软件包,可以将其安装到目标路由器上进行测试和部署。 总体来说,高通平台路由器SDK编译是一个相对复杂的过程,需要正确配置开发环境和编译选项,以确保生成的软件能够在高通平台路由器上正常运行。熟悉和掌握这个过程可以帮助开发者更好地进行高通平台路由器软件开发工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值