高通有两个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手机开机全过程大揭密

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

  1. 高通Android智能平台环境搭建_编译流程分析

    高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...

  2. 高通Android智能平台开发总结

    高通Android智能平台开发总结 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境. 7 1.2 搭建高通平台环境开发环境. 7 1.2.1 高通android智能平台概 ...

  3. 高通5G智能平台概述

    高通5G智能平台概述 高通 android 智能手机解决方案的软件包括两个部分 以linux 操作系统为基础的 android 系统 以 L4,REX为基础的 Modem 部分 在高通系列的架构中,一 ...

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

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  5. 高通Android手机软件开发培训

    为期两天的高通Android手机软件开发培训结束了.这次高通针对QSC7x27/7x25/QSD8x50的基带芯片进行了两天的Android手机软件开发培训.参加人员都是我这样的各个OEM厂商的软件开 ...

  6. 高通Android平台硬件调试之Camera篇

    之前一段时间有幸在高通android平台上调试2款camera sensor,一款是OV的5M YUV sensor,支持jpeg out,同时也支持AF,调试比较比较简单,因为别的项目已经在使用了, ...

  7. 高通Android平台开发

    问题描述:          对于有过开发高通android系统的人来说,获取代码构建开发环境并不是难事,但对于刚刚接触这一块内容的人,如果没有详细的说明很容易走弯路,本文档就是根据本人的实践总结的一 ...

  8. 高通Android平台下关于display部分的几个关键问题

    高通Android平台下关于display部分的几个关键问题 2011-04-07 18:59 From: http://hi.baidu.com/leowenj/blog/item/3fe59f74 ...

  9. 智能座舱更看重「性能冗余」,4家中国供应商领跑高通两代平台

    高通8155,未必是智能座舱的真正王者,但至少在当下,是所有车企可以拿得出手吸引消费者的,为数不多的筹码.而到了明年,5nm的高通第四代座舱平台8295也有机会延续8155的强势地位. 要知道,在国内 ...

最新文章

  1. C# Socket系列三 socket通信的封包和拆包
  2. 阿里限流工具 Sentinel
  3. fibonacci数列前20项_等差数列、等比数列、调和数列等几种常见数列的总结
  4. Android 自定义实现switch开关按钮
  5. 菜鸟学Linux命令:端口查看和操作命令
  6. hdu5751 Eades
  7. 集成activiti-modeler 到 自己的业务系统
  8. 20200707:动态规划专题之不同路径
  9. 看陈广老师c#参考视频总结(第三篇)
  10. Pandas系列(十三)分层索引MultiIndex
  11. ARM嵌入式系统开发指南-设计和优化系统软件(译作连载)
  12. 夜神模拟器android版本修改器,夜神模拟器怎么用 夜神安卓模拟器使用方法大大全...
  13. GPS在ROS中的测试和使用
  14. 关于travis scott的网名_小仙女可爱单纯的网名
  15. 团建活动随感(r11笔记第9天)
  16. [转]基于POI的功能区划分()
  17. iOS - 递归遍历文件夹下的所有文件
  18. 今日头条阅读量怎么刷_今日头条提升头条号阅读量的几大方法
  19. 英语3500词(十)adventure主题(2022.1.22)
  20. Ajax异步数据抓取

热门文章

  1. ​你最喜欢的文本编辑器揭示了你的性格?
  2. gazebo 编辑修改已经保存的模型
  3. 系统平台:礼品单如何有效操作?
  4. Hive数据仓库踏坑(上)
  5. RocksDB的Compaction : Leveled Compaction 和 Universal Compaction
  6. iOS-申请邓白氏编码的超详细流程介绍(2017.06.12)
  7. 程序员与公务员妳选择哪个
  8. python的networkx 算法_Python NetworkX 学习笔记
  9. 一文读懂 Java 字符串相关知识点和常见面试题
  10. 常用存储设备优缺点辨析