AI手机网,大数据营销平台,群控软件

 找回密码
 立即注册
搜索
查看: 113|回复: 4

MTK Android 5.0以上版本的变化-mtk芯片手机 5.0以上系统变化方案

[复制链接]

464

主题

552

帖子

3347

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3347
发表于 2018-1-31 10:35:55 | 显示全部楼层 |阅读模式

基于MT6752/32平台 Android L版本驱动移植步骤

              根据MK官网所述,在Android L 版本上Turnkey ABS 架构将会phase out,而Mediatek Turnkey架构将会全面转向Turnkey AOSP架构。本博文将会大致描述下如何将ABS架构下KK版本的驱动如何移植到AOSP架构的android L版本上。

1.1 Turnkey ABS与AOSP简介

      Turnkey ABS架构是MTK设计的架构,深度客制化的编译系统,统一的配置文件和全局配置。mediatek将改动部分集中管理。而Turnkey AOSP架构采用Google标准架构(Android Open Source Project),将preloader、lk、kernel、android独立维护和配置,在标准AOSP架构上做了客制化,并且采用分开维护的方式。两者的差别大致可以用下图表示:


  由于Turnkey ABS架构是MTK深度客制化的系统,与google标准AOSP相聚甚远,不符合标准的AOSP精神;且各个部分相互引用,耦合性比较高,无法独立编译和维护,内部开发周期较长;同时kernel部分并非独立维护的,而是分散在codebase的多个目录,不易将kernel部分开源出去,开源领域大部分的应用都是针对标准AOSP开发的,不容易整合。而Turnkey AOSP依然是Turnkey,但保留了MTK得各个Feature,各个模块独立维护和编译。相对ABS架构而言,AOSP架构的主要变化如下:Android采用标准AOSP编译方式,kernel编译方式保持与原生一致;preloader、lk独立编译,文件路径各模块完全分开,mtk改动的分别嵌入到各个部分;大部分driver架构都没变,以前的driver依旧可用,kernel部分逐渐进行标准化,采用标准api等等...

  MTK官网上有关于新架构的相关介绍资料以及基于mt6572/6582的driver all in one。而在Android L版本上有相当一部分文件的放置路径有很大变化。但是,从移植的过程中来看,各个模块需要配置的文件基本没变,只是嵌入到新的目录中去了,这个只需要我们用grep和find命令找出其所在的位置即可,另外,新的架构的一些配置需要使用menuconfig来操作以及进行一些compile的控制,也就是makefile的编写。在一些配置不是很了解的情况下,最好的办法就是参考系统自带的同类driver的配置方法。


