mtk修改

adb 调试命令 + log打印

adb shell

logcat

adb logcat Calculator:D *:S Calculator查找条件

adb shell logcat *:E > log.txt

使用adb shell提示adb server is out of date. killing...? //adb端口被占用了

adb nodaemon server

netstat -ano

findstr "5037"

tskill *****

单独加载apk 删除文件之前, 有些需要root才可删除文件

adb remount

rm system/app/Phone.apk

adb push C:\Users\Administrator\Desktop\Phone.apk system/app/ 存放文件

在程序中输出日志, 使用 android.util.Log 类.

该类提供了若干静态方法

Log.v(String tag, String msg);

Log.d(String tag, String msg);

Log.i(String tag, String msg);

Log.w(String tag, String msg);

Log.e(String tag, String msg);

分别对应 Verbose, Debug, Info, Warning,Error.

tag是一个标识,可以是任意字符串,通常可以使用类名+方法名, 主要是用来在查看日志时提供一个筛选条件.

输入##3646633##进入工模(原来是user模式)

然后在标签找到log and debugging中的mtklog,然后开始记录log

adb pull storage/sdcard0/mtklog/ C:\Users\Administrator\Desktop\mtklog

//工程模式log

adb pull /storage/sdcard0/mtklog C:\Users\Administrator\Desktop\mtklog

adb shell ;cat proc/ksmg打印内核信息

mtk 打印内核信息

adb pull /sdcard/mtklog/mobilelog/ xxxx

adb shell getevent 获取上报数据的打印

//串口打印(一种方法是 proc/mtprintk写1)

接一根线,插上usb供电

如果要后查看日志 请使用

adb logcat

关于adb的更多信息请查看官方网站.

当执行 adb logcat 后会以tail方式实时显示出所有的日志信息.

这时候我们通常需要对信息进行过滤,来显示我们需要的信息, 这时候我们指定的 tag就派上了用场.

adb logcat -s MyAndroid:I

使用技巧:

1.使用logcat &在后台运行

2.使用-d得到所有log

3.使用-f或者重定向(>和>>)输出到文件

4.使用-s设置过滤器,得到想要的log。

这时将只显示tag为MyAndroid,级别为I或级别高于I(Warning,Error)的日志信息.

其中表示log的component, tag (或者使用 * 表示所有) , priority 如下所示:

V Verbose

D Debug

I Info

W Warn

E Error

F Fatal

S Silent

事实上logcat的功能是由Android的类android.util.Log决定的,在程序中log的使用方法如下所示:

Log.v() -------------------- VERBOSE

Log.d() -------------------- DEBUG

Log.i() -------------------- INFO

Log.w() -------------------- WARN

Log.e() -------------------- ERROR

以上log的级别依次升高,DEBUG信息应当只存在于开发中,INFO, WARN,ERROR这三种log将出现在发布版本中。

mtk 编译

单独编译一个模块, 然后使用adb单独加载apk

./mk mm packages/apps/Phone/

编译系统相关, apk, framework之类的

./mk systemimage

整个系统重新编译

./mk k76 new

********************./mk mm编译清除的错误**********************************

不同的工程模式或用户模式,会删除其他out目录,需要重新编译

所以要么一直用-o=TARGET_BUILD_VARIANT=user,要不不用

./mk -o=TARGET_BUILD_VARIANT=user k76 n ; ./mk -o=TARGET_BUILD_VARIANT=user mm xxxx

./mk k76 n ; ./mk mm xxxx

************************************************************************************************

./mk -o=TARGET_BUILD_VARIANT=user k76 n 用户模式

./mk -o=TARGET_BUILD_VARIANT=eng k76 n 工程模式

./mk -o=TARGET_BUILD_VARIANT=user k76 r

./mk -t k76 n 打印模式 debug 模式

./makeMtk -o=TARGET_BUILD_VARIANT=user m801 r k&&./mk bootimage

./mk r kernel && ./mk bootimage

./mk -o=TARGET_BUILD_VARIANT=user r kernel && ./mk -o=TARGET_BUILD_VARIANT=user bootimage

修改了引脚dct文件

./mk n pl lk kernel; && ./mk r bootimage
./mk nw8801t mma packages/apps/Launcher3 //第一次编译需要使用mma编译launcher3, 之后可以使用mm

修改了ProjectConfig.mk 不 需要整个工程重编

//launcher3还可以有配置的位置

mediatek\custom\nw6881\resource_overlay


\mediatek\custom\k76\cgen\inc\audio_ver1_volume_custom_default.h

修改codegen需要

1./mk -o=TARGET_BUILD_VARIANT=user codegen

2./mk -o=TARGET_BUILD_VARIANT=user n lk k bootimage

1: ./mk n(r) kernel; ./mk bootimage;当修改kernel相关代码时,要使用此命令,具体如下:

alps/kernel/

alps/mediatek/platform/mt65xx/kernel/

alps/mediatek/source/kernel/

alps/mediatek/customer/mt65xx/kernel/

alps/mediatek/customer/common/kernel/

alps/mediatek/customer/$porject_name$/kernel

......

2: ./mk n pl 当修改preloader相关代码时,要使用此命令,具体如下:

alps/mediatek/platform/mt65xx/preloader/

alps/mediatek/source/preloader/

alps/mediatek/customer/mt65xx/preloader/

alps/mediatek/customer/common/preloader/

alps/mediatek/customer/$porject_name$/kernle

......

3: ./mk uboot 当修改uboot相关代码时,要使用此命令,具体如下:

alps/mediatek/platform/mt65xx/uboot/

alps/mediatek/source/uboot/

alps/bootable/bootloader/uboot/

alps/mediatek/customer/mt65xx/uboot/

alps/mediatek/customer/common/buoot/

alps/mediatek/customer/$porject_name$/uboot/

......

4: ./mk systemimage 当修改system相关代码时使用此命令,具体如下:

alps/frameworks/

alps/packages/

alps/vendor/

alps/hardware/

alps/dalvik/

...........

