android智能手机项目开发小结

简介:  android智能手机开发项目小结        从上周六到截至今天下班时,历时一个星期,把一个客户的新项目的板子bring up起来,目前的状态是这个双卡双待的手机能正常运行,LCD色彩、声音、GSM call、sensor、camera、touchkey、keypad、backlight、fm、headphone等都正常工作,可以送QA作进一步的测试,还是有一些需要继续优化的地方。

 android智能手机开发项目小结

 

     从上周六到截至今天下班时,历时一个星期,把一个客户的新项目的板子bring up起来,目前的状态是这个双卡双待的手机能正常运行,LCD色彩、声音、GSM call、sensor、camera、touchkey、keypad、backlight、fm、headphone等都正常工作,可以送QA作进一步的测试,还是有一些需要继续优化的地方。下周跟QA同志们,hardware同志们一起努力,争取客户样机早一点量产。下面就遇到的问题做一个小结吧!

 

问题1:touchkey不能正常工作

     touchkey用的是gt106驱动IC,上面有四个键,一个GPIO练到soc的GPIO上用作IRQ的媒介。我的同事花了一下功夫后,还是不能正常工作,我接手项目后,跟他一起分析原理图,看写的驱动代码。从原理图上,该IO结果一个connector再从PCB中间走到主芯片,刚开始怀疑电平不对,HW同事量了一下给出去的电压是2.48v,GPIO一般供出来的是3v,当时怀疑是不是GPIO的高电平门限值是不是没达到,后面求证得知门限在2v样子,应该这条路是给解释通了,那又是为什么呢?仔细又看了看同事写的代码,request一个GPIO,注册IRQ,设置触发条件,都没问题,后面还有一些创建Input设备的代码,设置bit mask,再register到系统。没有问题啊!郁闷,到底怎么了?当我沉住气接着看下去的时候,狐狸的尾巴露出来了,在probe函数的出错处理代码之前竟然少了一个可爱的return。悲剧啊!我加上了,测试OK了。这个问题的根本问题在于很多代码不是自己一行行写下来的,有时候拷来

拷去的,maybe多delete了一行代码引发了悲剧,这个问题提醒我们工程师在写driver的时候,一定要注意细节,细心细心再细心。

 

问题二:cameraGC2015不能加载驱动

 

     客户选择的camera模组是GC0309+GC2015组合,两个模块连在一起,都并到一个connector上跟主系统沟通。这两个camera的驱动在我们的平台上是支持的。在kernel中menuconfig已经配上了,加载的语句也加在了启动脚本里面。可以以到2015里面就出乱子了,刚开始的时候根本不会执行它的probe函数。仔细检查了platform里这个2015在IIC设备list里面也是有注册的,正常情况下是会执行probe的。为什么这么折磨人呢,软件工程师就是悲催啊!再深入查了一下,居然挂在同一组IIC上的328x磁sensor的设备地址也是0x30,跟GC2015一样,咋个设计的嘛!哥哥?结果跟客户沟通决定不要磁sensor了,我也就把它的驱动没有编译进内核,也没有加载动作,可是后面还是不行?量了量供电,两个需要2.8v的电正常,需要1.8v的core电压也是正常的,仔细检查了POWERDOWN pin脚跟reset pin都是按照需要给了的,那又能怎样,就是不行,任他风吹浪打!这个时候,大家想到了把这个磁sensor

从硬件上拔掉,物理上没有连了,幸运啊,晚上八点过终于迎来了好消息,哥俩都正常工作了。这个问题本不应该出现啊,在设计的初级阶段,就应该能排除掉这种低级失误,所以说软件工程师啊,还是得多怀疑。

 

问题三:headphone检测状态不正常

 

     在插入耳机跟不插入耳机的情况下,系统都提示有耳机存在。HW同事反复确认该原理图跟我们某机器是一样的,一模一样啊,信誓旦旦啊!可是我们软件在配置上跟那款机器是走的同一段代码,不会有差异。HW同事有拿来万用表量了量插入检测脚的电平,居然一直是高电平,耳机检测的IRQ类型是高电平中断。唉,难怪啊!这样也算能解释这个问题。后面hw同事继续拔下这个模块用万用表量,唉,板子是坏的,谜团又出来了。没招啊!追根溯源,检查原理图!又是悲剧啊!实际情况不是hw同事说的一模一样啊。插入检测的GPIO只是连到了主soc的GPIO上,而那边base板子是一边连在主SOC上,同时又练到了audio codec上,codec上有register可以检测这个pin电平,直接读这个register就可以了。问题总算发现了,解决起来也不算费劲。因为以前的detect程序里有使用codec的这个register的值做辅助碰到,这也是有好处的,可排除一些干扰、毛刺脉冲什么的。问题就出在,现实已经这样,那就改呗!去掉codec的register的辅助动作,改为判断电平值,问题解决了。有问题的时候,是样样要怀疑啊,否则受累的还是sw。

 

