手机软件工作原理(1)
手机的雏形十分类似于对讲机,最早出现在20世纪40年代,曾在第二次世界大战用于军事通话,是后来的“大哥大”的前身。哪个时候还没有手机软件的概念,手机上也没有任何增值的服务。后来手机逐渐从军用转为商用`民用,随着手机用户需求的不断扩充,手机几其软件技术也不断发生着变化。“手机软件”对绝大多数人来说,是一个陌生的字眼。其实他造就存在于我们的手机中。有没有想过,我们手机中各式各样的游戏实际上就是一个个小小的软件!甚至,简单的查询一个电话号码,也依*软件来实现。现在网上就有许多下载手机软件的地方,这些软件花样繁多,功能不一,可以满足我们同的需求。首先,我们可以通过软件来设定手机的开几或待机的界面,相信你一定看过一些手机的显示屏上有一些好看的图片或着是自己的名字,这都是软件的功劳;其次,你可以下载一些游戏软件来丰富手机中的游戏;听惯了一成不变的铃声,你一定想别出心裁的加进你喜爱的音乐吧!没问题,时尚化手机音乐编辑软件可以帮你实现这个梦想。当你自己编辑的铃声引得别人侧耳时,你是否也有一点小小的成就感呢?软件在手机中的作用不仅仅是这些,以上只是为应有层服务的,真正技术的飞跃还是要从地层做起。现在,就有许多手几制造厂商以及软件提供商上在做这方面的研究。我们作为维修人员,当然好应该知道许多写字库软件`解锁软件`升级软件等,这些软件都是针对不同品牌的手机服务的。手机软件技术也可按技术含量高低分为三层:技术含量低的是人机界面软件,稍高一些的是接口软件和模块软件,最高的是基础通信软件。 |
手机软件工作原理(2)
手机中一个最基本的单片机系统主要由下列几部分组成:
1 CPU(中央处理器):这是手机单片机系统核心。
2 储存器:包括两个部分,一个ROM,它是来存储程序;二是RAM,它是来储存数据。ROM和RAM两钟储存器是有所不同的。
3 输入/输出(I/O)接口:这一接口电路分为两种:一是并行输入/输出接口;二是串行输入/输出接口。这两种接口电路结构不同,对信息的传输方式也不同。
4 定时器/计数器:单片机的许多应用中,往往需要进行精确的定时并产生方波信号,这要由定时器/计数器电路来完成。
5 时钟系统:手机中常见是13MHz和好32.768kHz.
微处理器的上述五个基本部件电路之间通过地址总线(AB),数据总线(DB)和控制总线(CB)连接在一起,再通过输出/输入接口把手机整个单片机系统与外部电路联系起来。
手机的单片机系统是由一个中央处理器(CPU),程序存储器(ROM),数据存储器(RAM),输出输入接口(I/O)和总线(BUS)等构成的既相互独立又紧密联系的完整的系统。
单片机系统是整部手机的指挥中心,CPU就是总指挥,是单片机系统的处理核心,它相当于人的大脑,对手机进行射频部分控制(包括接收,发射及频率合成器),控制关机,控制键盘,控制显示,其它集成电路的控制及相互之间的数据传送。单片机系统所有操作动作指令的接收和指令的执行,各种控制功能,辅助功能等都在 CPU的管理下进行,同时,CPU还要担任各种运算工作。通俗的讲,CPU相当于“人脑”和“算盘”的作用,其中“人脑”用来指挥单片机系统的各项工作, “算盘”则用来进行各种数据的运算。所以,在手机中,CPU起着指挥中心的作用,在工作过程中,CPU发出各控制指令,使整个单片机系统在处理过程中能自动地,协调一致的进行。随着单片机技术的发展,手机控制用的单片机从以前的8位机发展到现在的16位机,8位机(有8条数据总线D0-D7)应用在很早已前的机型如爱立信398`788;诺基亚2110;摩托罗拉的7200`7500等。而现在的手机大多数都是16位机(共有16条数据总线D0-D7),如摩托罗拉V998,V60/V66`V70;诺基亚8210/8250`3310,3330,三星N628,T208等等的新机型手机均是,相对8机来说,16位机可以完成更多的功能,如:中文输入,WAP上网,语音功能等.
手机的软件就是放在逻辑系统里,而逻辑系统基本上是由一个单片机系统组成的。
众所周知,GSM手机逻辑系统的核心元件是中央处理器,大家把它叫CPU。它具有数字信号处理器(DSP)与微控制(MCU)的功能。
CPU 是根据指令来工作的。一连串的指令集组成了一个完整的(CPU)工作程序,程序的运行与计算机往往还需要相关的数据参数,比如:射频控制参数,包括频率和成器参数`接受参数`发射参数`功率控制参数等;逻辑控制,包括显示参数`语言参数`串号`电池门限参数`放大器增益参数;而软件就是控制程序和工作数据参数的总和。
在电子学中,单片微型计算机(One Chip Microcomputer)就是是微型控制器,简称单片机。单片的含义是这种微型计算机中只有一块主芯片(集成电路)。由于单片微型计算机的设计充分考虑了控制上的需要,它具有独立的硬件结构`指令系统和多种输入/输出功能的设计充分考虑了控制上的需要,它具有独立的硬件结构`指令系统和多种输入/输出功能,提供了十分有效的控制功能,所以称之微控制器.
微控制器作为微型计算机的一个重要分支,应用非常广泛,发展速度也很快,现代凡含有数字电路的家用电器中,包括移动电话几乎都不少不了微控制器。
微控制器在一块芯片(集成电路)上集成了中央处理器(CPU),储蓄器(RAM,ROM或EPROM)和各种输入/输出接口,定时器,A/D,D/A转换接口等点路,它是一块大规模集成电路。由于它具有许多使用于的指令及硬件支持广泛用于移动通信的控制系统中。
微控制器用于各种移动通信产品的集体电路(硬件)是有所不同的,但是它们的基本组成相同,最大的不同就是软件设计不同。具体到手机的电路中,由于单片集中的 CPU,储存器等并不是集成到一块芯片上,而是独立分开的,所以手机中的逻辑部分并非电子学上传同意义上的由一块单片机构成,而是能称之一个系统,所以我们说手机的核心部件是一个单片机系统
手机软件工作原理(3)
1 CPU的功能
CPU是手机的核心部分,各部分功能如下:
1信道遍解码交织,反交织,加密,解密。
2控制处理器系统包括:16位控制处理器,并行和串行显示接口,键盘接口,EEPROM接口,存储器接口,SIM卡接口,通用系统连接接口,与无线部分,的接口控制,对背光进行可遍程控制实时时钟产生与电池检测及芯片的接口控制等。
3数字信号处理:16位数字信号处理与ROM结合的增强型全速率语音编码,DTMF和呼叫铃音发生器等。
4对射频电路部分的电源控制。
2 内部结构
CPU内部由三大部分组成:一是运算器,想当于一个“键盘 ”;而是寄存器,相当是“纸张”;三是控制器,相当是“人脑”。
3 外部电路
CPU 内部个部件之间及CPU与外部逻辑部件之间交换和传输信息是有三条公共线(BUS),地址总线(DB),控制总线(CB)来完成的。在看手机的逻辑电路时,应重点注意各种控制信号,逻辑电路提供的射频控制信号。如:接收启动控制信号(RXCN或RXEN),发射机启动控制信号(TXON或TXEN),频率合成控制信号(SYN-EN,SYNDAT,SRNCLK)等。
在看不同厂家的手机电路时,应注意一些控制信号的名称可能不同,如射功率控制信号在诺基亚电路中被称为TXC;而摩托罗拉手机电路中则是PAC或AOC;在爱立信手机电路中为PWRLEV等。
4 工作条件
1),供电(VCORE CPU);),时钟(CLK clock); 3), 复位(RST reset)。
1) CPU的内部和外部通过三种总线与各部件之间进行联系,它们是地址总线,数据总线和控制总线。地址总线用来传送地址信息,它是一种单向传输总线,地址总线在三种总线中的数目最多,通常地址总线用A x x表示;数据总线是用来传送数据的总线,它是一种双向总线,它可用来传送CPU的输出数据,也可用来向CPU传送数据,一般情况下数据总线数目较多,常用 D x x表示;控制总线用来传送控制信息,它是一种单传输总线,对于CPU来讲,控制总线所传送的控制信号有的是输入信号,控制总线的数目要少些,通常用C x x表示。
手机单片机系统中的总线是由许许多多部件所共用的,各部件通过三态门挂在总线上。三态门有一个高阻状态,与总线脱离,此时对总线而言它就不是一个负载。正是由于三态门的着一特点,可以使许许多多部件同时挂在总线上而不使总线过载。总线在某一时刻只被一对部件使用(即总线一端接的是信号源部件,另一端接的是信号接收部件),在另一时刻总线又被另一对部件使用,这种由部件轮流使用总线的方法称为分时.
手机由于功能很多,软件复杂,存储容量大,所以CPU需要有两个存储器为其存放手机软件,那就是版本(Flash ROM)和码片(EEPROM),它们如同档案馆,又如同大仓库,我们叫存储单元内,分门别类的存放着各种资料,参数,表格和程序,为了方便地找到么每一个存储内容,每个小单元的地址都有二进制代码表示地址码,像门牌号一样,CPU要发出地址信息就是通过AB去访问格小单元。
存储器的分类如表2- 2-3所示,EEPROM,FLASH等均是非易失性器件,非易失性存储器最大的特色是在当电源关闭后,原先储存在内的资料,仍能够持续被保存,且可以被重复抹除修改;而其中的FLASH更是已成为仅次于DRAM的全球第二大存储器市场。比较二者的差异,可以发现FLASH的前景更被看好,主要的原因在于不同容量密度,设计架构的FLASH产品,在市场上各有不同的应用及区域,集中度及相互潜代性皆较低。
手机软件工作原理(4)
(一),电可擦可写可编程存储器(EEPROM electrically erasbi programmable)
EEPROM是一块存储器,俗称“码片”,二进制代码的形式存储着手机的资料,它存储的是:
1) , 手机的机身码;
2) ,检测程序,如:电池检测,显示电压检测等;
3) ,各种表格,如:功率控制(PC),数模转换(DAC) 自动增益控制(AGC)自动频率控制(AFC)等;
4) ,手机的随机资料,可随时存取和更改,如电话号码菜单设定等。
其中,码片中存储的一些系统可调节的参数,对生产厂家来说存储的是手机调试的各种工作参数及与维修相关的参数如电池门限,输出功率表话机锁,网络锁写;对于手机用户来说存贮的是电话号码本,语音记事本及各种保密选项如个人保密码,以及手机本身(串号)等等。手机在出厂前都要上调校台对手机的各种工作进行调试,以使手机工作在最佳状态。调试的结果就存在码片里,所以在不是在很必要的情况下不要去重写码片,以免降低手机的性能。
码片的分类:
1) ,按数据传输方式分:
1采用并行数据传输的并行码片:采用此种码片的手机都是一些较早期的手机如诺基
8810 ,3810,摩托罗拉8700,328,928等手机,型号如28C64等,由于并行,码片的数据线较多,不便于小型化,故现在手机中大多都不采用了。
1采用传行数据传输的传行码片:采用此种码片的手机比比借是:如三星N288 ,A288 ,T108 ,T408等等。型号有:24C16 24C32 24C256 24C512等。
2) 按管脚数分:
1 28脚码片,也就是并行码片了。
2 8脚码片,也就是传行码片,8脚码片又分大8脚(即管脚间有大小之分)。串口码主要由I2C总线与外界电路进行通讯,其中SDA为串行数据线,主要负责数据的传输工作,SCL为串行时钟线,主要负责传输数据的同步工作。此外还有WP ,A1 ,GND脚。码片出现故障可分两种情况:一是码片本身硬件损坏;二是内部存储的数据丢失。两种情况中以后者为常见,常出线“手机被(Phone Locked)” , “联系服务商” (CONTACTSERVICE) , 显示黑屏甚至不开机故障。硬件故障。硬件故障的“联系服务商” 是三星系列手机的经典故障, 多是由于三星的尾插进水导致保护元件击穿进而拉低SDA和SCL线的电压,使CPU 不能正常读取码片资料而引发故障,维修时一般把保护元件拆除即可!
3) 按封装形式分:TSOP28 TSSOP8 SO8 BGA8等。
3) 按容量分:128B,256B,512B,1KB,2KB······128B(24C1024)。
下面来说一下码片的管脚功能,现在以AT系列的码片进行简介,如表2-2-7所示
目前,随着集程度的增加,码片已快被“吃掉” ,不在单独存在(还存在的多为8脚码片),如V988+码片被集成在CPU内,而V988++码片集成再版内。进期手机还
单独保留码片的有三星手机,如A100 A188(24C56) 2200 2400 A288
(24C256) N628(25C521) N188(24C256)及爱立信T18 T28等
FlashROM为闪速只读存储器,有是又称FLASH,俗称版本字库。
它以代码的形式装载了手机的基本程序和各种功能程序。至今字库这个名词概念混,很不清楚,到底字库是什么呢?实际上我们可以这样区分,把它们分开叫比较易懂一些。字库一般可以分别叫程序存储器(称程序)和汉字库存储器(字存),那为什么人家不这样叫呢?这是因为先前手机设计时把汉字库作为一个存储芯片焊接在手机上,程序存储器版本也作为另一个存储焊接再手机上,而后来发展到把程序和字寸复合在一起,所以我们称之为字库罢了。字库的容量要比码片的容量大的多,常见的有32M 64及128M等。
字库在手机的作用很大,地位非常重要,具体作用如下:
1 储存主机主程序
2 储存字库信息
3 储存网络信息
4 储存录音
5 存储加密信息
6 存储序列号(IMEI码)
7 储存操作系统
手机软件工作原理(5)
FLASH 按工作电压可分为:5V 3.3V 1.8V 0.9V等几种。按其数据总线宽度可以分为8位数据总线宽度,16位数据总线宽度两种;按其总线和数据总线分离,低16位地址总线和数据总线合并,地址总线和数据总线合并三种;按其扇区分布可分为TOP BOTTOM两种;其封装形式具体有TSOP40 TSOP48 FBGA48 UBGA56 FBGA72 BGA80 BGA69 等等。根据其封装形式字库可分为二大类,第一是比教长见。第二类是BGA封装形式的,这种字库用在近期生产的各种手机上,如摩托罗拉V998,诺基亚 3210以及爱立信T28等手机。按其脚管的多少,手机的字库又可以分为以下两大类:一类为40脚的字库(如型号28F004,28F008);另一类为 48脚的字库(如型号28F800,28F160 F160等)。
字库的工作流程比较复杂:当手机开机时,CPU便传出一个复位信号REST经字库,使系统复位。再待CPU把字库的读写端 ,片选端选端后,CPU就可以从字库内取出指令,在CPU里运算,译码,输出各部分协调的工作命令,从而完成各自功能。
字库(FLASH)程序储存器的软件资料是通过数据交换端,地址交换端与微处理器进行通讯的。CE(CS)端为字库片选端,OE端为读允许端,REST端为系统复位端,这四个控制端分别者是由CPU加以控制。如果字库的地址有误或未选通,都将导致手机不正常工作,通常表现为不开机,显示字符错乱等故障现象。由于字库可以用来擦除,所以当出现数据丢失时可以用编程器或免拆机维修仪重新写入。和页码一样,字库本身也可能回损坏(既硬件故障),如果是硬件出现故障的话,就要重新更换字库。
字库其最大的特点是可擦写(即可编程),器件相对与以往的EPROM程序存储器而言,最大的优点是可以在系统编程(ISP-InsystemProgmmable),对于这种IAP技术简单点就是指电路版上的空白器件可以编程写入最终用户代码,而不需要从电路版上取下器件,已经编程的器件也可以用ISP方式擦除或在编程。一般通用做法是内部的存储器可以由上位机的软件通过串口来进行改写。对于单片机来将通过SPI或其它的串行接受上位机的数据并写入存储器中。所以即使我们将芯片焊接在电路版上,只要留出和上位机接口的这个串口,就可以实现芯片存储器的改写,而无须在取下芯片。说的通俗点,就是不用把字库从手机上拆下来,就可以用电脑配合传输线擦写字库,但不同的手机需要配合不同的工具软件来完成ISP(在系统可编程)。
随着手机功能的越来越多,手机的工作程序也越来越大,相应的手机的字库容量也越来越大。例如摩托罗拉328英文手机的字库型号为 28F800,容量为1M字节,寻址线宽A0-A18共19条地址线。到了摩托罗拉V988的时候,寻址线宽A0-A19共20条地址线。而V988++ 的字库型号为28F320,容量为4M字节,寻地线宽A0-A20共20条地址线。由于上面的例子可以看出,字库的地址总线的线宽是随字库容量的增加的,每多出一条高位地址线,则字库的容量增加一倍。
手机软件工作原理(6)
1 新型的FLASH,例如320C3B等,在常规存储区域后面还有128Bit的特殊加密,其中前64Bit(8字节)是唯一器件码(64BitUniqueDeviceIdentifier),每一个字库在出厂时已经带有,并且同一种字库型号不会有相同的编码,哪怕这个字库是全新空白的字库。后来64Bit为用户可编程OTP单元(64BitUserProgrammableOTPCells),可以由用户自用设定,单只能写入,不能擦除。
2 目前有部分手机例如西门子,NEC等,是采用64Bit 唯一码进行加密,
(1) 手机生产前,所有字库的内容都是同一写如的。
(2) 手机生产完成后,开机自检,自检程序判断唯一码,并根据唯一码的编号,再常规储存区域写入相应的信息,因此出厂的手机字库是完全不一样的。
(3) 手机厂商的这种做法是为了保护其自身的产权不收到非法抄袭。
(4) 很多维修工作者也尝试过,把一部正常使用的手机字库拆下来,把资料读出来并写入一颗全新字库,并装回到另外一部手机,哪怕是同一部手机上面,也不能正常使用,例如西门子的就是显示两行英文。其原因是手机开机后判断字库的唯一代码是否和主存储区域的相对应,如果不对应,就显示错误信息。
3 作为正常的维修前途,可以借助一些工具来找到唯一码的解秘方发的。如用凌凯LK48,UP48,选带“LOCK”或“-MLOCK”的选型 ,如320C3OCK,可以把唯一器件码和用户可编程OTP单元读出来,然后通过对比等方法找到解密的方法。
2·2·3 数据存储器(PAM random access memory)
前面我们谈的ROM是存储器,它们是程序资料和数据的“家”,有长期存放的概念,即使段电也依然保留。而RAM俗称赞存,顾名思义是暂时寄存。前加S是静态的意思,SRAM平时没有资料,只是单机片系统工作时,为数据和信息在传输过程中提供一个存放空间,像旅途中的“旅店”,她存放的数据和资料断电就消失,主要型号有0101、0201、0401、及0612A、062127、062137、062147等。现在存在仍是单机片系统中必不少的数据存储器,其最大的特点是寸取速度快,段电后数据自动消失。随着手机功能的不断增加,单片机系统所运行的软件越来越大,相应的PAM的容量也越来越大,从早期的几十K 到几百K再到今天的几M比特
从维修的角度来讲,暂存只要不需焊,器件不损坏即可。在新型手机中,暂存慢慢地看不到了,比如西门子1118、2118;摩托罗拉T90;夏新A8等,是没有了吗?不是,
只是被封装在CPU或字库中而已。比如常见的21118的CPUPMB6850内带1M暂存,其容量同V998单加的暂存62127一样大小。而T190的CPU自带2M暂存,其“没有暂存”的原因也很明白。当然,暂存空间不足或损坏也会引起诸如死机、不开机等故障。
在以前较旧的一些机型当中,CPU、FlashromEEPROMSRAM等芯片是独立的,维修时看极板就知道哪个是CPU,哪个是字库、码片,如诺基亚5510/6110/7110/8810/3210,三星S600/800/2200等机型。随着存贮技术的发展,器件的集成度越来越高以及手机于小型化,故此现在较新的手机均采用复合结构的芯片简单点说就是把一块芯片集成或者封装进另一片芯片中,纵观现在较新的手机,暂存及码片很多都已经“不存在”了,因为它们有些
被封近CPU或字库中,如上文所说的摩托罗拉T190的CPU就带有2M暂存了,诺基亚8310的CPU带有8M的暂存。字库的功能更是越来越大强大,很多码片或暂存被集成至字库,形成一个复合结构的字库,这种复合字库的功能十分强大,被广泛应用在新型的手机中。
手机软件工作原理(7)
字库这种复合结构有以下几种形式:
1字库+暂存形,如:三星系列手机N628/A188/A388/A408······/T408/T508等,摩托罗拉V70等。三星N628复合字库,
2、字库+码片形,如:摩托罗拉V988、V60等。
3、字库+暂存+码片型的复合结构的应用越来越广泛,但由于程序的繁多以及程序设计的不完善往往会容易引起各种故障,对于软件技术基础薄弱的国产机型,采用此种组合都很容易引起软件故障,各位读者在维修时要小心了。
以上详细的介绍各种逻辑芯片,下面就具体介绍一下常见的芯片识别的方法。要全面了解一块集成电路的用途、功能、基本参数,那必须知道该集成电路的型号及其产地。一般集成电路芯片其正面都印有型号或标记,从而根据型号的前缀或标志就能初步知道它是那个生产厂或公司的集成电路产品,根据其数字就能知道属哪一类的电路功能。
集成电路产品型号的前缀一般为公司代号,如:AM-AMD公司、AT-ATMEL公司、 MC-摩托罗拉公司、X-XICOR公司等。特殊的如Intel,把前缀代表生产厂的英文字母省略掉的集成电路,一般来说,通常会把自己生产厂或公司的名称商标打印上去。各产品的中间数字相同的型号一般可互换。通常习惯(不严格)的称谓::74XX、74HCXX、54XX、40XX、45XX、 28FXXX、29LVXXX。如果电路对元件要求比较严格,就要对厂家提供的资料进行分析再做决定。例如AN5620,前缀AN说明是松下公司双极型集成电路,数字“5620”前二位区分电路主要功能,“56”说明是电视机用集成电路,而70~76属音响方面的用途,30~39属录象机用电路。详细情况请参阅产生厂集成电路型号的命名。以及手机维修长见的28Intel28和AMD29LVXXX两类芯片为例,。
2·2·4 I/O接口(I/O Intterface)
输入/输出接口常用I/O接口表示,I是指输入接口,是英文IN的简写。O是指输出接口,是英文OUT的简写。
输入/输出接口电路是指CPU与外部电路、设备之间的连接通道及有关的控制电路。由于外部电路、设备中的点平大小、数据格式、运行速度、工作方式等均不统一,一般情况下是不能与CPU相兼容的(即不能直接与CPU连接),这些外部电路和设备只有通过输入/输出接口的桥梁作用,才能进行相互之间的信息传输、交流并使CPU与外部电路、设备之间协调工作。
由于I/O部件在结构和工作原理上与CPU有很大的差异,它们都有各自单独的时钟、独立的时序控制和状态标志。CPU是个高速部件,与I/O部件工作在不同速度下,所以它们之间的差别一般能够达到几个数量级,同时CPU与外围I/O部件进行数据交换时必须引入相应的逻辑部件,解决两者之间的同步与协调,根据格式转换等,总体上说,I/O接口的基本功能如下:
A、参与单片机内数据的传输操作,选择输入、输入部件。
B、参与控制完成选定的I/O部件与CPU及其它部件之间的数据交换。
手机软件工作原理(8)
1、接口的作用
1) 现数据缓冲,使CPU与相关外部电路的I/O部件在工作速度上达到匹配。
2)、实现数据格式的转换。
3)提供外围部件和接口的状态,为CPU更好的控制各种外围部件,提供有效的帮助。
4)、实现主机与外围部件之间的通讯联络控制。
2、接口的种类
手机接口是个很广义的概念,主要有以下几种分类方法:
1)、按手机电路功能分类:
有模似接口、数字接口(MMI manand moleile interface)。
2)、按数据传输宽度分类:
有并行接口、串行接口。
3)、按操作的节拍分类:
有同步接口、异步接口。
4)、按数据传送控制方式分类
可将接口分为有程序的控制的I/O接口、程序中断I/O接口和直接存储器存取(DMA)接口等三种。
虽然手机输入/输出接口种类繁多,不同的外部电路和设备需要相应的输入/输出接口
电路,但可利用编制程序的方法具体确定接口的工作方式、功能和工作状态。
2·2·5定时器/事件计数器
为了提高单片机的实时控制能力,一般单片机内都设有定时器电路。定时器有两种类型:一是增量计数器;二是减量计数器。
当定时器溢出时,增量计算器产生中断并作标位置位;当定时器回零时,减量计数器产生中断。
有的定时器还具有自动重新加载的能力,这使得定时器的使用更加灵活方便,利用这种功能很容易产生一个可编程的时钟。
此外,定时器还可以作为一个事件计数器,当工作在计数器方式时,可从指定的输入端输入脉冲,计数器对其进行计数运算。
2·2·6 时钟系统
时钟系统是单片机的重要系统,单片机的工作是按部就班的,按一定规则排列时间顺序的定时,就是由时钟系统控制的。时钟信号单片机执行指令时要做的操作按先后顺序排好,并给没一个操作规定好固定时间,这样就要可以使单片机在某一时刻只做一个动作,实现电路的有序工作。
而它工作的快慢又和手机的状态有关大多数的手机在开机时因需要处理的文件多,时间要求短,时钟多为13MHz,而在待机或休眠时有32.768kHz就足够了。这有点类似于电脑CPU的主频,这也就是为什么手机开机时13MHz频偏一点无所谓,只要有足够的振幅可以传送数据就行了,而如网时才和基站不住校准的原因之一。
MTK驱动指南
GPIO设置篇
一、GPIO有关的函数
1.GPIO_ModeSetup:
函数原型:void GPIO_ModeSetup(kal_uint16 pin, kal_uint16 conf_dada)
功能:设置GPIO的工作模式是作为GPIO,还是作为专有功能接口。
参数:
pin:GPIO 的pin脚号,对应于原理图上MTK62XX 主CPU芯片的上的GPIO标号
conf_dada:值有0~3。其中0是表示作为GPIO模式,其他根据专有功能的不同进行设置。
2.GPO_InitIO
函数原型:void GPIO_InitIO(char direction, char port)
功能:初始化GPIO的工作方向是作为输入,还是作为输出
参数:
direction:工作方向,0表示输入,1表示输出
port:GPIO的pin脚
3.GPIO_ReadIO
函数原型:char GPIO_ReadIO(char port)
功能:从GPIO读取数据
参数:
port:GPIO的pin脚
4.GPIO_WriteIO
函数原型:void GPIO_WriteIO(kal_char data, kal_char port)
功能:往GPIO写数据
参数:
data: 1表示给高电平,0表示给低电平
port:GPIO的pin脚
备注:这些函数在Gpio.C中可以找到。
二、GPIO模式设置
GPIO口在系统上电的时候,有的是默认高电平,有的是默认低电平,这是MCU内部决定的,软件无法更改,但是在系统开机过程中,会对GPIO进行初始化,MCU中有几个GPIO模式初始化寄存器,通过这个寄存器给GPIO设置初始模式。
例如:以下这个寄存器就是用来设置0-7号GPIO的模工作模式的。
这个初始化过程在Gpio_Drv.C中的函数GPIO_init()中,项目开始的时候,先要检查这个部分的模式设置是否正确。
三、各个功能模块的GPIO设置
1. LCD背光,马达
有的LCD背光是靠GPIO进行控制的,有的则靠PMIC进行控制。但不管那个方式进行控制,都只需修改Custom_equipment.c中的相关部分就可以了,具体如下:
首先,检查数组
GPIO_MAP_ENTRY gpio_map_tbl[] = {
{GPIO_VAILD, GPIO_PORT_24, netname[GPIO_LABEL_LCD_BACKLIGHT], NULL },
。
。
。
};
将没有使用的GPIO,用GPIO_INVALID给屏蔽掉。
然后,修改函数custom_cfg_gpio_set_level,在对应的GPIO类型上将控制函数添加进去即可。比如:
switch(gpio_dev_type)
{
case GPIO_DEV_LED_MAINLCD:
if( gpio_dev_level == LED_LIGHT_LEVEL0)// LEVEL0- LEVEL5是背光由若到强的控制,LEVEL0表示关闭背光
GPIO_WriteIO(GPIO_OFF, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );
else
GPIO_WriteIO(GPIO_ON, custom_cfg_outward_gpio_port(GPIO_LABEL_LCD_BACKLIGHT) );
PWM2_level(gpio_dev_level);
break;
2. 蓝牙
在文件bt_hw_define.h中参照原理图进行对应GPIO的修改。
#define BT_GPIO_RESET 52//39 //GPIO_39 : PMIC reset
#define BT_GPIO_DSC 36//;4 //GPIO_4 : to disconnect RFComm link
#define BT_GPIO_POWER 4//12 //GPIO_12: Power
#define BT_GPIO_DATASELECT 0//;3 //GPIO_3: DataSelect
3. Camera
在文件Camera_hw.c和sccb.h中参照原理图进行对应GPIO的修改。
【Camera_hw.c】
#define MODULE_POWER_PIN 6 // GPIO NO.
#define MODULE_RESET_PIN 12 // GPIO NO.
#define MODULE_CMPDN_PIN 13 // GPIO NO.
【sccb.h】
#define SCCB_SERIAL_CLK_PIN 8
#define SCCB_SERIAL_DATA_PIN 9
4. TouchPanel
在文件Touch_panel_spi.h中参照原理图进行对应GPIO的修改
#define SPI_DIN_PIN 1 //17
#define SPI_CLK_PIN 8 //20
#define SPI_DOUT_PIN 38 //22
#define SPI_CS_PIN 9 //23
#define SPI_BUSY_PIN 5 //21
四、总结
GPIO的设置相对来讲比较简单,只要仔细参对原理图,基本上就可以将GPIO配置好。当然有些时候GPIO配置好了也达不到效果,就需要和硬件工程师一起来进行检测分析,测量对应电路的工作电压或电流,来判断工作是否正常。总之在前期的调试方面,多跟硬件工程师沟通、讨论、分析,会很快解决问题。
? 中断调试篇
中断调试一般来说包括以下几个方面,一一做简单介绍:
1. 中断号匹配
这个部分在文件eint_def.c中进行设置,参照原理图设置即可。
2. 中断触发方式的设置
在文件eint_def.c中,首先要对中断的触发响应时间进行设置,是在数组变量custom_eint_sw_debounce_time_delay中。一般情况下这个部分是不用动的,但有时候中断触发有问题的时候,这就是一个调试点。比如对于Touchpanel的中断,对应的响应时间一般是0,如果不是0,就需要修改。
另外,因为中断触发分电平触发和边沿触发,电平触发又分高电平触发和低电平触发,边沿触发又分为上升沿触发和下降沿触发,因此先需要跟硬件工程师了解对应的中断触发方式,然后在对应的中断初始化的地方修改触发方式。
3. 中断处理流程调试
有时候中断设置好了,对应功能也不能正常使用,那么就需要调试中断处理流程了,需要增加trace,一般我们会用系统带的trace函数kal_prompt_trace,有时候调试这个函数不能正常工作,那么我们就用这个文件中的函数sys_print打印trace信息,要使用这个函数,需要在系统最开始启动的时候,调用sys_uart_init进行初始化。这个函数库是在6228平台上做的,可能在其他平台上寄存器因为不同,需要进行修改。
往往在调试的过程中,经常发现是给芯片供电方面出了问题。因为有时候MTK给过来的代码,在他们的参考设计上是一种供电方式,但是在我们的设计上可能就是不一样了。所以在找到芯片供电部分代码的时候,查找对应资料,看是否调用正常。
----------------------------------------------------------------
dbg_print怎么打开?
哪个宏控制呢?
DRV_DEBUG打开后串口还是没有信息出来
make\drv\drv.def
中加入DRV_DEBUG
我一般在dbgprint.c里面直接修改
#if 1//def DRV_DEBUG
#if 1//(!defined(IC_MODULE_TEST))
--------------------------------------------------------------------
{
char buffer[50];
sprintf(buffer, "ERROR");
rmmi_write_to_uart((kal_uint8*)buffer, strlen(buffer), KAL_TRUE);
}
MTK中如何新增按键
目前已经进行的尝试如下:
1、修改keypad_def.c文件中的按键定义,按照硬件定义修改,比常用的键多处5个,依次填好;此处可判断基本不会出错。
2、修改globalconstants.h文件的mmi_keypads_enum定义,在MAX_KEYS键前添加自定义的5个按键;
typedef enum {
KEY_0= 0,
KEY_1,
KEY_2,
KEY_3,
KEY_4,
KEY_5,
KEY_6,
KEY_7,
KEY_8,
KEY_9,
KEY_LSK,
KEY_RSK,
KEY_CSK,
KEY_UP_ARROW,
KEY_DOWN_ARROW,
KEY_LEFT_ARROW,
KEY_RIGHT_ARROW,
KEY_SEND,
KEY_END,
KEY_CLEAR,
KEY_STAR,
KEY_POUND,
KEY_VOL_UP,
KEY_VOL_DOWN,
KEY_QUICK_ACS,
KEY_CAMERA,
KEY_IP,
KEY_ENTER,
KEY_WAP,
KEY_EXTRA_1,
KEY_EXTRA_2,
/*******/
KEY_Q1,
KEY_Q2,
KEY_Q3,
KEY_Q4,
KEY_Q5,
/*******/
MAX_KEYS, /* max key codes support */
KEY_INVALID =0xFE
} mmi_keypads_enum;
3、修改kbd_table.h文件,添加5个按键的device宏定义,添加在MAX_DEVICE_KEYS前,同时顺延修改MAX_DEVICE_KEYS的值;
#define DEVICE_KEY_Q1 28
#define DEVICE_KEY_Q2 29
#define DEVICE_KEY_Q3 30
#define DEVICE_KEY_Q4 31
#define DEVICE_KEY_Q4 32
#define MAX_DEVICE_KEYS 33
4、修改timerevents.h文件的,在UI_TIMER_ID_BASE之前添加自定义的timerid例如KEY_TIMER_ID28到KEY_TIMER_ID32;
5、修改keybrd.c文件的PresentAllKeys、nKeyPadMap;
nkeypadmap的尾巴上添加如下内容:
{DEVICE_KEY_Q1, KEY_Q1, KEY_TIMER_ID28, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_Q2, KEY_Q2, KEY_TIMER_ID29, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_Q3, KEY_Q3, KEY_TIMER_ID30, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_Q4, KEY_Q4, KEY_TIMER_ID31, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_ONCE},
{DEVICE_KEY_Q4, KEY_Q5, KEY_TIMER_ID32, TONE_KEY_HASH, DEVICE_AUDIO_PLAY_ONCE},
最后应注意的问题 : 宏定义的问题
若保存后new完毕,按键不起作用,检查一下是不是宏定义的问题。
ROM、RAM、DRAM、SRAM和FLASH的区别
ROM和RAM指的都是半导体存储器,ROM是Read Only Memory的缩写,RAM是Random Access Memory的缩写。ROM在系统停止供电的时候仍然可以保持数据,而RAM通常都是在掉电之后就丢失数据,典型的RAM就是计算机的内存。
RAM 有两大类,一种称为静态RAM(Static RAM/SRAM),SRAM速度非常快,是目前读写最快的存储设备了,但是它也非常昂贵,所以只在要求很苛刻的地方使用,譬如CPU的一级缓冲,二级缓 冲。另一种称为动态RAM(Dynamic RAM/DRAM),DRAM保留数据的时间很短,速度也比SRAM慢,不过它还是比任何的ROM都要快,但从价格上来说DRAM相比SRAM要便宜很多,计算机内存就是DRAM的。
DRAM分为很多种,常见的主要有FPRAM/FastPage、EDORAM、SDRAM、DDR RAM、RDRAM、SGRAM以及WRAM等,这里介绍其中的一种DDR RAM。
DDR RAM(Double-Date-Rate RAM)也称作DDR SDRAM,这种改进型的RAM和SDRAM是基本一样的,不同之处在于它可以在一个时钟读写两次数据,这样就使得数据传输速度加倍了。这是目前电脑中用得最多的内存,而且它有着成本优势,事实上击败了Intel的另外一种内存标准-Rambus DRAM。在很多高端的显卡上,也配备了高速DDR RAM来提高带宽,这可以大幅度提高3D加速卡的像素渲染能力。
内存工作原理:
内存是用来存放当前正在使用的(即执行中)的数据和程序,我们平常所提到的计算机的内存指的是动态内存(即DRAM),动态内存中所谓的"动态",指的是当我们将数据写入DRAM后,经过一段时间,数据会丢失,因此需要一个额外设电路进行内存刷新操作。
具体的工作过程是这样的:一个DRAM的存储单元存储的是0还是1取决于电容是否有电荷,有电荷代表1,无电荷代表0。但时间一长,代表1的电容会放电,代表0的电容会吸收电荷,这就是数据丢失的原因;刷新操作定期对电容进行检查,若电量大于满电量的1/2,则认为其代表1,并把电容充满电;若电量小于 1/2,则认为其代表0,并把电容放电,藉此来保持数据的连续性。
ROM也有很多种,PROM是可编程的ROM,PROM和EPROM (可擦除可编程ROM)两者区别是,PROM是一次性的,也就是软件灌入后,就无法修改了,这种是早期的产品,现在已经不可能使用了,而EPROM是通过 紫外光的照射擦出原先的程序,是一种通用的存储器。另外一种EEPROM是通过电子擦出,价格很高,写入时间很长,写入很慢。
举个例子,手机软件一般放在EEPROM中,我们打电话,有些最后拨打的号码,暂时是存在SRAM中的,不是马上写入通过记录(通话记录保存在EEPROM中),因为当时有很重要工作(通话)要做,如果写入,漫长的等待是让用户忍无可忍的。
FLASH 存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据(NVRAM 的优势),U盘和MP3里用的就是这种存储器。在过去的20年里,嵌入式系统一直使用ROM(EPROM)作为它们的存储设备,然而近年来Flash全面 代替了ROM(EPROM)在嵌入式系统中的地位,用作存储Bootloader以及操作系统或者程序代码或者直接当硬盘使用(U盘)。
目前Flash主要有两种NOR Flash和NADN Flash。
NOR Flash的读取和我们常见的SDRAM的读取是一样,用户可以直接运行装载在NOR FLASH里面的代码,这样可以减少SRAM的容量从而节约了成本。
NAND Flash没有采取内存的随机读取技术,它的读取是以一次读取一块的形式来进行的,通常是一次读取512个字节,采用这种技术的Flash比较廉价。用户 不能直接运行NAND Flash上的代码,因此好多使用NAND Flash的开发板除了使用NAND Flah以外,还作上了一块小的NOR Flash来运行启动代码。
一般小容量的用NOR Flash,因为其读取速度快,多用来存储操作系统等重要信息,而大容量的用NAND FLASH,最常见的NAND FLASH应用是嵌入式系统采用的DOC(Disk On Chip)和我们通常用的"闪盘",可以在线擦除。目前市面上的FLASH 主要来自Intel,AMD,Fujitsu和Toshiba,而生产NAND Flash的主要厂家有Samsung和Toshiba。
NAND Flash和NOR Flash的比较
NOR 和NAND是现在市场上两种主要的非易失闪存技术。Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年,东芝公司发表了NAND flash结构,强调降低每比特的成本,更高的性能,并且象磁盘一样可以通过接口轻松升级。但是经过了十多年之后,仍然有相当多的硬件工程师分不清NOR 和NAND闪存。
相"flash存储器"经常可以与相"NOR存储器"互换使用。许多业内人士也搞不清楚NAND闪存技术相对于NOR技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时NOR闪存更适合一些。而NAND则是高数据存储密度的理想解决方案。
NOR 是现在市场上主要的非易失闪存技术。NOR一般只用来存储少量的代码;NOR主要应用在代码存储介质中。NOR的特点是应用简单、无需专门的接口电路、传输效率高,它是属于芯片内执行(XIP, eXecute In Place),这样应用程序可以直接在(NOR型)flash闪存内运行,不必再把代码读到系统RAM中。在1~4MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。NOR flash占据了容量为1~16MB闪存市场的大部分。
NAND结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度也很快。应用NAND的困难在于flash的管理和需要特殊的系统接口。
1、性能比较:
flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数 情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
执行擦除时块尺寸的不同进一步拉大了NOR和NADN之间的性能差距,统计表明,对于给定的一套写入操作(尤其是更新小文件时),更多的擦除操作必须在基于NOR的单元中进行。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素:
* NOR的读速度比NAND稍快一些。
* NAND的写入速度比NOR快很多。
* NAND的4ms擦除速度远比NOR的5s快。
* 大多数写入操作需要先进行擦除操作。
* NAND的擦除单元更小,相应的擦除电路更少。
(注:NOR FLASH SECTOR擦除时间视品牌、大小不同而不同,比如,4M FLASH,有的SECTOR擦除时间为60ms,而有的需要最大6s。)
2、接口差别:
NOR flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。
NAND器件使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。
NAND读和写操作采用512字节的块,这一点有点像硬盘管理此类操作,很自然地,基于NAND的存储器就可以取代硬盘或其他块设备。
3、容量和成本:
NAND flash的单元尺寸几乎是NOR器件的一半,由于生产过程更为简单,NAND结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。
NOR flash占据了容量为1~16MB闪存市场的大部分,而NAND flash只是用在8~128MB的产品当中,这也说明NOR主要应用在代码存储介质中,NAND适合于数据存储,NAND在CompactFlash、 Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。
4、可靠性和耐用性: