维修网

 找回密码
 注册

QQ登录

只需一步,快速开始

微信扫码 , 快速开始

维修网 门户 数码摄录 查看内容

Sigmatel完全固件修改

2011-4-16 21:46| 发布者: weixiu| 查看: 106| 评论: 0

摘要: 经过本人对Sigmatel固件将近一年分析修改, 总结出以下6点修改方法,给各位对DIY固件感兴趣的朋友共享一下 1.改LCD初始化参数 如果LCD没有显示或显示对比度很高,那就需要换LCD控制芯片初始化参数。 LCDLCD ...

经过本人对Sigmatel固件将近一年分析修改, 总结出以下6点修改方法,给各位对DIY固件感兴趣的朋友共享一下

1.改LCD初始化参数

如果LCD没有显示或显示对比度很高,那就需要换LCD控制芯片初始化参数。

LCDLCD控制芯片初始化参数一般如下形式,00000C 00002F 000042 0000A6 0000A4 000021 0000A1 000081 00001A 0000AF 0000E0 0000C8 0000A1,这组参数位于resource.bin文件内,没有查找改数据的好办法,只能死找,看到相似的就是, 用上面这段参数替换(适合V128的LCD)。

如果显示上下相反,把0000C8改成0000C0

如果显示左右相反,把0000A1改成0000A0

特殊情况可能还要换LCD控制线。

三星samsung YEPP55固件就发现这个问题,经过如下修改LCD才有显示

BSET #$0A,X:$00F40M 换成 BSET #$09,X:$00F40M M=(0,1,3,9)

BSET #$09,X:$00F40M 换成 BSET #$0A,X:$00F40M

2.改对比度

如果还发现对比度过高,那就需要改对比度数据,用RESEDIT查找000081(LCD对比度设置命令),找到如下形式的程序段,将后一个参数改小。

MOVE #$000081,A //设置命令

JSR $lcdcmd

...

MOV #$00001D,A //对比度参数

...

JSR $lcdcmd

例如:YP55可以找到如下程序段:

MOVE #$000081,A //设置命令

JSR $XXXX

...

...

MOV #$00001D,B //对比度参数

ADD B,A

JSR $XXXX

3. 替换字库

修改字库一般采用替换法,就是从其他固件里导出字库,再导入目标固件。

第一步,先确定字库数据段位置。用RESEDIT打开固件,列表中间的数字是数据类型,字库数据由类型为2和9的几个数据段组成,

一般为2 9 9 9 2 9

图中315~31A的数据就是字库数据。

第二步:导出字库。用RESEDIT从源固件内一一导出这些数据。

第三步:导入字库。用RESEDIT打开目标固件,一一对应导入这些数据。注意:导入时一定要用我写的那个RESEDIT,RESEDIT会对数据段重新分配大小,而其他软件可能会丢失部分数据。

4.背光

如遇到背光常亮,先查找2f700a11f400(BSET #$0F,X:$00F411) 替换成000000000000(NOP),将其屏蔽,然后用排除法,排除LCD,FM控制等位指令,将余下的位指令逐一替换成2f700a11f400测试。

例如 YEPP55的背光

BSET #$09,X:$00F401 换成 Bclr #$0f,X:$00F411

Bclr #$09,X:$00F401 换成 BSET #$0f,X:$00F411

5.图位置修改方法:

这是固件里最难的一步,因为LCD显示屏大小不同,可能需要对大量图片做大小转换并改变显示位置,往往有个别图片很难找到。

显示程序一般形式:

MOVE B,X (X坐标)

MOVE A0,ID (图片的ID,就是用资源分析软件打开看到的图片序号)

MOVE A1,Y (Y坐标)

MOVE Y0,#$03000X

MOVE A0,Y:(R7)++

MOVE B,Y:(R7)++

MOVE A,Y:(R7)++

....

....

JSR $00XXXX

先找到图片ID,如图 (注意这个数字是10进制)

10进制的490转成16进制为1EA,就能找到下面程序段。

更改 MOVE #$000024,A 就可以改变X坐标,

#$000010,B可以改变Y坐标。

固件里语句的顺序及所使用的寄存器都不一定和例子相同,所以查找方法只能根据图片ID,然后再更改坐标值试验,

用RESEDIT查找方便点,还有对于一些连续的图片,固件中可能只出现第一张图片的ID。

6.按键

按键改法比较烦琐,方法是反复更换按键定义数据,总结出规律。

按键数据区查找方法:

用SRDBIN反汇编,打开StmpSys.sb.txt,找到如下形式的数据段,括号内的区域即为按键数据区,其中80开头的是功能数据。

10 XXXX: 000000 000000 000000 000003 00F420 00F422 000002 00F410 00F412 080000

10 XXXX: 00F420 00F422 000004 000003 00F420 00F421 00F423 000001 00F410 00F411

10 XXXX: 00F413 800000 00F410 00F411 00F413 400000 000002 00F410 00F412 000400

10 XXXX: 00F410 00F412 000800 000000(000080 000001 000008 000020 000000 000002

10 XXXX: 000010 000000 000100 000200 000010 000002 800002 000008 800008 000100

10 XXXX: 800100 000000 800200 000010 800010 000080 800080 000020 800020 000200

10 XXXX: 800001)000000 000000 000000 000000 000100 000000 000000 000000 000100

然后再用SBEDIT打开stmpsys.sb,找到上述数据区后,更换试验。

看完相信大家可以体会到修改固件很烦,不是一时半会就能改成的,所以改固件最重要的一点是不能轻易放弃。以上是我这近一年来修改固件得出的经验。


学习

好文章

已阅

支持

鲜花

路过

最新评论

QQ|申请友链|手机版|小黑屋|最新贴|维修网 ( 粤ICP备09047344号

GMT+8, 2024-5-9 02:01 , Processed in 0.234128 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部