【MTK 6737】Modem编译

之前安卓7.1的编译所使用的是MTK提供的3.18内核,但并未对Modem进行编译和配置。

  • 查看ReleseNote发现需要查看"Build_Configure_Modem_MOLY"这张表,解压MT67xx_(xxx)_MOLY.LR9.W1444.MD.LWTG.MP.Vx.tar.gz到某文件,并在make目录下查看

【MTK 6737】Modem编译_第1张图片

                                                                           图 一

  • 执行的命令则是./make.sh "SM67xx(Lxx_xxx).mak" new,但是这里需要的软件依赖跟编译安卓7.1的不同。需要的arm-none-eabi-gcc则需要编译,复制到tools目录下,并使其具有 可执行权限。包括libexec下的"cc1"。

【MTK 6737】Modem编译_第2张图片

                                                                         图二

  • Linux下Perl的安装(转)http://www.cnblogs.com/huanghongbo/p/6223316.html
  • http://ftp.gnu.org/gnu/make/        GNU make下载 ./Configure ->make->make install 重启终端就可以看到版本了
  • http://ftp.gnu.org/gnu/bash/        SEHELL下载,但是未找到4.1.5的版本,只能以高于推荐版本执行。
  • gcc-arm-none-eabi 需要4.6及以上
  • 本地gcc建议使用4.5~4.9的,5以上不知道跟下面的link问题是否有关

TIP:执行后make " " new后,会遇到一个找不到生成的.elf文件,让你查看link.log的错误,但是里面实际是没有任何输出的。只在网上找到以下的说明。

         Link过程采用了auto memory configuration的代码动态调整机制。调整过程:假如上一次link成功后,工程会保留上一次link的配置文件,以后每次link都会先按照上一次link成功的配置文件来链接。如果第一次link失败,工程并不会报错和停止编译,而是进行auto memory configuration,将代码重新分配到不同的段(不同的段有不同的压缩率,比如ZIMAGE段压缩率是60%,Alice段的压缩率是83%,ROM段没有压缩),以达到ROM空间和RAM空间的使用的平衡。然后根据auto memory configuration调整后的配置进行第二次link, 如果第二次lin成功,表明编译成功,并且保留该配置;如果第二次link失败,这时工程报错并停止编译。

      但是几个log虽然都有异常,但是无从下手。不过在移动文件到其他目录后就编译过了,并且将其移回原目录也编译成功了...

同时需要注意tools/NVRAMStatistic/nvram_auto_gen.mak 下高层次版本问题,16.04自带的5.4.0版本实际是过高的,需要修改

ifeq ($(strip $(OS_VERSION)),MSWin32)
    GCC := "tools/MinGW/bin/gcc.exe"
    LINKER_SCRIPT := tools/NVRAMStatistic/src/nvram_auto_gen_windows.txt
    MV := perl tools/init/move.pl -f
    override PATH := tools/MinGW/bin:${PATH}
        export $(PATH)
else
    GCC := "/usr/bin/gcc"
    LINKER_SCRIPT := tools/NVRAMStatistic/src/nvram_auto_gen_linux.txt
    MV := mv
endif
下载某版本可以用update-alternatives --config gcc进行选择,也可以直接更改GCC := "/%yourpath%/gcc"。

2.执行

perl device/mediatek/build/build/tools/modemRenameCopy.pl [Modem 代码路径] [编译Modem所使用的.mak文件 ]

如 perl *****/modemRenameCopy.pl  ./Moly/  MT67xx_LTG_DSDS

  • 自动为所要复制到alps/vendor/mediatek/proprietary/modem/${modem} 下的文件重命名,并生成一个Android.mk文件,alps/vendor/mediatek/proprietary/该路径下是没有modem这个文件夹的,需要自己创建。
  • 请确保在alps/vendor/mediatek/proprietary/modem/中有一个Android.mk。 你可以从alps/device/mediatek/build/build/tools/modem/modem_Android.mk复制到alps/vendor/mediatek/proprietary/modem/Android.mk

3.在alps/device/${company}/${project}/ProjectConfig.mk找到相应的ProjectConfig.mk,配置CUSTOM_MODEM,保证跟自己创建的目录alps/vendor/mediatek/proprietary/modem/${modem}名称一致。

然后再/alps下重新编译

 

你可能感兴趣的:(work,linux,MTK)