P2&P301 项目软件总结

本文详细总结了P2和P301项目的软件开发过程,包括版本管理、功能技术、流程改进和疑难问题。项目采用共分支开发,驱动与应用软件在同一分支,节省了工作量,但也存在干扰问题。主要技术涉及Android 4.4.4、MTK6732平台,面临LCD亮度、唤醒速度、摄像头、SD卡热插拔等问题,并给出了相应的解决方案。此外,文章还提出了流程改进建议,如优化电源管理和中断脚电压问题。
摘要由CSDN通过智能技术生成

P2及P301项目软件总结

 

 

一、    项目回顾

1、         版本总结

P2到目前为止一共发布14个送测版本,A11,A12,A13已用于正式生产。P2由于三大件存在二供问题,还需要出A14版本来解决,以实现最终放量量产。

P301到目前为止一共发布11个送测版本,在开发前期和中期,两项目版本发布同步,因此版本号基本一致。

主要是在MTK6732新平台上开发,版本成熟度较低,两项目大同小异,仅主要器件的不同,应用软件没有差异。这2个项目采用共分支开发,应用在同一分支,驱动也在同一分支,使用宏,在差异部分做区分,省去大量的代码合并和同步的工作,节省了工作量,实现了快速开发。但当同时开发项目多时,也会有些干扰,开发人员一时难适应,经过一段时间磨合以后,逐渐适应。当某个项目开发即将结束,就可以通过拉TAG的方式,引出,但需要重新创建编译环境,需要一定的硬盘资源,需要考虑。

 

2、         功能/技术总结

平台:MT6732、KK2.MP13.V1.16、Android 4.4.4。

本项目是该平台上的首次开发,定制了大量的三方应用,比如

软件商店 ,浏览器,天气等功能三方定制。

因为同是Android 4.4.4,应用代码主要从P5项目上移植而来。

二、    流程改进

1.    这2个项目采用共分支开发,应用在同一分支,驱动也在同一分支,使用宏,在差异部分做区分,省去大量的代码合并和同步的工作,节省了工作量,实现了快速开发。但当同时开发项目多时,也会有些干扰,开发人员一时难适应,经过一段时间磨合以后,逐渐适应。当某个项目开发即将结束,就可以通过拉TAG的方式,引出,但需要重新创建编译环境,需要一定的硬盘资源,需要考虑。同平台同时项目较多是,争夺主分支的使用权,会互相有干扰问题。

2.    驱动分支,即CTA分支,即驱动纯净版本跟CTA 版本二合一,这样可节省资源,另外项目初期的试产版本,跟CTA使用同一版本,也可节省资源。实践可行。

三、    疑难总结

1.     生产线发现,部分LCD 最低亮度不亮问题。

部分机器最低亮度不亮屏,是当时测试要求调节最低亮度,P2 framework层修改alps/frameworks/base/core/res/res/values/config.xml最低亮度值由6改成3 ,是在帝京和合力泰两块屏上都有验证的,部分机器不亮屏是由于生产和调试使用的背光ic不是同一颗,出问题的ic是没有经过调试和试产验证的。

确认结果是P2最低亮度由3调整至6,暂停在P2上的使用,i7使用在P2上使用有问题的背光IC芯片,将最低亮度调整至7,与李辉经理确认背光最低亮度的占空比不低于2%即可。另外有工厂提机两台50%以上亮度调节不上去,通过重新焊接IC的使能脚(第4脚)可以恢复正常调节背光。测量ledpwm输出引脚的电压为1.8v到ic的使能脚电压却为1.5v,尝试断开ap端的电阻,此压降现象消失。后续I7会断开Ap端的电阻。这个现象与最低亮度问题没有关系。

 

2.     LCD底部黑条纹问题

 

这个问题解决的过程比较曲折,开始怀疑设置分辨率的寄存器没有正常写入,不过通过读取写入寄存器的值可以发现是正确的。后来IC原厂通过抓取波形也发现没有问题,包括修改mipi时序以及相关的写入速度等等各种办法都尝试了,还是不行,最后是台湾那边加了一个寄存器,这个寄存器是测试模式下的一个使能寄存器,可以确保初始化里面的寄存器都可以正常写入并且生效。

 

相关代码alps\mediatek\custom\common\kernel\lcm\otm8018b_dsi_vdo\otm8018b_dsi_vdo.c

加入:

staticstructLCM_setting_tablelcm_initialization_setting[] = {

{0x00, 1 , {0x80}}, //added by fengshangdong, very important
{0xF6, 1 , {0x01}},这个也只能针对这个otm8018b

}

 

 

3.     LCD唤不醒黑屏问题

由于我们的机器都开启了cabc功能,而且平台端控制背光IC的那路电路在物理上又没有断开,导致从LCM端的信号出来连接平台端的那路有一部分分压,从而导致背光IC点不亮,所以会引起唤不醒这个现象。解决办法就是将平台端控制背光IC的那路信号断开。

 

 

4.     LCD恢复出厂设置之后屏幕闪屏,黑色条纹问题

更新了LCD驱动之后没有编进recovery.img,因为这个包里面还是以前的LCD驱动,如果只编lk 跟kernel恢复出厂的时候有可能会出现这个问题,因为recovery.img中保存的还是以前的LCD驱动参数。

 

 

5.     CTP兼容导致烧写失败问题

系统启动后先判断ic类型,用int  g_ic_version全局变量。

在tpd_local_init() 里判断g_ic_version的结果。如果是该器件,

i2c_add_driver(&tpd_i2c_driver)会成功。如果不成功则错误退出。

如果是ft6336--帝晶ctp, 在 ft6336_p2/ft6336_ts.c/ tpd_local_init(void) 里,系统会运行到g_ic_version = 0x6336;

如果不是ft6336--帝晶ctp, 系统在  if(i2c_add_driver(&tpd_i2c_driver)!=0)

会出错退出。

 

 

staticinttpd_local_init(void)

{

 

   TPD_DMESG("FocaltechFT6336 I2C Touchscreen Driver (Built %s @ %s)\n", __DATE__, __TIME__);

 

if(i2c_add_driver(&tpd_i2c_driver)!=0)

  {

         TPD_DMESG("ft6336unable to add i2c driver.\n");

  return -1;

    }

if(tpd_load_status == 0)

    {

  TPD_DMESG("ft6336 add errortouch panel driver.\n");

  i2c_del_driver(&tpd_i2c_driver);

  return -1;

    }

        

g_ic_version = 0x6336;

         strcpy(g_ctp_ic_name,tpd_i2c_driver.driver.name);

 

  wake_lock_init(&ctp_fwup_lock,WAKE_LOCK_SUSPEND, "ctp_fwup_lock");

 

。。。

。。。

 

}

 

如果是合力泰ctp,在msg2138a_p2/msg2138a_driver.c/tpd_local_init(void)里面,系统会运行到g_ic_version = 0x2138a;这一步,

如果不是合力泰ctp,系统在   if(i2c_add_driver(&tpd_i2c_driver)!=0)

就会出错退出。

 

staticinttpd_local_init(void)

{

  TPD_DMESG("Mstar msg2138aI2C Touchscreen Driver (Built %s @ %s)\n", __DATE__, __TIME__);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值