Mediatek-AOSP与ABS版本区别

13 篇文章 4 订阅
8 篇文章 0 订阅

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

	随着MTK代码的不断迭代,代码构架在配置方式上有了许多的变化。

这里主要介绍:
1.MTK ABS & AOSP 的对比
2.Preloader的配置
3.LK的配置
3.Kernel的配置


提示:以下是本篇文章正文内容,下面案例可供参考

一、MTK ABS & AOSP 的对比

在这里插入图片描述

                ABS架构                                 AOSP架构

差异性ABSAOSP
构架差异ABS架构中各个部分的耦合性很高。AOSP架构各个部分界限划分明确,耦合性低
文件路径ABS架构文件管理比较集中AOSP架构都是各个部分(层次)分开管理
配置方式ABS架构是全局集中式配置AOSP架构是分布式配置的。各个层次单独配置

因MTK后续开发是AOSP架构,依次后面介绍只有AOSP相关

二、配置方式

1.preloader配置

代码路径:vendor/mediatek/proprietary/bootable/bootloader/preloader/
客制化文件路径:vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/${PROJECT}

${PROJECT}.mk 	-- 默认的配置文件
cust_bldr.mak	-- 客制化配置文件
inc/custom_MemoryDevice.h  --Memory配置文件

custom_MemoryDevice.h配置文件需要根据对应平台的 MemoryDeviceList_MTxxxx.xls里面也有的内容进行配置
路径:vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/MTxxxx/MemoryDeviceList_MTxxxx.xls

后续很多开发公司为了方便开发编辑,大多数公司将配置文件放到了:
device/mediateksample/project/**/${PROJECT}_pl.mk
device/mediateksample/project/**/custom_MemoryDevice.h
通过编译脚本将配置文件覆盖到客制化文件路径!

编译命令: 

> make -j24 pl

vendor/mediatek/proprietary/bootable/bootloader/preloader/tools/emigen/emigen.mk
会将MemoryDeviceList_MTxxxx.xls编译成文本形式。
编译生成路径:
out/target/product/${PROJECET}/obj/PRELOADER_OBJ/inc/custom_emi.h

PL层 UART LOG端口配置

路径:  
vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/${PROJECT}/cust_bldr.mak
CFG_UART_LOG := UART1   #配置端口
CFG_LOG_BAURATE := 921600  #配置波特率

PL层配置电池检测

vendor/mediatek/proprietary/bootable/bootloader/preloader/custom/${PROJECT}/${PROJECT}.mk

MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION=no #默认开启电池检测 设置为yes为关闭电源检测

> PS:电池检测分preloader/lk/kernel层次分别控制。控制宏名一致。此操作适用于无电池项目以及电源调试阶段!

编译指令:

1.利用PL编译脚本编译(编译速度快)

$ cd vendor/mediatek/proprietary/bootable/bootloader/preloader
$ export TARGET_PRODUCT=${PROJECT}
$ ./build.sh 2>&1 |tee pl.log

bin生成路径: 	
	out/target/product/${PROJECT}/obj/PRELOADER_OBJ/bin/preloader_${PROJECT}_LINKED.bin

2.将pl当作android module来编译(编译速度慢)

$ make -j24 pl 2 > &1 |tee out/pl.log
bin生成路径:
	out/target/product/${PROJECT}/preloader_${PROJECT}.bin

PS:以上操作都在 source build/envsetup.sh; lunch ${PROJECT}后操作

2.LK配置

代码路径:vendor/mediatek/proprietary/bootable/bootloader/lk/
客制化路径:vendor/mediatek/proprietary/bootable/bootloader/lk/target/${PROJECT} //主要是一些编译选项控制。
客制化driver文件路径:vendor/mediatek/proprietary/bootable/bootloader/lk/dev/ //LK层的驱动代码存放路径
客制化项目配置路径:vendor/mediatek/proprietary/bootable/bootloader/lk/project/${PROJECT} .mk

后续很多开发公司为了方便开发编辑,大多数公司将配置文件放到了:
device/mediateksample/project/**/${PROJECT}_lk.mk

修改开机Logo

 vendor/mediatek/proprietary/bootable/bootloader/lk/project/${PROJECT}.mk
	 BOOT_LOGO =wuxganl #修改对应分辨率的logo配置值为对应logo的文件夹名

> PS:device/mediateksample/${PROJECT} /ProjectConfig.mk  内的BOOT_LOGO要设置成一致

 logo存放目录:
	 vendor/mediatek/proprietary/bootable/bootloader/lk/dev/logo/	 

PS:编译lk的同时会编译出 logo.bin & lk.bin
logo.bin包涵lk以及kernel的logo

修改LK阶段的LCM
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/rules.mk //编译控制文件对应控制编译对应的LCM driver源文件
vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c //编译控制调用对应的LCM driver


配置文件:vendor/mediatek/proprietary/bootable/bootloader/lk/project/${PROJECT}.mk

lcm driver路径:vendor/mediatek/proprietary/bootable/bootloader/lk/dev/lcm/

CUSTOM_LK_LCM="xxxxxx"   #配置值根据lcm driver路径内的文件夹名,可以配置多个LCM driver 以空格隔开

PS:Kernel层的LCM driver 需要另外配置。

修改LK阶段的背光
vendor/mediatek/proprietary/bootable/bootloader/lk/target/${PROJECT}/cust_leds.c

 25 static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
 26     {"red",               MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 27     {"green",             MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 28     {"blue",              MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 29     {"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 30     {"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 31     {"button-backlight",  MT65XX_LED_MODE_NONE, -1,{0,0,0,0,0}},
 32     {"lcd-backlight",     MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
 33 }

> PS:修改"lcd-backlight" 中的配置即可
> Kernel层的背光设置需要单独设置

编译指令:

1.利用lk编译脚本编译(编译速度快)

$ cd vendor/mediatek/proprietary/bootable/bootloader/lk/
$ make -j24  ${PROJECT} 2 > &1 |tee lk.log

生成路径:out/target/product/${PROJECT}/obj/BOOTLOADER_OBJ/build-${PROJECT}/

2.将lk当作Android module来编译(编译速度慢)

$ make -j24 lk 2 > &1 |tee out/lk.log
bin生成路径:
	out/target/product/${PROJECT}/lk.img
	out/target/product/${PROJECT}/logo.bin

PS:以上操作都在 source build/envsetup.sh; lunch ${PROJECT}后操作

3.Kernel配置

代码路径:kernel-4.9/ #不同平台kernel版本有差
配置文件路径:kernel-4.9/arch/arm64/configs/${PROJECT}_defconfig     #user/userdebug版本配置
        kernel-4.9/arch/arm64/configs/${PROJECT}_debug_defconfig    #ENG版本配置

PS: 后续很多开发公司为了方便开发编辑,大多数公司将配置文件放到了:
device/mediateksample/project/**/${PROJECT}_defconfig

MTK Driver路径:kernel-4.9/drivers/*/mediatek/     # *的取值可以为SPI / input/ power/ 等
          kernel-4.9/drivers/misc/mediatek/  #存放LCM、Sensor、Camera、USB等


直接修改defconfig文件:   编辑方便直接,会出现依赖项问题

利用 menconfig(make menuconfig):   自动处理依赖性。编辑麻烦。只能修改kernel目录下的.config。

$ cd kernel-4.9
$ mkdir out
$ make O=out ${PROJECT}_defconfig
$ make O=out menuconfig
修改后需要保存则:
cp out/.config  arch/arm64/configs/${PROJECT}_defconfig

PS:因开发方便非必要的情况下基本都是使用直接修改${PROJECT}_defconfig来配置

配置LCM
LCM driver路径:kernel-4.9/drivers/misc/mediatek/lcm/
kernel-4.9/arch/arm64/configs/${PROJECT}_defconfig

CONFIG_CUSTOM_KERNEL_LCM="xxxx"   #配置LCM driver 可以配置多个以空格隔开
CONFIG_LCM_HEIGHT="1920"		  #配置LCM的宽高
CONFIG_LCM_WIDTH="1200"

Kernel层配置电池检测
kernel-4.9/arch/arm64/configs/${PROJECT}_defconfig

CONFIG_MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION=y	# 设置y即关闭电池检测

编译指令:

1.Kernel标准编译(编译速度快)

$ cd kernel-4.9 
$ mkdir out && make O=out ${PROJECT}_defconfig
$ make -j24 -k O=out zimage modules  |tee kernel.log

生成路径:out/target/product/ ${PROJECT}/boot.bin

2.将kernel当作Android module来编译(编译速度慢)

make -j24 kernel 2 > &1 |tee out/kernel.log
生成路径:out/target/product/ ${PROJECT}/boot.bin

总结

以上就是今天要讲的内容,本文仅仅简单介绍了ABS 与 AOSP的区别以及AOSP的基本配置方式。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Healer_S

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值