MT6261A驱动

最近搞起了手机驱动,刚开始接手的工作都是MTK平台的功能机方案,从6250开始到6260,一边学习一边搞了LCD、Camera、Flash、Keypad、LED等。虽然是刚上手吧,但是我有深厚的单片机基础,又在学习STM32时候学习果uCOSII,学过ARM+Linux,所以对于搞功能机的驱动也是毫无困难。最近刚搞的是MT6261的,搞6250和6260时候还有个参考,有以前好使的代码,比猫画虎都能完成任务,但是6261的公司以前都没搞过,代码也是最原始的,所以这也是自己又一个台阶吧!

自我感觉以后要改一改以前学习的习惯,不能搞过了就搞过了,没过多久就忘了,时间一长看看自己曾经搞过的东西都怀疑那是谁的作品。以后要多做总结,不能懒,最好将自己的点点滴滴都记录一下,这样才有利于不断的总结,不断的进步!

言归正传,说说最近搞6261的过程吧!

搞6261其实挺蛋疼的,遇到不少麻烦。首先,拿到原始代码和板子之后首要任务就是先能够编译程序、下载、并且开机。原始代码经过一些定制后先要能够编译通过,这个经过老大一阵忙活就OK了。但是当我拿到板子,按照板子的原理设计,根据所选Flash型号在代码中更改后怎么也无法下载。一直提示的内容是软件的Flash_ID 和检测到的不一样,于是我就查找原因,正常情况下改Flash的配置只需要改动MemoryDeviceList和custom_MemoryDevice.h就可以,在custom_MemoryDevice.h中改成自己用到的Flash型号,在MemoryDeviceList中查找自己用的Flash型号,如果没有的话添加。别的地方没必要改动啊,这个纠结,一顿忙活,后来怀疑是Flash_Tool有问题,但是后来又搞了搞几个版本的都一样的,又在软件上一顿怀疑一顿改,但是都是不行,知道一周多厚查出来是硬件设计的问题,BB芯片上和Flash的接口应该是GPIO4~GPIO9,但是却接到了GPIO3~GPIO8,措了一个脚,简直晕死!查到原因后先做了简单的飞线,虽然丑,但是总算可以下载程序了!

为了更多的验证问题,下载OK后我又改动了一些内容,发现了一个问题:我用的Flash型号是W25Q128FWPIM,原来的MemoryDeviceList中有MTK_INTERNAL_W25Q128FWIM,用MTK_INTERNAL_W25Q128FWIM是不可以的,另外,在MemoryDeviceList_MT6250_Since11BW1212.xls中有W25Q128FWPIM这一栏,但是复制这一栏到MemoryDeviceList_MT6261_Since11CW1352.xls后却无法正常开机,现象为按下开机键后有开机画面但是停顿大概2秒后黑屏死机。这些关于Flash的配置区别在于后边的时序不一样,由此得出结论:Flash的配置关键是custom_MemoryDevice.h文件中改成自己选用的Flash型号,该型号和MemoryDeviceList中要完全一致,并且MemoryDeviceList中该Flash的时序等信息要准确无误!还有一个比较奇怪的问题是,这个下载不了的额问题确实和Flash_Tool下载工具有关系,我用1413和1432版本的无法下载,用1416和1420的可以下载,由此可见无法下载的问题和Flash_Tool确实有一定得关系。具体要看相关的支持文档。

程序可以正常下载后新的问题更让人头疼,下载后无法开机。按下开机键时候电流8MA----40MA变化,不稳定,松开开机键就掉到0MA,从串口看打印信息是这样的:

F1: 0000 0000

V0: 0000 0000 [0001]

00: 0000 0000

U0: 0000 0001 [0000]

G0: 0002 0000 [0000]

T0: 0000 00BE

Jump to BL

Init Start

Init done, 0xe1d713a

Jump to ExtBL, 0x6060

~~~ Welcome to MTK Bootloader V005 (since 2005) ~~~

**===================================================**

