您的位置:首页 > 其它

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

2015-04-17 10:34 2659 查看
1、高通平台android开发总结

1.1 搭建高通平台环境开发环境

在高通开发板上烧录文件系统

建立高通平台开发环境

高通平台,android和 modem 编译流程分析

高通平台 7620 启动流程分析

qcril 流程分析,设置sim卡锁

python scons 语法学习

Python 语言之 scons 工具流程分析:

1.2 搭建高通平台环境开发环境

高通android智能平台概述

选择合适的源代码以及工具

建立 Android 开发环境(部分略)

建立 modem 开发环境

1.2.1 高通android智能平台概述

高通 7230 android 智能手机解决方案的软件包括两个部分

1. 以linux 操作系统为基础的 android 系统

2. 以 L4,REX为基础的 Modem 部分

在高通7系列的架构中,一个IC内部集成有两个ARM处理器,一个ARM9(或者arm11),专门负责处理通信协议,射频以及GPIO等,软件架构采用 AMSS, 另外一个是ARM11,用来处理多媒体,上层应用,以及其他的一些任务,运行的系统是 android系统,这两个处理器之间通过共享内存的硬件方式来进行通信。

1.2.1.1 什么是L4,REX,BREW,AMSS以及相互之间的关系

L4是一组计算机程序,是最初由JochenLiedtke设计的微内核构架的操作系统内核,现在已经形成一个微内核家族。L4这个微内核系统由于其出色的性能和很小的体积而开始被计算机工业所认知,被移植到了许多不同的硬件构架上。高通的 L4 提供了操作系统最基本的操作,是买别人的。

早期的操作系统绝大多数是 Monolithic Kernel, 意思是整个操作系统 - 包括Scheduling (调度), Filesystem (文件系统), Networking (网络), Device driver (设备驱动程序), Memorymanagement (存储管理), Paging(存储页面管理) -都在内核中完成.一直到现在广泛应用的操作系统,如UNIX,Linux,和Windows还大都是monolithickernel操作系统.但随着操作系统变得越来越复杂(现代操作系统的内核有一两百万行C程序是很常见的事情),把所有这些功能都放在内核中使设计难度迅速增加.

微内核是一个与MonolithicKernel相反的设计理念.它的目的是使内核缩到最小,把所有可能的功能模块移出内核.理想情况下,内核中仅留下Address SpaceSupport(地址空间支持),IPC (Inter-ProcessCommunication,进程间通讯),和Scheduling(调度),其他功能模块做为用户进程运行。

REX 是在 L4之上封装的服务,是一个抢占式,多任务的RTOS,所有的任务都以task的形式存在,REX提供包括任务创建,同步,互斥,计时器,中断控制等功能的API,这里的task实际上就是我们的线程,每个 task对应着一个线程。REX维护一个tasklist(双向链表),始终运行高优先级的task。products里面所有的服务包括3g协议栈等都是以task的形式跑在rex之上的。

而Brew的话是运行的环境,跟Java 有点儿类似,相当于是一个虚拟机。

AMSS――高级的移动用户软件(Advanced Mobile SubscriberSoftware)技术,是一种新的软件架构,是对原来软件架构 DMSS 的升级。 AMSS源代码实际上是QC BREW(BinaryRuntime Environment ForWireless)平台的的底层部分,去掉了为应用程序提供接口的AEE(application executionenvironment)部分,高通在Dual Proc芯片上的其他平台基本上都是采用的这样的架构。

参考文档:

微内核操作系统及L4概述
http://wenku.baidu.com/view/90929762caaedd3383c4d311.html
MSM平台上的AMSS
http://blog.csdn.net/yili_xie/archive/2010/01/04/5129469.aspx
1.2.2 选择合适的源代码以及工具

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

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

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

3) 获取 modem 源代码

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

网址:
https://www.codeaurora.org/wiki/QAEP#Branch_Releases https://www.codeaurora.org/xwiki/bin/QAEP/eclair https://www.codeaurora.org/xwiki/bin/QAEP/eclair_caramel https://www.codeaurora.org/xwiki/bin/QAEP/froyo_almond
目前使用的 android 分支:

Android 2.1 版本 eclair

M7630AABBQMLZA1150 msm7630 eclair M7630AABBQMLZA1150.xml2010年02月01日

M7630AABBQMLZA1200 msm7630 eclair M7630AABBQMLZA1200.xml2010年03月30日

M7630AABBQMLZA2010 msm7630 éclair M7630AABBQMLZA2010.xml July 02,2010

M7630AABBQMLZA1240 msm7630 eclair_caramel M7630AABBQMLZA1240.xml2010年05月31日

M7630AABBQMLZA1250 msm7630 eclair_caramel M7630AABBQMLZA1250.xml2010年06月15日

M7630AABBQMLZA1280 msm7630 eclair_caramel M7630AABBQMLZA1280.xml2010年08月03日

M76XXTSNCJNLYA5340 msm7627 eclair_chocolate M76XXTSNCJNLYA5340.xml2010年06月04

Android 2.2 版本 froyo

M7630AABBQMLZA2020 msm7630 froyo M7630AABBQMLZA2020.xml 2010年09月01

