爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 354|回复: 4
收起左侧

[教程] 我的6688

[复制链接]
发表于 2006-4-5 18:30:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册会员 微信登录

x
我的6688  不开机了刚才调完电参  一试不开机了
用电参工具再读提示67  无法读取
发表于 2006-4-6 08:04:22 | 显示全部楼层
前辈的文章,希望对你有帮助!



因调整电压导致Block67读写失败怎么办

cool_lang 2003-04-12 22:41:38
  
??最近有一些朋友因为调整电压导致Block67读取失败,sensorstool不能再操作手机,出现错误“Error:Unable to read Eelite BlockID=67 info"而同时手机不能开机。这种情况,有的朋友没有备份EEP,只能写别人的EEP。很麻烦!其原因主要是当刚刚连接到手机,所有的数字还是0的时候,有的人按了write phone,导致Block67被全部置0。
??这是我在第一次发表这篇文章时的观点,因为今天看来,这是错误的。对此我非常惭愧,这是我在没有充分证据的情况下发的,想当然而的观点,所以特地写了一篇修正版,以正视听。
??其实这个问题是因为sensorstool的Bug。我在《6688经验半月谈》里曾经说过EEPROM的数据结构和存储。这里再说以下,在EEP里数据是索引存储的,其索引的数据结构如下:
??EEPROM Block Directory Record format:
??Offset Size  Des cription
??------ ----- ----------------------------------------------
??00  BYTE  Record starting marker [00,F0,FC] 记录标志为00,
??F0或FC00= Unused block?  不用的Block
??F0= Deleted block? 删除的Block    
??FC= Used block?   当前有效的Block    
??01  BYTE  Version. [00..05]
??Always zero in LBA_FS & EE_FS blocks.
??Only EELITE blocks that has 04 & 05.
??02  WORD  Size
??04  DWORD Linear address of data   此处为Flash地址
??08  WORD  ID             为平常说的BlockXX,如Block67
??0A  BYTE  ??? [00,01,02]
??Always zero in EEFULL & EELITE blocks.
??Always 02 in LBA_FS & EE_FS blocks.
??0B  BYTE  Record ending marker [00,F0,FC,FF]
??FF= No more record
??在6688中,Block67(43H)是和电压相关的,也就是大家平时所说的电压参数。同时也是Sensortool所修改的Block。它的大小是20个字节。具体含义如下:
??Battery status (0043):
??- 0000H : BattMin Data1
??- 0002H : BattMin Data2
??- 0004H : BattMax Data1
??- 0006H : BattMax Data2
??- 0008H : BattTemp Data1
??- 000AH : BattTemp Data2
??- 000CH : EnvTemp Data1
??- 000EH : EnvTemp Data2
??- 0010H : VCXOTemp Data1
??- 0012H : VCXOTemp Data2
??注:以上资料来自于RizaPN,这个我没有研究过。
??而sensortool所使用的Blk文件就是Block的缩写,因为这些数据是和手机硬件相关的,所以Block67存储在EELITE(C000H-FFFFH)中,大家可以打开看看。但是Sensortool有个问题,因为他每次写入新的电压参数时都是把原有Block索引的记录标志字节(Record starting marker )由FC改为F0,既又正在使用改为删除,而新建一条索引来把这个Block放在一个新位置。这样索引(索引表都是放在后面,可参考半月谈)是向上增加,而Block数据是向下增加的。那么总会有这种情况发生,就是最新的位置已到了索引表的位置,那么就会发生冲突。我猜测sensortool是先删除记录,再新建索引表,但这时已发现没有空间来建立Block了,但他并不恢复删除的记录,所以所有的Block67的索引表都被标为F0(删除),所以系统中没有Block67的索引表,所有的工具在读写这个Block时都会发生错误,手机也会。我之前的错误是以为Block的所有字节都被置为0。
??解决的办法是非常的简单的:
??如果你备份了自己的EEP,那么只须重新写入就可以了。所以我一直强调要备份EEP,最好是低版本的原始EEP,所谓不战而屈人之兵。
??如果你没备份自己的EEP,你只需读出EEP,然后找到某一条(因为有很多条)Block67的索引记录,然后把它的头和尾的录标志字节(Record starting marker )由F0为FC即可。寻找的办法是用HEX编辑器打开,如UltraEdit,然后查找430000F0,会找到很多条记录,你因该修改找到的第一条的纪录,也就是最新的纪录(因为索引表是向上增长的),如F00114003EFBFF00430000F0,其中的3EFBFF是Block的实际地址(Flash地址,对应于文件地址是5FFB3E,FFFB3E-A00000)。你需要修改头尾的F0为FC,即FC0114003EFBFF00430000FC就可以了。然后把它写回到手机。
??下面是实例图:
??此主题相关图片如下:
??写了这么多是因为我喜欢知其然也知其所以然。
??至于每个手机都有不同的电压参数的问题,做过电子产品的朋友都知道,电子产品都会在某些部位有一个微调电阻、电容或其他,来根据某个批次的元器件特征来校准设备,因为所有的元器件都有一个误差范围,这根据不同的适用范围而不同(比如军品就误差较小),价格也不同。而手机充电也是根据一个A/D转换电路来控制充电的范围,所需要的数字量就从这个Block读取。记得一个朋友说过,在手机出厂前会用一个标准设备(类似电池)来测试这个数字量,并得到一个保守但安全的值。所以我们可以认为自己手机的电压参数在出厂时基本是合适的,如果我们想最大可能的榨取电池的能力(仿佛是DIY的精神),可以在自己的参数上微调,使之范围略宽于标准的3.6V-4.2V,增强待机时间。
??最后还是说不推荐使用别人的EEP和电压参数。
回复 支持 反对

使用道具 举报

发表于 2006-4-6 08:41:56 | 显示全部楼层
皮爸爸很不错的说~~~~~
回复 支持 反对

使用道具 举报

发表于 2006-4-6 09:53:08 | 显示全部楼层
呵呵,谢谢斑竹奖励!偶曾经也是新手,大家都不容易啊!
回复 支持 反对

使用道具 举报

发表于 2006-4-15 13:49:33 | 显示全部楼层
怎么搞出来呀?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员 微信登录

本版积分规则

小黑屋|Archiver|手机版|爱技术 ( 沪ICP备08115260号-3 )

GMT+8, 2024-5-26 05:08

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表