网上找的图,大体差不多,但是有些细节有点奇怪。
上面的图有点小怪,主要是Libraies,Framework,App,这部分感觉应该是Google的。其他的没啥问题。
大概整理一下编译流程吧。
首先是安装环境,一些常规的,主要是Ubuntu,JDK,repo,ARM交叉编译器,Python,Perl,Samba(可选)。稍微特别点的是有LLVM的编译器,Hexagon的工具链。
比较坑的是Perl,Python的版本都有特别的要求,有的地方要用很老很老的版本。。。看来祖传史山没跑了。
代码准备:
来源的部分主要是HLOS,按照高通的文档,是从www.codeaurora.org下载。但是那个网站现在已经挂了。。。
闭源的部分,就是上图中蓝色的部分,要从chipcode.qti.qualcomm.com单独下载。下载下来的命名格式是<PL_Image>-<Version>-<Chipset>。
涉及到的部件主要有HLOS,MPSS(medem),aDSP&cDSP(音频DSP和计算DSP),XBL(Boot build),AOP(音频处理器),TZ(trustzone),WLAN,BTFM(蓝牙),video,WiGig,VENUS,SLPI(传感器),CPE,Secure processor。前面都是开源,从TZ开始后面的都是给bin。
编译的话分成两个部分。
一个是non-HLOS。
这部分高通都提供了py脚本编译,先设置好环境变量(主要是各个编译器位置),然后直接调用即可。生成的东西有aop.mbn,dspso.bin,tz.mbn.verdor.img。貌似很多部分编译出来就是直接对应某个分区,可以使用fastboot flash烧进去。
编译命令和常规的安卓差不多。整体编译是make -j16,单独编译是在根目录m 模块名。进到模块文件夹中,使用mm可以编译里面所有内容。删除是m clean-模块名。说是也可以用make clean。
一个是HLOS。
这部分就是常规编译,envsetup.sh,lunch,make。生成system.img,vendor.img等。