M76XXTSNCJNLYA6050 msm7627 froyo_almond M76XXTSNCJNLYA6050.xml2010年10月29日

以下命令获取代码:
https://www.codeaurora.org/xwiki/bin/QAEP/froyo_almond
ac_root=/home/shared/qualcomm

ac_root=/mnt/shared/qualcomm/

ac_date=20101105

ac_branch=froyo_almond

build_id=M76XXTSNCJNLYA6050

ac_xml=M76XXTSNCJNLYA6050.xml

mkdir -pv $ac_root/$ac_branch-$build_id-$ac_date

cd $ac_root/$ac_branch-$build_id-$ac_date

repo init -u git://codeaurora.org/platform/manifest.git -b$ac_branch -m $ac_xml

nohup repo sync&

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

根据选择的 Android 源代码分支不同, vendor 代码的选择也是不一样的,BUILD ID 必须一致

M7630AABBQMLZA1150 对应 HY11-VR881-5.zip

M7630AABBQMLZA1250 对应 HY11-VR881-11.zip

M7630AABBQMLZA2020 对应 HY11-N1627-3.zip AMSS 7X30 LINUX RELEASE2.0.20

M76XXTSNCJNLYA6050 对应 HY11-N1188-6.zip AMSS 7X27 LINUX REL6.0.50

vendor 代码通过有效的高通帐号登录 HYPERLINK 'https://support.cdmatech.com/login/' https://support.cdmatech.com/login/ 网站获取

1.2.2.3 获取 modem 源代码

根据硬件配置情况,选择不同的 BUILD ID, 然后根据 BUILD ID 选择相近的源代码

modem 代码通过有效的高通帐号登录 HYPERLINK 'https://support.cdmatech.com/login/'https://support.cdmatech.com/login/ 网站获取

BUILD ID 是一组字母的组合,如:AAABQOLYM

以下分别对各个字段进行说明:

第三个字母 A 表示 LPDDR2 #USES_LPDDR2=yes

第三个字母 B 表示 LPDDR1

第六个字母 M 表示 Multimode

第六个字母 C 表示 CDMA

第六个字母 D 表示 JCDMA #相对于C多了:USES_UMTS=yesUSES_DSHDR_JCDMA_APIS=yes

第六个字母 O 表示 UMTS only #相对于C多了:USES_UMTS=yesUSES_SUPPORT_UMTS_GPS_PROTOCOLS=yes

#相对于C少了:USES_CDMA=yes USES_HDR=yes USES_REL_C=yesUSES_CDMA2000=yes

#USES_EXPORT_MCCMEID=yes USES_SUPPORT_CDMA_GPS_PROTOCOLS=yes

第7,8个字母为 AZ 表示 NADN boot

第7,8个字母为 LY 表示 eMMC boot #相对于AZ多了选项: USES_SDCC_BOOT=yesUSES_HSU_MS_FD_BOOT=yes

最后一个字母为 M 表示 modem

最后一个字母为 A 表示 app

以上为 7x30 平台的一些规律,具体参考文档,7227 参考相应的 release note:

<<80-VR192-1_E_AMSS_Linux_Software_Users_Manual.pdf>>

第1个字母

第2个字母 F: 基于ffa参考设计 S: 基于surf的参考设计

第3个字母

第4个字母

第5个字母 K /J

K 相对于 J 多了以下选项

USES_HSU_CHG_BOOT=yes

USES_HSU_FAST_CHARGE=yes

USES_CHARGER=yes

USES_EBI1_TURBO_FFA=yes

第6个字母 O/ N / P

O表示只支持 UMTS(WCDMA)

------------------

USES_IPHC=yes

USES_PDCP=yes

USES_SUPPORT_UMTS_GPS_PROTOCOLS=yes

USES_UMTS=yes

-----------------

P表示只支持 CDMA/CDMA2000

USES_CDMA=yes

USES_CDMA2000=yes

USES_REL_C=yes

USES_SUPPORT_CDMA_GPS_PROTOCOLS=yes

USES_EXPORT_MCCMEID=yes

USES_HDR=yes

-----------------

N表示既支持 UMTS(WCDMA) 且支持 CDMA/CDMA2000

第7个字母

第8个字母

surf和ffa的区别

generally speaking surf have FPGA and don't have battery.

and FFA don't have FPGA but have battery.

msm7627_surf and msm7627_ffa and msm7627_7x_surf means differenthardware reference design. please check with your hardware engineeron which qualcommhardware reference you use and then select the right buildcommand.

4.6 Build commands

To create an AMSS build, run the command script with the build IDmatching the build

configuration desired. The command scripts may be executed from thebuild/ms subdirectory or

from the AMSS root directory using the full path to the commandscript as in the following

examples:

./AMSS/products/<asic>/build/ms/MSNCJNLYM.cmd – For SURFmultimode build

./AMSS/products/<asic>/build/ms/MSNCJOLYM.cmd – For SURF UMTSonly build

./AMSS/products/<asic>/build/ms/MSNCJPLYM.cmd – For SURF 1Xonly build

./AMSS/products/<asic>/build/ms/MFNCKNLYM.cmd – For FFAmultimode and for reference only

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