2 Turnkey  AOSP上driver的配置

   2.1 Flash配置

      2.1.1 相关配置文件路径

         Xls表格里面找到相应的Flash型号:

              Xls路径:alps/bootable/bootloader/preloader/tools/emigen/{platform}/MemoryDeviceList_{platform}.xls

        custom_MemoryDevice.h文件修改为所使用的flash型号:        

             路径:alps/bootable/bootloader/preloader/custom/${project} /inc/custom_MemoryDevice.h

     2.1.2 Dct配置

        Dct tools路径:alps/bootable/bootloader/preloader/tools/dct/Drvgen.exe

       Codegen.dws路径: alps/bootable/bootloader/preloader/custom/${project}/dct/dct/codegen.dws

     2.1.3  Uart Log 输出控制

        路径:alps/bootable/bootloader/preloader/custom/${project}/cust_bldr.mk

     2.1.4 编译命令

       cd bootable/bootloader/preloader

       TARGET_PRODUCT = $project ./build.sh 2>&1 | tee pl_build.log     注:project可以通过:get_build_var TARGET_DEVICE获得。

       生成的bin文件位于bootable/bootloader/preloader/bin目录下,并不会生成在out目录下。

       也可以使用下面的命令:

        make -j12 pl 2>&1 | tee pl_build.log

        其生成的bin文件会在out目录下。

     3 LCM配置

        3.1 LK部分相关文件目录

            3.1.1 驱动文件路径:alps/bootable/bootloader/lk/dev/lcm/${lcm_driver_name}/xx.c

             3.1.2 修改同目录内的makefile加入:

                 obj-y += lcm_driver_name.o

              3.1.3 修改mt65xx_lcm_list.c文件,添加所用的lcm信息:

                     路径:Alps/bootable/bootloader/lk/dev/lcm/mt65xx_lcm_list.c

               Ex.  1:extern LCM_DRIVER xx_lcm_drv;

                       2:#ifdefined(xx)

                               &xx_lcm_drv,

                             #endif

              3.1.4 配置lk中的lcm driver

                     路径:Alps/bootable/bootloader/lk/project/${project}.mk

                          Ex.

                                CONFIG_CUSTOM_LK_LCM="xx"

               3.1.5 lk 中dws配置

                   1:codegen.dwspath:alps/bootable/bootloader/lk/target/${proj}/dct/dct/codegen.dws

                    2:  tools path:alps/bootable/bootloader/lk/scripts/dct/grvgen.exe

                3.1.6修改开机logo

                   1:开机logo资源文件:

                           路径:alps/bootable/bootloader/lk/dev/logo/${项目对应的分辨率图片}

                    2:Alps/bootable/bootloader/lk/project/${project}.mk修改logo:

                                      BOOT_LOGO := xx

                3.1.7 背光配置

                     客制化文件路径:alps/bootable/bootloader/lk/target/${project}/cust_leds.c

                 3.1.8 lk阶段编译命令

                       make –j12 lk 2>&1 | tee lk_build.log

                     lk.bin和logo.bin生成路径:out/target/product/${project}

              3.2 kernel中lcm配置

                 3.2.1加入驱动文件:alps/kernel-xx/drivers/misc/mediatek/lcm/${lcm_driver_name}

                 3.2.2 修改同目录下makefile文件:

                              obj-y += lcm_driver_name .o

                  3.2.3 修改mt65xx_lcm_list.c

                    路径:alps/kernel-xx/drivers/misc/mediatek/lcm/mt65xx_lcm_list.c  

                         Ex:

                              1: extern LCM_DRIVER xx_lcm_drv;        

                              2: #if defined(xx)      

                                          &xx_lcm_drv,

                                     #endif

                    3.2.4 背光配置

                       path:alps/kernel-xx/drivers/misc/mediatek/mach/${platform}/${project}/leds/mt65xx/cust_leds.c

                     3.2.5 Dct 配置

                             Toolspath: alps/kernel-xx/tools/dct/drvgen.exe

                              Codegen.dwspath:alps/kernel-xx/drivers/misc/mediatek/mach/${platform}/${project}/dct/dct/codegen.dws

                       3.2.6 编译步骤(通过menuconfig配置):

                             cd  kernel-xx

                             mkdir out

                             make O=out${project}_debug_defconfig

                             make O=out menuconfig

                         接下来的配置需要到menuconfig中完成:

                             1路径:Device Driver ->Misc Devices->Mediatek Properitary Configgurations ->CUSTOM_KERNEL_LCM   此变量配置为我们所需要的lcm driver的名字

                              2 修改目录下面的LCM_HEIGHT和LCM_WIDTH为屏的实际分辨率。
                         复制kernel-xx/out/.config文件到alps/kernel-xx/arch/arm64/configs/${project}_debug_defconfig
                    编译命令:

                       在根目录下运行:make –j12 kernel bootimage

    4 Touch Panel配置

          4.1.1驱动及头文件路径:

                Driver Path:alps/kernel-xx/drivers/input/touchscreen/mediatek/gt9xx/*.c 此目录下makefile需指定头文件的位置

                头文件路径:alps/kernel-xx/drivers/misc/mediatek/mach/${platform}/${project}/touchpanel/gt9xx/*

          4.1.2 kernel dws配置同上。

           4.1.3makefile和kconfig配置

                Path:alps/kernel-xx/drivers/input/touchscreen/mediatek/Makefile

                  Ex.

                     ifeq ($(CONFIG_MTK_GT9XX),y)

                            obj-y      +=  GT9XX/

                      endif

                 path:alps/kernel-xx/drivers/input/touchscreen/kconfig/

                    ex.

                       config MTK_GT9XX

                            bool "GT9XX for Mediatekpackage"

                       default n

           4.1.4 menuconfig配置

                1:  cd  kernel-xx

                     mkdir out

                     make O=out${project}_debug_defconfig

                     make O=out menuconfig


               2:menuconfig配置path:Device Driver->Inputdevice support->Touchscreens勾选相应的touch driver。

          4.1.5 编译

              编译kernel以及bootimage

                  在根目录下运行: make –j12 kernel bootimage

        5  Camera配置

                 5.1.1  kernel driver添加

                   Path:alps/kernel-xx/drivers/misc/mediatek/imgsensor/src/mt6752/<camera_driver_name>,同时需要更改同目录下makefile文件

                5.1.2 kernel中添加设备

                      Path:alps/kernel-xx/drivers/misc/mediatek/imgsensor/src/${plat}/kd_sensorlist.h

                 5.1.3 Hal中添加设备

                    Path:alps/vendor/mediatek/proprietary/custom/${plat}/hal/imgsensor/<camera_hal_name>

                 5.1.4 修改sensorlist.cpp

                     Path:alps/vendor/mediatek/proprietary/custom/${plat}/hal/imgsensor_src/sensorlist.cpp

                  5.1.5 添加设备id

                      path:alps/kernel-xx/drivers/misc/mediatek/imgsensor/inc/kd_imgsensor.h

                   5.1.6 配置上电文件

                         path:alps/kernel-x/drivers/misc/mediatek/mach/${plat}/${proj}/camera/camera/kd_camera_hw.c

                  5.1.7 menuconfig配置:

                          Pathevice Driver->Misc devices->Mediatek PropeiataryConfiguration中配置为所使用的camera,并将相应的.config文件拷贝为${proj}_debug_defconfig.

                   5.1.8  ProjectConfig.mk配置:

                          Path:alps/device/${comp}/${proj}/ProjectConfig.mk

                                  CUSTOM_HAL_IMGSENSOR = s5k3h7yx_mipi_raw ov5648_mipi_raw

                                  CUSTOM_HAL_MAIN_IMGSENSOR= s5k3h7yx_mipi_raw

                                  CUSTOM_KERNEL_IMGSENSOR = s5k3h7yx_mipi_rawov5648_mipi_raw

                                  CUSTOM_KERNEL_MAIN_IMGSENSOR= s5k3h7yx_mipi_raw

                                  CUSTOM_HAL_SUB_IMGSENSOR =ov5648_mipi_raw

                                  CUSTOM_KERNEL_SUB_IMGSENSOR = ov5648_mipi_raw

                   5.1.9 编译

                          make -j12 2>&1 | tee build.log

          6 AF 配置

              6.1.1 添加AF Driver文件

                  Path:alps/kernel-xx/drivers/misc/mediatek/lens/${platform}/<af_driver_name>/<af_driver_name>.c,同时修改同目录下makefile文件。

               6.1.2 头文件

                  path:alps/vendor/mediatek/proprietary/custom/${plat}/kernel/lens/inc/<af_driver>.h

             6.1.3 AF Hal层文件

                   Path:alps/vendor/mediatek/proprietary/custom/${plat}/hal/lens/<lens_floder>/<len_para>.cpp

                  Id定义 Path:alps/vendor/mediatek/proprietary/custom/${plat}/hal/inc/camera_custom_lens.h

             6.1.4 修改 lenslist.cpp        

                 Path:alps/vendor/mediatek/proprietary/custom/${plat}/hal/lens/src/lenslist.cpp

             6.1.5 修改设备权限

                  Path:alps/device/${vendor}/${project}/init.project.rc   

                      Ex:

                           chmod 0660/dev/BU6429AF

                           chown systemcamera /dev/BU6429AF

             6.1.6 menuconfig中配置上所选af

        7 Flashlight  配置   

               7.1.1  Driver Path:alps/kernel-xx/drivers/misc/mediatek/flashlight/src/${plat}/constant_flashlight/leds_strobe.c

               7.1.2  ProjetConfig.mk修改

                       Path:alps/mediatek/config/${proj}/ProjectConfig.mk

                                     CUSTOM_KERNEL_FLASHLIGHT=constant_flashlight

                                     CUSTOM_HAL_FLASHLIGHT=dummy_flashlight


       8 Sendor配置,以距离(光感)感应为例:

            8.1.1 Driver相关

               头文件 path:alps/kernel-xx/drivers/misc/mediatek/mach/${plat}/${proj}/alsps/xxx/*,需修改makefile控制编译。

                driver path:alps/kernel-xx/drivers/misc/mediatek/alsps/xxx/*,需修改makefile

           8.1.2添加控制开关到menuconfig

               Kconfig修改path:alps/kernrl-xx/drivers/misc/mediatek/kconfig.drivers

                添加所用sensor:

                   Ex:

                    configMTK_AP3216X

                             bool"AP3216X for MediaTek package"

                    defaultn

                修改makefile文件,添加编译控制条件,Path:alps/kernel-xx/drivers/misc/mediatek/alsps/makefile

                  Ex.

                      ifeq($(CONFIG_MTK_AP3216X),y)

                         obj-y      +=  ap3216x/

                      endif      

             接下来需用menuconfig勾选自己的sensor.

            8.1.3 配置dws中相关的中断脚,触发方式等。

          9 Sound 配置

              9.1.1外部功放配置位置:

                  Path:alps/vendor/mediatek/proprietary/custom/${proj}/hal/audioflinger/audio/audio_custom_exp.h


                      Ex.

                          #define USING_EXTAMP_HP

                9.1.2 使能speaker

                        Path:alps/kernel-xx/sound/soc/mediatek/mt_soc_audio_v2/mt_soc_codec_63xx.c

               9.1.3 menuconfig配置:

                       Pathevice driver->sound card support->advancedlinux sound architecture->alsa for soc audio support/


非常实用的资料






上一篇:android apk差分升级-安卓手机APK 应用 OAT升级方法
下一篇:MTK芯片编译到preloader报错 preloader解锁BL (bootloader)方案
本帖地址:http://www.aialbb.com/thread-398-1-1.html

1、专业群控,云控,脚本开发,手机ROM技术开发。开发QQ:735394006

2、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关

3、帖子作者无需承担一切因本文发表而直接或间接导致的民事或刑事法律责任

0

主题

15

帖子

18

积分

新手上路

Rank: 1

积分
18
发表于 2018-7-5 08:54:35 | 显示全部楼层
谢谢分享
回复

使用道具 举报

0

主题

20

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2018-7-11 13:06:31 | 显示全部楼层


谢谢分享
回复

使用道具 举报

0

主题

32

帖子

66

积分

注册会员

Rank: 2

积分
66
发表于 2018-7-31 16:34:06 | 显示全部楼层

就算花钱可以下载我也不带水的

10

主题

484

帖子

1018

积分

金牌会员

Rank: 6Rank: 6

积分
1018
发表于 2018-9-2 21:55:01 | 显示全部楼层
学习学习,谢谢分享………………
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|AI手机网

GMT+8, 2018-9-22 00:41 , Processed in 0.194938 second(s), 25 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表