问题四:light sensor不能正常工作

 

     light sensor用的是2771,别名我们觉得它跟apds的一款差不多。存在的问题,一旦加载这个light sensor的时候,android系统不能进入,DVM一直在喊冤啊!就是进不了系统啊,到不了我们那熟悉又陌生的android桌面。为什么呢?这个驱动很成熟了啊,并且在加载驱动的时候,它的reg都是能读出来的,理论上大局已定啊!可是眼前的问题是系统都进入不了,崩溃啊!再一次看原理图,检查了IRQ的中断GPIO,是个复用脚,又仔细检查了系统控制复用的寄存器设置,没有问题,配置的是GPIO功能。让HW量了量这个GPIO,是低电平,而2771要的初始状态是低电平中断,初始状态应该是高电平,问题点是找到了,顺藤摸瓜,

再接再厉,客户在主板上的接法跟提供的参考机是一样的,但是这个sensor在小板上,小板上有上拉电阻的,客户没有学到家啊!可是我们的hw同事给人家review的时候也没发现。啊,一个小电阻啊!把庞大的android系统都弄挂了,强大!加上这个上拉后,light sensor工作正常了。从这个问题得到的经验就是怀疑,大胆的怀疑加有理的分析。客户的错也是我们的错,我们的目的还是帮客户批量嘛!客户赚大钱,我们也赚点小钱。

 

问题五:小问题几个

 

    小问题还是有一些的,比如g-sensor的方向,这个试几次也能得到正确的设置,这次用的是BA250,也是比较常用的。还有系统开机的屏亮度,在系统待机后resume后,不一样,resume后回来更亮一些,跟了一下发现同事写的代码有一个漏洞,就是在开背光使能的时候强制写了个亮度值进去,并且是比较亮的值,这种问题还是比较直观,比较好解决。电池校准也还好,有工具接上去几分钟就好了!WIFI无法连接,发现问题是没写mac地址,写入系统后,功能正常。还有一些小问题都一一解决了。

 

     调试一块新板子,真是不容易啊!耐心、细心、疑心,心心相通,脑力、体力、努力,力力相融。bring up板子还是有一些学问的,技术、经验也很重要,也是一件比较辛苦

的差事!一个星期能达到目前的状态,凭心而论,一个半软件工程师真的努力了,辛苦了!愿后面的项目越来越顺利,愿客户的项目能批量出货。

目录
相关文章
|
6天前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
5天前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
22天前
|
JavaScript 前端开发 Android开发
让Vite+Vue3项目在Android端离线打开(不需要起服务)
让Vite+Vue3项目在Android端离线打开(不需要起服务)
|
23天前
|
IDE 开发工具 Android开发
安卓与iOS开发对比:平台选择对项目成功的影响
【9月更文挑战第10天】在移动应用开发的世界中,选择正确的平台是至关重要的。本文将深入探讨安卓和iOS这两大主要移动操作系统的开发环境,通过比较它们的市场份额、开发工具、编程语言和用户群体等方面,为开发者提供一个清晰的指南。我们将分析这两个平台的优势和劣势,并讨论如何根据项目需求和目标受众来做出最佳选择。无论你是初学者还是有经验的开发者,这篇文章都将帮助你更好地理解每个平台的特性,并指导你做出明智的决策。
|
25天前
|
Java 开发工具 Android开发
安卓与iOS开发:平台选择对项目成功的影响
在移动应用开发的浩瀚宇宙中,安卓和iOS两大星系璀璨夺目,各自拥有独特的光芒。本文将穿梭于这两个平台之间,探讨它们在开发环境、用户群体、成本效益等方面的差异,以及这些差异如何影响一个项目的航向和终点。我们将从初学者的视角出发,逐步深入,揭示选择合适平台的重要性,以及如何根据项目需求做出明智的选择。无论你是即将启航的新手开发者,还是已经在这片星海中航行的老手,这篇文章都将为你提供有价值的导航信息。
41 2
|
1月前
|
Java 开发工具 Android开发
探索安卓与iOS开发的差异:平台选择对项目的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各自占据着重要的位置。本文旨在深入探讨这两个平台在开发过程中的主要差异,包括编程语言、开发工具、用户界面设计、性能优化以及市场分布等方面。通过对比分析,我们将揭示平台选择如何影响项目规划、执行效率和最终成果,为开发者在选择适合自己项目需求的平台时提供参考依据。
|
2月前
|
IDE 开发工具 Android开发
探索安卓与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚,引领着技术进步的潮流。本文旨在深入剖析这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计以及市场分布等方面。通过对比分析,我们不仅能更好地理解每个平台的独特优势,还能洞察这些差异如何影响项目决策和最终成果。无论你是开发者还是企业决策者,了解这些内容都将助你一臂之力,在选择适合自己项目的开发平台时做出更明智的决策。
|
2月前
|
IDE 开发工具 Android开发
探索iOS与安卓开发的差异:平台选择对项目成功的影响
【8月更文挑战第22天】在数字化时代,移动应用成为企业和个人展示创意、提供服务的重要工具。iOS和安卓作为两大主流平台,各自拥有独特的优势和限制。本文将深入探讨这两个平台在开发过程中的主要差异,以及这些差异如何影响项目规划、用户体验和市场策略。通过比较分析,旨在为开发者和企业决策者提供有价值的见解,帮助他们根据项目需求做出明智的平台选择。
|
2月前
|
Android开发
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
【Azure 环境】记录使用Notification Hub,安卓手机收不到Push通知时的错误,Error_Code 30602 or 30608
|
2月前
|
SQL 分布式计算 大数据
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
Android项目架构设计问题之平衡技术选型与业务需求之间的关系如何解决
36 0
下一篇
无影云桌面