5: ./mk recoveryimage 当修改recover相关代码时使用此命令,具体如下:

alps/bootable/recovery/

alps/mediatek/customer/$project_name$/recovery/

......

6: ./mk factoryimage: 当修改factory相关代码时使用此命令,具体如下:

alps/mediatek/customer/$project_name$/factory/

alps/mediatek/customer/common/factory/

alps/mediatek/source/factory/

......

7: ./mk secroimage 当修改secro相关代码时使用此命令,具体如下:

alps/mediatek/source/secro/

alps/mediatek/customer/$project_name$/secro/

Example:

./mk -t e1k emigen

: Generate EMI setting source code.

./mk -o=TARGET_BUILD_VARIANT=user e1k n

: Start a user mode full build.

./mk listp : List all available projects.

./mk e1k bootimage

: Build bootimage for e1k project.

./mk e1k bm_new k

: Build kernel for e1k project.

./makeMtk e1k c,bm_remake pl k

: Clean & Build preloader and kernel for e1k project.

./makeMtk e1k n k kernel/xxx/xxx

: Build(full build) kernel component/module

under the path "kernel/xxx/xxx" for e1k project.

./makeMtk e1k r dr Gallery

: Rebuild android module named Gallery for e1k project.

./makeMtk e1k mm packages/apps/Settings

: Change Directory to packages/apps/Settings and execute "mm"

用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把system文件夹打包为system.img

可以使用make snod将模块打包到system.img中,也可以使用 adb install *.apk安装

注:通过mmm packages/providers/ContactsProvider/ 编译后的apk在 out/target/product/generic/system/app

这时候通过 adb install out/target/product/generic/system/app/xxx.apk 安装你刚修改过的apk就可以在模拟器上看到你修改的效果了。

adb push方式进去:

adb shell mount -o rw,remount -t ext3 /dev/block/mmcblk0p2 /system 挂载并获取写入权限

adb push xxx.apk /system/app

./mk snod 代替./mk systemimage 打包,可以加速

修改alps/build/core/main.mk:

subdir_makefiles :=\

$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs)

Android.mk)

修改为:

ifneq ($(MAKECMDGOALS),snod)

subdir_makefiles :=\

$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(subdirs)

Android.mk)

endif

smart phone flash tool

新的flash, 需要download一个文件到emmc(如必须的分区信息)

之后可以直接用 Firmware->Upgrade

有些东西需要format才能解决(No valid PMT for storage device 8045)

format之后,第一次需要用download, 之后可以用Firmware->Upgrade

创建新项目mk_project.sh

创建属于自己的项目

./mk_project.sh add nw7812

com=$1

project=$2

mode=d80 需要copy的项目

开机流程


uboot lk && 开机第一屏:

mediatek/platform/mt6582/preloader/src/core/main.c

mediatek/platform/mt6582/lk/platform.c

mediatek/platform/mt6582/lk/mt_battery.c

大致流程

main==>bldr_pre_process==>platform_init=>mt65xx_bat_init(开机电压检测)

================================================查询命令 如jgrep resgrep ==============================================

首先需要 source build/envsetup.sh

jgrep 只查找java代码

resgrep 只查找资源

================================================activiry 生命周期 ==============================================

onstop是全屏activity被挡住,

onpause是半屏下拉菜单被挡住

====================================================================================================================

滑动锁屏状态下禁止下拉菜单 & 打电话禁止下拉菜单

滑动锁屏状态下状态栏可以下拉

是google 4.0 默认的设计。如果要禁止此功能,请修改KeyguardViewMediator.java的adjustStatusBarLocked()方法,将

frameworks/base/policy/src/com/android/internal/policy/impl/keyguard/KeyguardViewMediator.java

if (isSecure()

!ENABLE_INSECURE_STATUS_BAR_EXPAND) {

// showing secure lockscreen; disable expanding.

flags

= StatusBarManager.DISABLE_EXPAND;}修改为:

if (isSecure()

ENABLE_INSECURE_STATUS_BAR_EXPAND) {

模仿如下: packages\apps\Phone\src\com\android\phone\InCallScreen.java

import android.app.StatusBarManager;

private StatusBarManager mStatusBarManager;

public static final String STATUS_BAR_SERVICE = "statusbar";

protected void onCreate(Bundle icicle) {

mStatusBarManager = (StatusBarManager)this.getApplicationContext().getSystemService(Context.STATUS_BAR_SERVICE);

}
//禁止下拉

public void onWindowFocusChanged(boolean hasFocus) {

if(mStatusBarManager != null)

mStatusBarManager.disable(StatusBarManager.DISABLE_EXPAND);

if(mStatusBarManager != null)

mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);

}
//恢复下拉 onstop是全屏activity被挡住, onpause是半屏下拉菜单被挡住

protected void onStop() {

if (DBG) log("onStop()...");

super.onStop();

if(mStatusBarManager != null)

mStatusBarManager.disable(StatusBarManager.DISABLE_NONE);

}

MTKLogger 模式

debug 调试模式

MTKLogger is running

MTK_MTKLOGGER_SUPPORT=no //关闭调试模式

MTK_ENGINEERMODE_APP=no //退出工程模式

./mk -o=TARGET_BUILD_VARIANT=user d88 n 用户模式

./mk -t d88 n 打印模式

lcd/lcm

**************修改了lcd分别率 步骤***********

1、开机logo

ProjectConfig.mk BOOT_LOGO=wsvga //wvga

2、显示屏

ProjectConfig.mk

LCM_HEIGHT=600

LCM_WIDTH=1024

mediatek\custom\common\kernel\lcm\TPG110\TPG110.c 把它替换了

3、touchpannel

mediatek\custom\k76\kernel\touchpanel\GSL2682\tpd_custom_gsl_GST.h 把它换了

**************增加TGP110******************************

ifdef BUILD_LK

printf("[LK/LCM] lcm_init() \n");

else

printk("[LCM] lcm_init() enter\n");
CLK_Monitor(clk_ckmon1,AD_SYS_26M_CK,0);

endif

mt_set_gpio_mode(GPIO3, GPIO_MODE_01);

//CLK_Monitor(clk_ckmon1,AD_SYS_26M_CK,0);

MDELAY(20);

CUSTOM_KERNEL_MULTIBRIDGE=va7783

MTK_MULTIBRIDGE_SUPPORT=yes

************************mipi***************************

VSPW:Vertical sync pulse width,一个脉冲周期所占的像素点

VFPD:Vertical front porch delay 准备时间 所占的像素点

VBPD:Vertical back porch delay 结束时间 所占的像素点

HSPW:Hertical sync pulse width,一个脉冲周期所占的像素点

HFPD:Hertical front porch delay

HBPD:Hertical back porch delay

params->dsi.LANE_NUM = LCM_TWO_LANE;

lp模式发命令, hs发数据

DSI_clk_HS_mode

HSTX_CKLP_EN 这个变量设为0,就不会进 lp mode

编译的时候mediatek\custom\common\kernel\lcm -> copy mediatek\custom\common\lk\lcm

launcher是RGB666, 而,LCD是RGB888

rgb888输出转为rgb666

输出只需要将lcm_get_params()函数里面的LCM_DSI_FORMAT_RGB888修改为LCM_DSI_FORMAT_RG666

LCM_PACKED_PS_24BIT_RGB888修改为LCM_PACKED_PS_18BIT_RGB666

寄存器的0x17 的值修改为0x01 , 请知悉

VA7783_REG_WRITE(0x17, 0x00); =====> VA7783_REG_WRITE(0x17, 0x01);

static void lcm_init(void)

{

unsigned int i;

lcm_poweron(true);

lcd_reset(1);

MDELAY(10);

lcd_reset(0);

MDELAY(10);

lcd_reset(1);

MDELAY(50); //下面写命令时,需要一定的时间,测试可以用循环初始化 for(i = 0; i < 10; i++)

push_table(lcm_initialization_setting, sizeof(lcm_initialization_setting) / sizeof(struct LCM_setting_table), 1);

}

// Bit rate calculation

////1 Every lane speed

params->dsi.pll_div1=0; // div1=0,1,2,3;div1_real=1,2,4,4 ----0: 546Mbps 1:273Mbps

params->dsi.pll_div2=1; // div2=0,1,2,3;div1_real=1,2,4,4

params->dsi.fbk_div =10;//18 // fref=26MHz, fvco=fref*(fbk_div)*2/(div1_real*div2_real)

fbk_div一般不超过20

频率过高,过低,有可能出现截屏,上屏的图片,在下屏也有

**************mipi命令翻译**********************

MIPI command如下:

regw(0x01);//Reset

Delay 30ms

regw(0x80,0x47);

regw(0x81,0x40);

regw(0x82,0x04);

regw(0x83,0x77);

regw(0x84,0x0F);

regw(0x85,0x70);

regw(0x86,0x70);

data_array[0] = 0x47801500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x40811500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x04821500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x77831500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x0F841500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x70851500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

data_array[0] = 0x70861500;

dsi_set_cmdq(&data_array, 1, 1);

MDELAY(1);

***************************花屏****************************

一、lk花屏, “normal消失”到loading之间花屏

540_960分辨率花屏,与800-1280破解有关,需要还原

***************************闪屏****************************

调试寄存器vcom,适当的调电压值,合适即可

***************************亮屏慢****************************

en改为pwm控制

方法

1、dct里面把 gpio90配成 pwm模式

2、或, 硬件修改

touch pannel

头文件所在目录

mediatek\custom\nw6881\kernel\touchpanel\gsl2682

驱动所在地方

mediatek\custom\common\kernel\touchpanel\gsl2682

选择使用哪个tp

X:\nw6881\mediatek\config\nw6881\ProjectConfig.mk

CUSTOM_KERNEL_TOUCHPANEL=gsl2682

编译:./mk -o=TARGET_BUILD_VARIANT=user nw6881 n k && ./mk -o=TARGET_BUILD_VARIANT=user r bootimage

TPD_PROC_DEBUG//这个宏决定 调tp的 工程师是否能在线调试,烧录进去

kernel\drivers\input\touchscreen

k76\mediatek\custom\k76\kernel\touchpanel\GSL2682\tpd_custom_gsl2682.h

修改tp参数,分别率

#include "tpd_custom_gsl_ZHZY.h"

#include "tpd_custom_gsl_GST.h"

#include "tpd_custom_gsl_PB.h"

#include "tpd_custom_gsl_CYY.h"

#define TPD_CUSTOM_GSL_ZHZY 0

#define TPD_CUSTOM_GSL_GST 1

#define TPD_CUSTOM_GSL_PB 0

#define TPD_CUSTOM_GSL_CYY 0

TPD_CUSTOM_GSL_GST 1 使用的就是 tpd_custom_gsl_GST.h 文件的两个数组

static unsigned int gsl_config_data_id_GST[512]

static const struct fw_data GSLX680_FW_GST[]

它们的参数,决定了touchpannel的

并不是修改这些参数,下面的好像没有用到

#define TPD_X_RES 1024

#define TPD_Y_RES 760

*******************模拟近距离************************

tp模拟光感

psensor

tp 模拟光感, 通过TP 灵敏度 可以调整 到悬浮 感应, 1cm左右

光感关键字:proximity

光感配置

CUSTOM_KERNEL_ALSPS=ltr501_liteon#ltr501_liteon#gn_ltr559#ap3216x ap3216c#

修改mediatek\custom\common\kernel\touchpanel\GSL2682\gsl2682_driver.c

使用FAE工具

新建配置->当前配置->靠近关屏新和睡眠,打开

然后在 其它->靠近关屏 调试参数 帮助有说

上半部分生效 **************行平均中 全行->半行

adb 在线调试

按一下B,窗口就会出来

点启动,把.h文件拖进去就可以了

读取按键坐标:

一:直接读取,看打印

二:把xy反过来,读取坐标,只是读坐标,实际的xy并不变,xy还原

*****************************模拟近距离***************************
4.2的第二屏图片在system.img里面