怎么改动就是这些,改了几个宏之后想抓Log,但是什么也没得到,在网上也找了很多相关资源,最后也没能说出个123,我手上除了自己公司的板子还有一块别的公司已经量产了的板子,出现的是同样问题,所以怀疑是软件问题,而软件问题究竟出现在哪里却不得而知。期间我还换了一块GD的Flash试了试,问题依旧、现象相同。从网上查资料问伙伴得到的唯一有用的信息就是说换一套代码试试,无奈之下又想办法搞了一套代码,本来想着这回手到擒来肯定就能开机了,但是却跟之前的代码一个现象,顿感蛋疼难忍啊!后来偶然的机会用公司其他的直流电源一试竟然奇迹般的开机了,闹了几天原来是我用的直流电源有问题,汗啊!不用直流电源改用电池,很快自己的板子和另外一块板子都能正常开机!不过后来注意到的是:

project.mak文件中

DCM_COMPRESSION_MAUI_INIT = TRUE

DCM_COMPRESSION_AUDIO_EFFECT = TRUE

DCM_COMPRESSION_SUPPORT = TRUE

DCM_COMPRESSION_MAUI_INIT = TRUE

这几个宏如果不开的话也不能正常开机。

手机终于开机了,下边就要调试LCD屏,没有显示接口调其他东西就想漆黑夜里走路,你很难知道自己是什么情况=----是对还是错?!

而调试移植LCD就相对简单了,打电话问了LCD的FAQ关于LCD的接口什么的信息就动手改了起来,我用的屏是四,1data串口接法,数据传输MCU是8Bit,color是8Bit-565,这样配置接口信息,然后将LCD厂家给的LCD的Init设置填到LCD的Init函数中重新编译LCD就正常点亮了,至于其他的屏的旋转、镜像什么的额只需改动Init函数中相关寄存器的值就OK!此时需要注意的是如果数据接口配置不正确就会造成数据传输有问题,虽然也会有一定的显示,但是都是不正常的,比如我刚开配置接口信息是三线2data模式,LCD一直白屏;设置成MCU是16Bit,color是16Bit-565就出现色彩一场并且LCD只有一半显示,并且显示的是在LCD  
1/4空间显示并排显示两个屏。

到此为止驱动的初步工作算是结束了,下一步再调什么也就比较顺畅了!

总结,其实这次遇到这么多的麻烦,话费这么大的精力和时间是做了很多无用功的,下载不了和不开机其实主要都是硬件的问题,但是却在软件上找了好几天。以后的驱动工作中一定要注意,遇到问题一定要先从硬件查起,在确定硬件没问题的时候再怀疑软件。

时间: 2024-10-23 08:49:10

MT6261A驱动的相关文章

艰辛五天:Ubuntu14.04+显卡驱动+cuda+Theano环境安装过程

题记:从一开始不知道显卡就是GPU(虽然是学计算机的,但是我真的不知道-脑残如我也是醉了),到搞好所有这些环境前后弄了5天时间,前面的买显卡.装显卡和装双系统见另一篇博客装显卡.双系统,这篇主要记录我怎么配置后面的环境,虽然中间重装Ubuntu三次,后面安装过程也没差别. 基础平台:64-bit,Ubuntu14.04 1.安装NVIDIA驱动(参考技术文章,基本是复制啊,蟹蟹作者~) (1) 在官网下载NVIDIA驱动,根据自己买的型号选择下载,放到 /home/lvxia/ 目录下面,我下载

jdbc驱动jar导入eclipse

在使用JDBC编程时需要连接数据库,导入JAR包是必须的,导入其它的jar包方法同样如此,导入的方法是 打开eclipse 1.右击要导入jar包的项目,点properties 2.左边选择java build path,右边选择libraries 3.选择add External jars 4.选择jar包的按照路径下的确定后就行了. Java连接MySQL的最新驱动包下载地址 http://www.mysql.com/downloads/connector/j 有两种方法导入jar包,第一种