高通 demo 版的配置情况:SURF-MSM7630 7X30A-AAABQMAZM-1200

从配置情况来看只有 HY11-N0216-3_1.2.00 HY11-N0216-4_1.2.20 满足要求

HY11-N0216-3_1.2.00/AMSS/products/7x30/build/ms/AAABQMAZM.cmd

HY11-N0216-4_1.2.20/AMSS/products/7x30/build/ms/AAABQMAZM.cmd

后期我们要跟据实际情况来选择 BUILD ID,如我们的手机的配置情况为:

LPDDR2 ,WCDMA,eMMC 启动(NAND备选),那么modem 的BUILD ID为:

AAABQOLYM 或者 AAABQOAZM

AAABQOLYMHY11-N0723-2_1.2.20/AMSS/products/7x30/build/ms/AAABQOLYM.cmd

AAABQOAZMHY11-N1122-1_1.2.20/AMSS/products/7x30/build/ms/AAABQOAZM.cmd (NABDboot 备选)

高通的Android第一人晓峰不建议我们第一次就用eMMC,而应该用Nand,目前只有HTC在用eMMC。高通在eMMC上面提供了参考代码,但是是未经过验证。终端厂商在使用过程中,一定会有很多问题需要自己解。

补充信息:

现在可能用到 BUILD ID 以及相应的 modem 和 vendor 源代码。

modem代码:

BUILD ID modem 源代码 modem镜像 说明文档

M7630AABBQMAZM1200 HY11-N0216-3.zip HK11-N0216-3.zipHT11-N0216-3.zip

M7630AABBQMAZM1220 HY11-N0216-4.zip HK11-N0216-4.zipHT11-N0216-4.zip

--

M7630AABBQMLYM1200 HY11-N0723-1.zip HK11-N0723-1.zipHT11-N0723-1.zip

M7630AABBQMLYM1220 HY11-N0723-2.zip HK11-N0723-2.zipHT11-N0723-2.zip

--

M7630AAABQCAZM1220 HY11-N1122-1.zip HK11-N1122-1.zipHT11-N1122-1.zip

M7630AAABQCAZM1240 HY11-N1122-2.zip HK11-N1122-2.zipHT11-N1122-2.zip

M7630AAABQCAZM1250 HY11-N1122-3.zip HK11-N1122-3.zipHT11-N1122-3.zip

M7630AAABQCAZM1260 HY11-N1122-4.zip HK11-N1122-4.zipHT11-N1122-4.zip

M7630AAABQCAZM1280 HY11-N1122-5.zip HK11-N1122-5.zipHT11-N1122-5.zip

M7630AAABQCAZM1290 HY11-N1122-6.zip HK11-N1122-6.zipHT11-N1122-6.zip

--

M7630AAABQMAZM1240 HY11-N1496-2.zip HK11-N1496-2.zipHT11-N1496-2.zip

M7630AAABQMAZM1250 HY11-N1496-3.zip HK11-N1496-3.zipHT11-N1496-3.zip

80-N0216-3_B_M7630AABBQMAZM1200.pdf

5.3.2.1 LPDDR1 NAND boot Multimode AABBQMAZM.cmd

5.3.2.2 LPDDR1 eMMC boot Multimode AABBQMLYM.cmd

5.3.2.3 LPDDR1 eMMC boot UMTS only AABBQOLYM.cmd

5.3.2.4 LPDDR1 NAND boot JCDMA AABBQDAZM.cmd

5.3.2.5 LPDDR2 NAND boot Multimode AAABQMAZM.cmd

5.3.2.6 LPDDR2 eMMC boot Multimode AAABQMLYM.cmd

80-N0216-4_A_M7630AABBQMAZM1220.pdf

5.3.2 Build instructions and commands

5.3.2.1 LPDDR1 NAND boot Multimode AABBQMAZM.cmd

5.3.2.2 LPDDR1 eMMC boot Multimode AABBQMLYM.cmd

5.3.2.3 LPDDR1 eMMC boot UMTS only AABBQOLYM.cmd

5.3.2.4 LPDDR1 NAND boot JCDMA AABBQDAZM.cmd

5.3.2.5 LPDDR2 NAND boot Multimode AAABQMAZM.cmd

5.3.2.6 LPDDR2 eMMC boot Multimode AAABQMLYM.cmd

5.3.2.7 LPDDR2 eMMC boot UMTS only AAABQOLYM.cmd

5.3.2.8 LPDDR2 NAND boot C2K Only AAABQCAZM.cmd

5.3.2.9 LPDDR1 eMMC boot C2K Only AABBQCLYM.cmd

5.3.2.10 LPDDR2 NAND boot JCDMA AAABQDAZM.cmd

5.3.2.11 LPDDR2 NAND boot UMTS only AAABQOAZM.cmd

80-N1665-1_B_M7630AAABQ_AZM1240.pdf

5.3.2 Build instructions and commands

5.3.2.1 LPDDR1/LPDDR2 eMMC boot Multimode AABBQMLYM.cmd

5.3.2.2 LPDDR1/LPDDR2 eMMC boot UMTS only AABBQOL
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: