IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Mediatek-AOSP与ABS版本区别 -> 正文阅读

[移动开发]Mediatek-AOSP与ABS版本区别

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


前言

	随着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的基本配置方式。
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-05 11:07:57  更:2021-09-05 11:08:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 16:30:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码