13.Linux键盘按键驱动 (详解)

版权声明:本文为博主原创文章,未经博主允许不得转载. 在上一节分析输入子系统内的intput_handler软件处理部分后,接下来我们开始写input_dev驱动 本节目标: 实现键盘驱动,让开发板的4个按键代表键盘中的L.S.空格键.回车键 1.先来介绍以下几个结构体使用和函数,下面代码中会用到 1)input_dev驱动设备结构体中常用成员如下: struct input_dev { void *private; const char *name; //设备名字 const char *ph

Linux-hexdump命令调试event驱动—详解(13)

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 1.调试 键盘驱动 讲解 当我们insmod挂载了键盘驱动后,找到键盘驱动被放在event1设备里, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层,此时的用户层就是hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是: evdev_handle

微软要做用云量挖掘机,以技术驱动数字化转型快公司

今年7月,首次更名为"Inspire"的微软WPC全球合作伙伴大会上,微软宣布将所有与合作伙伴相关的角色都重新整合为一个新的部门:统一商业合作伙伴部门(One Commercial Partner),并进行了一整套的组织和流程改组,以适应云计算时代的用户需求与"用云量"规律. 2017年9月12日,微软大中华区副总裁.全球渠道事业部总经理.商业客户事业部总经理包嘉峰与媒体分享了这两个月微软商业合作伙伴部转型以来,微软自身所发生的变化以及为客户所带来的价值.根据包嘉峰

STM32F4XX高效驱动篇2 I2C

说到I2C很多用过STMF10X硬件I2C方式的工程师,都感觉有点头痛.大部分还是使用软件模拟的方式,I2C由于一般的工作频率是400,100KHz.所以在平凡读取,或所读数据量大时,使用这模拟的方式,还是比较浪费CPU有效工作时间的. 在之前的使用I2C的经历中,主要是I2C死锁问题让我也困扰了一段时间.不过后来经过多方资料,最后还是把这个问题解决了.以下驱动程序已集成了此功能. 什么是死锁,在I2C主设备进行读写操作的过程中.主设备在开始信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为

STM32F4XX高效驱动篇1-UART

之前一直在做驱动方面的整理工作,对驱动的高效性有一些自己的理解这里和大家分享一下.并奉驱动程序,本程序覆盖uart1-8. 串口驱动,这是在每个单片机中可以说是必备接口.可以说大部分产品中都会使用,更有甚者一个产品中用到8个串口.这样一个高效的驱动是决定您产品优劣的关键因素.本文主要针对STM32F4XX系列芯片做的一个驱动接口层.以减少您在开发项目时驱动方面所花费时间,以及为程序达到高效的处理为目的. 从51,pic到现在的STM32,个人感觉STM32这方面做的非常突出,丰富的使用模式,强大

Qt编译好的OCI驱动下载

在上文,我累赘了一大堆,给大家写了一篇Qt如何编译OCI驱动,在这里自然就不再累赘了,直接附上编译好的文件供大家下载: <Qt5.3.1+OCI驱动下载地址> 有经济来源的请传送:http://download.csdn.net/detail/u012433546/9922424 无经济来源的请传送:链接:http://pan.baidu.com/s/1boKG9lH 密码:7yj5 <Qt5.3.2+OCI驱动下载地址> 有经济来源的请传送:http://download.csd

QT5.6.0+VS2015编译MQSQL(ACCESS)X64数据库驱动

QT5.6.0+VS2015编译MQSQL(ACCESS)数据库驱动 1 说明 l 不建议QT5.6.0使用ACCESS数据库.如果想使用轻量级的数据库,可以使用Sqlite数据库. QT想要访问Access.SQL Server等数据库可以通过ODBC的方式来访问,但是QT较高版本已不提供ODBC驱动库,需要自己编译.QT5.6.0编译出来的数据库驱动是64位,但是不建议安装Access数据库,微软本身也不建议安装64位office. PS:为什么QT5.6.0不编译32位数据库驱动:编译数据