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板子还是有一些学问的,技术、经验也很重要,也是一件比较辛苦

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

目录
相关文章
|
1月前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
102 1
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
85 2
|
1月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
129 0
安卓项目:app注册/登录界面设计
|
2月前
|
IDE Android开发 iOS开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
【9月更文挑战第27天】在移动应用开发的世界中,Android和iOS是两个主要的操作系统平台。每个系统都有其独特的开发环境、工具和用户群体。本文将深入探讨这两个平台的关键差异点,并分析这些差异如何影响应用的性能、用户体验和最终的市场表现。通过对比分析,我们将揭示选择正确的开发平台对于确保项目成功的重要作用。
|
7天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
31 5
|
14天前
|
安全 搜索推荐 Android开发
Android vs. iOS:解锁智能手机操作系统的奥秘####
【10月更文挑战第21天】 在当今这个数字化时代,智能手机已成为我们生活中不可或缺的伙伴。本文旨在深入浅出地探讨两大主流操作系统——Android与iOS的核心差异、优势及未来趋势,帮助读者更好地理解这两个平台背后的技术哲学和用户体验设计。通过对比分析,揭示它们如何塑造了我们的数字生活方式,并展望未来可能的发展路径。无论您是技术爱好者还是普通用户,这篇文章都将带您走进一个充满创新与可能性的移动世界。 ####
25 3
|
1月前
|
Ubuntu Linux Android开发
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
本文介绍了如何在Android设备上安装Termux和AnLinux,并通过这些工具运行Ubuntu系统和桌面环境。
113 2
termux+anlinux+Rvnc viewer来使安卓手机(平板)变成linux服务器
|
16天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
34 2
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
1月前
|
Web App开发 Android开发
利用firefox调试安卓手机端web
该教程详细介绍如何通过Firefox浏览器实现手机与电脑的远程调试。手机端需安装最新版Firefox,并按指定步骤设置完成;电脑端则需安装15版及以上Firefox。设置完成后,通过工具栏中的“远程调试”选项,输入手机IP地址即可连接。连接确认后,即可使用电脑端Firefox调试器调试手机上的Web信息。注意,调试前手机需提前打开目标网页。
45 2
下一篇
无影云桌面