修改开机logo

work_michael\k76\mediatek\config\k76\ProjectConfig.mk

# to choose which boot logo folder would be used, the boot logo folder path is mediatek/custom/common/uboot/logo/

BOOT_LOGO=wsvga //1024*600

BOOT_LOGO=wvga //800*480

目录mediatek/custom/common/uboot/logo/

./mk k76 lk kernel pl; ./mk bootimage

图片目录:mediatek\custom\common\lk\logo\wsvga

快速编译logo,使用linux命令复制,命名图片,不然windows缓存机制

BOOT_LOGO=wsvga

./mk -o=TARGET_BUILD_VARIANT=user n lk

生存的文件bootable\bootloader\lk\build-k76\custom\k76\lk\logo

在user模式下显示开发者选项

packages\apps\Settings\src\com\android\settings\Settings.java

private void updateHeaderList(Listtarget) {

final boolean showDev = mDevelopmentPreferences.getBoolean(

DevelopmentSettings.PREF_SHOW,

android.os.Build.TYPE.equals("eng"));

改为final boolean showDev = true;

修改内存 ddr

修改ddr, LPDDR2

\mediatek\custom\k76\preloader\inc\custom_MemoryDevice.h

mediatek\build\tools\TabletEmiList\MT6582\TabletMemoryDeviceList_MT6582.xls 读取的内存信息

当ddr的电压不合适时,有可能造成煲机死机

[DESCRIPTION]

近期emmc vendor陆续推出新的支援emmc 5.0的storage chip(emmc or emcp),如果在MT6589/72/82平台上换用emmc 5.0 storage chip后发现无法正常开机,请参考[SOLUTION]部分的说明。

[KEYWORD]

emmc5.0

[SOLUTION]

换用emmc5.0后无法正常开机主要有两方面原因:

(1) 89/72/82 MSDC本身不支援emmc 5.0 spec,在linux kernel driver上也没有考虑兼容emmc5.0的storage devcie,emmc 5.0 storage device的EXT_CSD_REV[192]的value升级为7,driver会判断为异常。通常在开机uart kernel log中会看到如下的错误提示:

[ 1.865257] (1)[5:kworker/u:0]mmc0: unrecognised EXT_CSD revision 7

[ 1.866085] (1)[5:kworker/u:0]mmc0: error -22 whilst initialising MMC card

如果是由于这个原因无法开机的话,请上PMS系统申请patch ALPS01031775.

(2) Samsung的emmc 5.0 storage device(比如KMN5X000ZM-B209)增大了boot1和boot2 area的size(均是4MB),而emmc 4.41,4.5时代所有厂商的emmc boot1+boo2+RPMB area都没有超过6MB,因此MTK的MBR partition liner start address的最大值default就被设定成6MB.

如果您在配置memory combo时,没有把新添加的emmc 5.0 storage device配置到alps\mediatek\build\tools\emigen\\MemoryDeviceList_.xls表格的“emmc_region” sheet中,那么最终计算出来的MBR start address就仍然为6MB,由于MBR分区必须要处于User area,因此这时就会出现访问地址的offset计算错误。通常在开机uart kernel log中会看到类似如下的错误提示:

[ 3.309425] (2)[62:mmcqd/0][MSDC] msdc0 -> Address offset in USER REGION(Capacity 14912 MB) is 0xffffe400 <- msdc_cal_offset() : L<3104> PID<0x3e>

[ 3.309449] (2)[62:mmcqd/0][MSDC] msdc0 -> XXX Address offset error(-7168),please check MBR start address!! <- msdc_cal_offset() : L<3106> PID<0x3e>

解决方法有两种:

a. 在alps\mediatek\build\tools\emigen\\MemoryDeviceList_.xls的“emmc_region” sheet添加新使用的这颗emmc 5.0 device的entry,并且保证数据无误,建议是直接从MTK official release的MDL表格中拷贝,或是直接使用MTK的MDL表格.

b. 直接修改alps/mediatek/config//mbr_addr.pl文件中的$MBR_Start_Address_KB的值,

$MBR_Start_Address_KB = 6*1024;

修改为:

$MBR_Start_Address_KB = 20*1024;

关于memory combo更多的背景知识请参考"[FAQ11482]【Storage】Flash 兼容(Combo)的实现及现状"这份FAQ。

MT6592以及之后的平台由于采用了新的partition address计算方法不会存在这个问题。

如果贵司是在已经量产的旧项目上新增使用emmc 5.0 device,那么这样修改软件后,会造成新发布的软件无法为已经上市并使用非emmc 5.0 device的机器做OTA升级,对于这种情况请参考以下的说明:

第一种方案是Samsung 回厂把boot1 size 从4M resize 成2M,这样与之前一样;

第二种是MTK 帮 Samsung 提供 workaround 的方法, 需要修改客制化preloader + 客制化MDT tool来完成resize 功能,

用workaround 的方法会增加客户成本和风险:

a. 需要客户在产线上多做一个下载工位,下载具有resize 功能的preloader ;

b. 如果发生resize 失败,可能memory 就报废了.

MTK建议使用方案一,方案二在大规模生产时chip resize fail 损坏的风险

若贵司确认要使用方案二,请先与 Samsung 谈好 fail chip 的处理方式,再反馈至 CR 确认使用方案二,MTK再提供相关协助。

1,mbr_addr.pl 中,$MBR_Start_Address_KB = 6144;(6*1024)要改为$MBR_Start_Address_KB = 20*1024;,

2,mmc.c if (card->ext_csd.rev > 7) //6改为7

开不了机子,识别不了usb

砖头救星~emmc clk 对地短接

GPIO 复用引脚关系

GPIO控制

mediatek\dct\MT6582.fig

gpio控制软件 mediatek\dct\DrvGen.exe

GPIO_YuSu.cmp  cust_gpio_boot.h

--> DrvGen.exe --> codegen.dws ->

MT6575_NP.fig cust_gpio_usage.h

目录mediatek\custom\k76\kernel\dct\dct

gpio初始化mediatek/platform/mt6582/lk/mt_gpio_init.c

flashlight 闪光灯 camera imagesensor

CUSTOM_HAL_FLASHLIGHT = constant_flashlight

CUSTOM_KERNEL_FLASHLIGHT = constant_flashlight

mediatek\custom\k76\kernel\flashlight\constant_flashlight\leds_strobe.c
#define FLASH_GPIO_ENF GPIO12

#define FLASH_GPIO_ENT GPIO13

mediatek\custom\nw7813\kernel\camera\camera\kd_camera_hw.c

注意:在kd_camera_hw.c中AVDD = 2.8v DVDD = 1.8V

上电电平

u32 pinSet[2][8]

//camera 包名和类名, camera所以gallery的范围了

launcher:packageName="com.android.gallery3d"

launcher:className="com.android.camera.CameraLauncher"

************************imagesensor的查找*******************************

nw8801t common mt6582(平台) 三个目录都会去找,优先级从高到低

*********************camera快速编译********************************

1、删除 kernel\mediatek\custom\out\hal\imgsensor和kernel\mediatek\custom\out\kernel\imgsensor

2、./mk r k && ./mk r bootimage

3、./mk mm mediatek/platform/mt6582/hardware/mtkcam/

4、./mk snod

或者

//修改应用

./mkr dr libcam.paramsmgr //没有修改型号的情况下使用

./mk snod

//修改内核

./mk r k && ./mk r bootimage

这条command,可以快速编译feature table的so文件:libcam.paramsmgr.so

**************************************************************

闪光灯开机亮:gpio初始化的问题

mediatek\platform\mt6582\lk\mt_gpio_init.c添加

void mt_gpio_set_default_chip(void)

{

.....................

#if 1 //Michael_Lee 2014_06_14

mt_set_gpio_mode(GPIO12,GPIO_MODE_00);

mt_set_gpio_dir(GPIO12,GPIO_DIR_OUT);

mt_set_gpio_out(GPIO12,GPIO_OUT_ZERO);

#endif**************************************************************

*********************去掉闪光灯图标****************************

CUSTOM_HAL_LENS=dummy_lens

CUSTOM_KERNEL_LENS=dummy_lens

public void updateFocusUI() { //当上面的宏没用的时候,注释如下

//focusIndicator.showStart();//Michael_LeePP for white frame

************************camera********************

AVDD 2.8V

DOVDD 1.8V

DVDD 1.1V(500W PIXEL) 1.8V(200W PIXEL) 电压要求看规格书

RESET 和 pwdn引脚一直要注意对应的GPIO是否正确

reset脚位有可能分开,有可能一起

GPIO配置,有可能在kd_camera_hw.h, 也有可能在dct下面

#ifdef GC2235_MIPI_RAW 这个在ProjectConfig.mk里的, 小写即可

//一定要看摄像头pcb私印对不对,否则软件和摄像头对不上

***************************************************************

连拍出现绿照,72的KK版本连拍会绿屏的问题

少一个ioctl

***************************************************************

打开摄像头的三角形有问题

unfortunately, gallery stopped

感光度,三角形

和屏的分辨率, ro.sf.lcd_density有关

***************************************************************


14 SIM

14.1双卡、单卡版本切换:

Double SIM

GEMINI = yes

MTK_GEMINI_ENHANCEMENT= yes

MTK_SHARE_MODEM_SUPPORT= 2

MTK_SHARE_MODEM_CURRENT= 2

MTK_GEMINI_3G_SWITCH=yes

MTK_GEMINI_SMART_3G_SWITCH=1

==>

Single SIM

GEMINI = no

MTK_GEMINI_ENHANCEMENT= no

MTK_SHARE_MODEM_SUPPORT= 2

MTK_SHARE_MODEM_CURRENT= 1

MTK_GEMINI_3G_SWITCH=no

MTK_GEMINI_SMART_3G_SWITCH=0

修改机型

修改机型

build\tools\buildinfo.sh

echo "ro.product.model=$PRODUCT_MODEL" //关于手机

echo "ro.product.brand=$PRODUCT_BRAND"

echo "ro.product.name=$PRODUCT_NAME"

echo "ro.product.device=$TARGET_DEVICE" //电脑显示的名称

echo "ro.product.manufacturer=$PRODUCT_MANUFACTURER"

persist.sys.timezone=Europe/Moscow //默认时区 不能有空格

ro.product.locale.language=ru //默认语言

ro.product.locale.region=RU

开机动画音乐

添加frameworks\base\data\sounds\bootanimation.zip

添加frameworks\base\data\sounds\newwavelabs/bootaudio.mp3

frameworks\base\data/sounds/Android.mk

添加

LOCAL_PATH := frameworks/base/data/sounds

TARGET_PATH := system/media/

PRODUCT_COPY_FILES += \

$(LOCAL_PATH)/bootanimation.zip:$(TARGET_PATH)/bootanimation.zip \

$(LOCAL_PATH)/newwavelabs/bootaudio.mp3:$(TARGET_PATH)/bootaudio.mp3

bootanimation.zip的制作方式, 需要三个文件part0, part1, desc.txt(一定需要vim编写,不可以windows,因为没有头标识符)

desc.txt

600 1024 10 分别率 , 帧/s

p 1 0 part0 播放一次

p 0 0 part1 停留到开机

windows 压缩, 压缩格式zip, 压缩方式:存储

修改默认壁纸

壁纸库

注意分辨率,还有图片大小

480_800

k76\packages\apps\Launcher2\res\drawable-nodpi 注意要成对添加wallpaper_road.jpg,wallpaper_road_small.jpg

k76\packages\apps\Launcher2\res\values\wallpapers.xml 添加数组

600_1024

k76\packages\apps\Launcher2\res\drawable-sw600-nodpi 注意要成对添加wallpaper_road.jpg,wallpaper_road_small.jpg
k76\packages\apps\Launcher2\res\values-sw600\wallpapers.xml 添加数组

800_1280

MTK_LIVEWALLPAPER_APP=no

packages\apps\Launcher3\res\drawable-xhdpi

packages\apps\Launcher3\res\values-xhdpi\wallpapers.xml

//默认壁纸

frameworks\base\core\res\res\drawable-nodpi

frameworks\base\core\res\res\drawable-sw600dp-nodpi

充电 ic 和 pmic

MTK_BQ24158_SUPPORT=yes

mediatek\platform\mt6582\kernel\drivers\power\bq24158.c

mediatek\platform\mt6582\kernel\drivers\power\bq24158.h

mediatek\platform\mt6582\kernel\drivers\power\charging_hw_bq24158.c

充电时候,如果线太长,会消耗一定的电压,导致充电电流小

mediatek\custom\k76\kernel\battery\battery\cust_charging.h

#define NON_STD_AC_CHARGER_CURRENT CHARGE_CURRENT_1400_00_MA 修改电压

mediatek\kernel\drivers\power\battery_common.c 电量处理

mediatek\kernel\include\mach\battery_common.h

#define SYSTEM_OFF_VOLTAGE 3400 //关机电压

if (BMT_status.bat_vol <= SYSTEM_OFF_VOLTAGE)

{

resetBatteryMeter = mt_battery_0Percent_tracking_check();

}

*****************************低电压开机********************

开关机不正常,低电压可以开机,低电闪屏,低电不关机

1、//低电压开机

MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION=no

mediatek\platform\mt6582\lk\mt_battery.c

void mt65xx_bat_init(void)

{

kal_int32 bat_vol;

// Low Battery Safety Booting

bat_vol = get_bat_sense_volt(1);

printf("[mt65xx_bat_init] check VBAT=%d mV with %d mV\n", bat_vol, BATTERY_LOWVOL_THRESOLD);

pchr_turn_on_charging();

if(g_boot_mode == KERNEL_POWER_OFF_CHARGING_BOOT && (upmu_get_pwrkey_deb()==0) ) {

printf("[mt65xx_bat_init] KPOC+PWRKEY => change boot mode\n");

g_boot_reason_change = true;

}

rtc_boot_check(false);

#ifndef MTK_DISABLE_POWER_ON_OFF_VOLTAGE_LIMITATION

if (bat_vol < BATTERY_LOWVOL_THRESOLD) //Michael_LeePP modify 20140704

//if (g_is_bat_low)

{

if(g_boot_mode == KERNEL_POWER_OFF_CHARGING_BOOT && upmu_is_chr_det() == KAL_TRUE)

{

printf("[%s] Kernel Low Battery Power Off Charging Mode\n", __func__);

g_boot_mode = LOW_POWER_OFF_CHARGING_BOOT;

return;

}

else

{

mt_disp_power(TRUE);//Michael_LeePP modify 20140704 显示低电量图片

mt_disp_show_low_battery();

mdelay(1000);

printf("[BATTERY] battery voltage(%dmV) <= CLV ! Can not Boot Linux Kernel !! \n\r",bat_vol);

#ifndef NO_POWER_OFF

mt6575_power_off();

#endif

while(1)

{

printf("If you see the log, please check with RTC power off API\n\r");

}

}

}

#endif

return;

}

2、//电池曲线不对,配置不对,导致低电不关机

k76\mediatek\custom\k76\kernel\battery\battery\cust_battery_meter_table.h

main ==> platform_init ==> mt65xx_bat_init

**********************************************************

应该是读取 adc_data里面的数字量data, 万用表量接在adc上的模拟电压 然后 公式 模拟电压/参考电压 = data/adc的bit 按照硬件的方式

比如 10bit的adc 参考电压为1.8v 则 你接0.9v恒压在adc的io上 通过adc转换的数字量应该是 1024 * 0.5 = 512 这个和你adc_data里面读到的树应该相等

**********************************************************

pmic读寄存器值换成电压不准确,读adc不正常

REG(0716)*4*1800/32700

解决方法: AUXADC_REF这个引脚=1.8V

**********************************************************

问题:充电电流冲着自动为0,然后充电图标还在

I2c的SCL和SDL上拉4.7k -> 1k电阻,消除iic干扰,防止iic出错,乱写寄存器

从BUG及波形来看,是因为寄存器得到了不同的指令,导致进入升压模式,如果换成1K,保证时钟和数据稳定,

芯片在读数时,就不会读错,不读错,就不会进入到升压模式,那充电自然就会进行;

**********************************************************

APN

mediatek\frameworks\base\telephony\etc\apns-conf.xml

mediatek\frameworks\base\telephony\etc\spn-conf.xml

SPN(Secret Private Network),面向业务的内网安全解决方案,即加密虚拟网络

APN(Access Point Name),即“接入点名称”,用来标识GPRS的业务种类,

MCC=移动国家号码,由3位数字组成,唯一地识别移动用户所属的国家。我国为460MNC=移动网号,由两位数字组成,用于识别移动用户所归属的移动网。邮电部门GSM PLMN网为00,“中国联通公司”GSM PLMN网为01type =

{

default:默认网络连接,当激活时所有数据传输都使用该连接,不能与其他网络连接同时使用,

适用场合:绝大部分正常上网时可以使用

mms:彩信专用连接,此连接与default类似,用于与载体的多媒体信息服务器对话的应用程序,此连接能与default连接同时使用

适用场合:使用彩信服务时,必须有mms类型的接入点,不必选中,应用程序会自动使用此接入点

dun: Dial Up Networking拨号网络的简称,此连接与default连接类似,用于执行一个拨号网络网桥,使载体能知道拨号网络流

量的应用程序,此连接能与default连接同时使用

适用场合:需要使用运营商无线热点的,CMCCChinaNetsupl: Secure User Plane Location“安全用户面定位”的简写,此连接与default类似,用于帮助定位设备与载体的安全

用户面定位服务器对话的应用程序,此连接能与default连接同时使用

适用场合:需要自动切换wap与net接入点的、需要把手机当临时APhipri: 高优先级网络,与default类似,但路由设置不同。

只有当进程访问移动DNS服务器,并明确要求使用requestRouteToHost(int, int)才会使用此连接

}

cmwap和cmnet是GPRS网络的两种接入方式。其实上吧,是wap方式和net方式。cm是chinamobile。

CMWAPCMNET 只是中国移动人为划分的两个GPRS接入方式。前者是为手机WAP上网而设立的,后者则主要是为PC、笔记本电脑、

PDA等利用GPRS上网服务。它们在实现方式上并没有任何差别,但因为定位不同,所以和CMNET相比,CMWAP便有了部分限制,资费

上也存在差别。

按键震动时间

Vibrator 振动器,马达

frameworks\base\core\res\res\values\config.xml

0

12
#解锁有关,改为0解锁就没震动了

0

50

四键震动

20

70

菜单,返回,桌面,后台的震动, 可以改为5

软键盘按键振动

40

去除虚拟按键,home 返回

false

Gsensor

CUSTOM_KERNEL_ACCELEROMETER=stk8312 #mc3xxx #mc32x0 #mc3210#kxtik1004

文件夹 mediatek\custom\common\kernel\accelerometer

mediatek\custom\k76\kernel\accelerometer

static struct acc_hw cust_acc_hw = {

.i2c_num = 2, //第几路i2c

.direction = 4, //方向的选择, 如0(x,y,z),1(-y,x,z)..4(-x,y,-z),MTK_MT6575开发驱动部分介绍.pdf中有介绍

.power_id = MT65XX_POWER_NONE,

.power_vol= VOL_DEFAULT,

.firlen = 1,

};

//i2c的地址在Gsensor内部定义, 与总线I2C无关

static struct i2c_board_info __initdata i2c_stk831x={ I2C_BOARD_INFO(STK831X_DEV_NAME, 0x3D)};

usb存储名称,磁盘名称

[FAQ04906][USB] 如何修改USB存储在PC"我的电脑"中显示的label名称

audio

**喇叭,通话音量,通话扬声器,音频,喇叭声音减小***************

\mediatek\custom\k76\cgen\inc\audio_ver1_volume_custom_default.h
#define VER1_AUD_VOLUME_SPH \

40,52,64,76,88,100,112,0,0,0,0,0,0,0,0,\

40,52,64,76,88,100,112,0,0,0,0,0,0,0,0,\

70,85,100,115,120,125,130,0,0,0,0,0,0,0,0,\ //VER1_AUD_VOLUME_SPH调试通话声音

40,52,64,76,88,100,112,0,0,0,0,0,0,0,0

可以用*#*#3646633#*#*

harware test --> audio --> loudspeaker mode 的sph 可以在线调试值

如果是播放音乐等使用扬声器的,就是普通模式(normal)-->media-->Level

在\mediatek\custom\nw7813\cgen\inc\audio_ver1_volume_custom_default.h中的VER1_AUD_VOLUME_MEDIA中第一个等级中更改。

VER1_AUD_VOLUME_MEDIA中四个等级分别对应Normal Mode,Headset Mode,Loudspeaker Mode,Headset_Loudspeaker Mode。

同理VER1_AUD_VOLUME_SPH中一样。

clock

clock配置方法:

lcm driver中配置clock有不同的方式,曾经使用过的配置方法有如下几种:

Type1: 配置倍频与分频参数:dsi.pll_div1(倍频), dsi.pll_div2(分频)--- (适用于75/77等之前的平台)

Type2: 配置倍频与分频参数:dsi.pll_fbk_div(倍频), dsi.pll_div1 & dsi.pll_div2 (分频)---(适用于89/72等前

期版本)

Type3: 直接配置clock lane频率:dsi.PLL_CLOCK(前期配置成枚举值,后期将直接配置成对应的频率常数值)----(适

用于89/72/82...)

FPS计算方法:

BRPL(Bit Rate Per Lane) = FL(Frame length) * FPS/ LN (Lane Number)

Type1: BRPL = fref(26M)*(div1+1) * / (2*div2_real)

Type2: BRPL = fref(26M) X (fbk_div+1)*2/(div1_real*div2_real)

--------- div1=0,1,23 div1_real=1,2,4,4

Type3: BRPL = PLL_CLOCK * 2

Video Mode:

Frame Length(FL) = (Hsync+HBP+Hadr+HFP) * (Vsync+VBP+Vadr+VFP) * BPP

Command Mode:

Frame Length(FL) = Width * height * Bpp * (1+overhead)

其中Overhead = (Tlpx + Ths_prep + Ths_zero + Ths_trail +8) /(packet Size/LN) (一般经验值取0.2)

//计算dsi.PLL_CLOCK方法, pixcl clk / dot clk,上述公式的结果

//多点少点可以, 大概那个值就行了,建議值請使用 26 的倍數

dsi.PLL_CLOCK = pclk * 3;

Settings修改

1280*800图片地址

packages\apps\Settings\res\drawable-mdpi

图标引用查看

packages\apps\Settings\xml\settings_headers.xml

自定义主题和标题颜色

自定义主题

themes.xml

......

@style/MyActionBar

styles.xml

实现自定义style

@style/TextAppearance.Holo.Widget.ActionBar.Title.Own

parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> 打印

#000

修改字体大小

mediatek\config\nw8801t\system.prop

ro.sf.lcd_density=200

====================================================================================================================

wifi里有个nvram worring信号满格的咋回事?

没写mac地址

理论上校准好了就没有了

====================================================================================================================

隐藏省电背光

frameworks\base\packages\SystemUI 里面查找

添加一键截屏

frameworks\base\packages\SystemUI\src\com\android\systemui\statusbar\phone\PhoneStatusBar.java

private void prepareNavigationBarView() {

mNavigationBarView.reorient();

mNavigationBarView.getRecentsButton().setOnClickListener(mRecentsClickListener);

mNavigationBarView.getRecentsButton().setOnTouchListener(mRecentsPreloadOnTouchListener);

mNavigationBarView.getHomeButton().setOnTouchListener(mHomeSearchActionListener);

mNavigationBarView.getSearchLight().setOnTouchListener(mHomeSearchActionListener);

//#if 1 //luo add 2014

mNavigationBarView.getScreenshotButton().setVisibility(View.GONE); //++++++++++++隐藏

mNavigationBarView.getScreenshotButton().setOnTouchListener(mScreenshotPreloadOnTouchListener);//++++++++++++

//#endif luo add end

updateSearchPanel();

}

phone and network

//频段的选择, 如2100+900M(硬件决定), 则12 + 58 具体在band表

CUSTOM_MODEM=discovery82_tb_kk_hspa_band1258

Band1 2100

Band2 1900

Band5 850

Band8 900

1258就是全频段的,但是只能当2100来用

编译

删了

//产生在out\target\product\nw8801m\obj\CUSTGEN\custom\modem

./mk -o=TARGET_BUILD_VARIANT=user update-modem

./mk -o=TARGET_BUILD_VARIANT=user snod

packages

//里面有必装app, 如ISDB-T quickset

mediatek\binary\packages

TouchPanel显示区域内 按键配置 FAQ

***************************************

添加gms包

vendor\mediatek\nw7813\artifacts\out\target\product\nw7813 //里面的东西,编译还存在

添加gms包

添加apk,放system/app下

[FAQ04300]如何预置APK

1、注意拷贝lib 到system/lib下, 如tmp.apk命名.rar, 然后拷贝armeabi-v7a下面的lib

2、直接拷贝app system/app下

android.mk,自动拷贝

//拷贝多个apk, 不可卸载

LOCAL_PATH := $(call my-dir)
#
include $(CLEAR_VARS) #apk1

# Module name should match apk name to be installed

LOCAL_MODULE := Google_Maps_8.1.0 //不允许有空格

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := platform

include $(BUILD_PREBUILT)
#
include $(CLEAR_VARS) #apk2

# Module name should match apk name to be installed

LOCAL_MODULE := com.vendors.gamesportal-oysters

LOCAL_MODULE_TAGS := optional

LOCAL_SRC_FILES := $(LOCAL_MODULE).apk

LOCAL_MODULE_CLASS := APPS

LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)

LOCAL_CERTIFICATE := platform

include $(BUILD_PREBUILT)

***************************************

mmc sd

一、触发方式

1、修改dct的中断

2、

mediatek\custom\nw7813\kernel\core\src\board.c

.cd_level = MSDC_CD_LOW,

*************************4.4.2系统外置SD卡无法使用的问题********************************

system/etc/permissions/platform.xml

源文件:frameworks\base\data\etc\platform.xml

< group gid="sdcard_rw" />

******************************internel storage******************************************

如何实现single partition storage or shared sdcard功能, Single partitioh即为shared sdcard功能,

此功能打开后会将sdcard与data分区合并,只能使用MTP来访问sdcard。

MTK_SHARED_SDCARD=yes//no->yes 合并内存

工程new

**********************

两个内存,分区,合成一个

一个是装东西的,一个是当T卡用的(内置t卡)

FAQ12170 如何去掉内置t卡

mediatek\config\xxxx\BoardConfig.mk设置大小

BOARD_MTK_ANDROID_SIZE_KB := 921600

BOARD_MTK_CACHE_SIZE_KB := 129024

BOARD_MTK_USRDATA_SIZE_KB := 997376

****************************************************************************

gps

1、glonass 俄罗斯卫星

按照fap, 读不到ID, 强制写3332id

res = confirm_if_3332();

res=0;

===============================================快速替换工具=============================================================

快速替换

ctrl v 选中

大写 I 插入需要的值

按两次Esc退出即可

=================================================Launcher3=======================================================

热键,按键,桌面最底下快捷键,

packages\apps\Launcher3\res\xml\default_workspace.xml

mediatek\custom\xxxx\resource_overlay

launcher:packageName="com.android.camera" //adb shell pm list package

launcher:className="com.android.camera.Camera" //可以使用"查看包名.apk"查看这些参数

launcher:screen="4"

launcher:x="4"

这里的位置不能与中间按键重合,不然不会显示出来

//camera

launcher:packageName="com.android.gallery3d"

launcher:className="com.android.camera.CameraLauncher"

//google play store

launcher:packageName="com.android.vending"

launcher:className="com.android.vending.AssetBrowserActivity"

//查看包名,类名,使用eclipse ddms

拖动图标,如google play store会出现, 搜索"onLongClick"

cmp=com.android.vending/.AssetBrowserActivity

//launcher添加appwidget,原理是把launcher放入pri-app

launcher3/Android.mk

添加LOCAL_PRIVILEGED_MODULE := true

mms

短信转mms数量,彩信,the SMS message to an MMS message

4

====================================================================================================================

82KK 插USB就关机

打开一个宏就可以啦

IMEI

AP和BP 与 modem有关,不同的modem不一样

AP 在(out\target\product\xxxx\obj\CODEGEN\cgen)

BP 在(mediatek\custom\common\modem\xxx)

注意:板子需要加电池(否则容易写不进去,usb供电没做好,需要加外部RTC)

====================================================================================================================

8127A-D有破解分辩率

TRACE32工具

wifi

/frameworks/base/wifi/java/android/net/wifi/wifimanager.java

calculateSignalLevel为计算信号等级函数,MAX_RSSI和MIN_RSSI分别为最强和最弱信号强度等级的

信号强度阀值。

====================================================================================================================

MTK 65XX系列通过USB OTG添加Ethernet RJ45有线网卡支持

====================================================================================================================

内置t卡预置资源:

1、通过fat.img挂载进去

2、recovery的时候,如下

[FAQ11640]【sdcard-FAT filesystem】打开

shared sdcard(single partition storage)功能

后,如何在内置T卡中预制资源?

[FAQ10734]开启了MTK_SHARED_SDCARD之后;恢复

出厂设置如何保留预置资源?

bootable\recovery\recovery.cpp

recovery_restore_special("/sdcard/", "/system/data/"); //Michael_LeePP for maplayer

==================================================================================================================

你可能感兴趣的:(MTK平台,Android知识)