爱技术

 找回密码
 注册会员

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 329|回复: 12
收起左侧

电池没电语音提示05.18更新运行指定文件,更新在置顶原帖中,同时请教云版主

[复制链接]
发表于 2008-5-18 17:28:45 | 显示全部楼层 |阅读模式

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

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

x
电池没电语音提示V2Beta(05.18更新,运行指定文件)

更新在置顶原帖中。请大家测试,谢谢!

请教云版主:
0x0EBDD0: E6FCF608E6FDC303DACF98ACDB00
0x50C8F6: 613A5C566F696365206E6F746963655C


E6FCf608E6FDC303是将0x50C8F6处的路径名压入栈内(?)提供给随后的函数调用,
我知道F6是对应的,但不知道C8-C0=08的转换和C303参数的来历。
不用反汇编确实很难搞清楚,本人的汇编知识也很有限,搞个补丁非常吃力。
谢谢!

[ 本帖最后由 ljmstock 于 2008-5-18 17:53 编辑 ]
发表于 2008-5-18 18:59:53 | 显示全部楼层
F608E6FDC303

03C3×4000+08F6-A00000
回复 支持 反对

使用道具 举报

发表于 2008-5-18 19:02:47 | 显示全部楼层
支持你的辛苦劳动
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-18 19:12:10 | 显示全部楼层
谢谢QQ!
回复 支持 反对

使用道具 举报

发表于 2008-5-18 22:32:35 | 显示全部楼层
coollang的文章。




1、80C166的一些知识。
    至于处理器的信息我就不介绍了(我也不懂),大家可以看166的手册。我只说一些和Flash紧密相关的存储器知识。166的架构和其他所有的嵌入式系统一样,分为内存和外存。段页式寻址。寻址空间16M。每段(seg)为0x10000,每个页(page)是0x4000。内存储器也就是RAM,我在Flash中看到的最大Page是37,所以RAM大小应该是880KB(0x4000 X 0x37)。6688系列的外存分为两部分6M的Flash(用的是INTEL的88C2和88C4)和MMC。6M的Flash被映射到0xA00000,进行统一寻址。而MMC则作为Dos的Fat格式的文件系统进行挂载,无需多说。其中6M的Flash又分为Rom部分和EEPROM,这么划分只是用法的不同。比如大家熟知的EEPROM指的是从5F0000开始的64KB。还有EE_FS。这个叫法是历史原因。早期的手机FLASJ(ROM)和EEPROM(存储动态数据)是分开的。现在只是用Flash的不同部分来处理。
    Flash地址和文件地址的转换,在手机内部是用统一的16M地址来处理Flash的。所以有如下公式
                    FlashAddress = FileAddress + 0xA00000。而转换为页地址则为
                    FlashAddress / 0x4000 = Page ;FlashAddress % 0x4000 = Offset。
    例如DAAF1234这个指令,DA表示CALLS函数调用。而AF5678则是被调函数的地址,其中AF是段地址(seg),而7856H(地位在前,高位在后)则是段内偏移量。
               FlashAddress = 0xAF7856,转换为文件地址则为0xF7856。
               Page = 0xAF7856 / 4000H = 0x2BD, offset = 0x7856 % 4000H = 0x3856。
    在一些资源(Image,Ringtone,Fonts)的索引中,地址就是以(page,offset)的方式存储,而在EEPROM索引中,是以FlashAddress的方式存储的。
回复 支持 反对

使用道具 举报

发表于 2008-5-18 22:39:19 | 显示全部楼层

回复 1# ljmstock 的帖子

6M的Flash被映射到0xA00000,进行统一寻址。
FlashAddress = FileAddress + 0xA00000
所以0x50C8F6在FLASH运行时是加载到F0C8F6

F0C8F6除以4000=3C3=商
F0C8F6-(3C3X4000)=08F6=余数
     
Page = 0xF0C8F6 / 4000H = 0x3C3, offset = 0xC8F6 % 4000H = 0x08F6


由上得出3C3*4000+08F6=F0C8F6,
回复 支持 反对

使用道具 举报

发表于 2008-5-18 22:47:36 | 显示全部楼层
可能狼大的文章很枯燥,或者说很抽象。SiemensDebugger这个软件就非常直观的剖析了FLASH的运行过程,比如狼大说在Flash中看到的最大Page是37,确实是这样。一些常用的系统数据,参照一下以前的补丁,都可以通过这个软件观察它在运行中的作用
回复 支持 反对

使用道具 举报

发表于 2008-5-18 22:52:22 | 显示全部楼层
1、80C166的一些知识。
    至于处理器的信息我就不介绍了(我也不懂),大家可以看166的手册。我只说一些和Flash紧密相关的存储器知识。166的架构和其他所有的嵌入式系统一样,分为内存 ... [/quote]

请问版主:166手册是指什么手册?我应该从哪里获得!可以讲明白一点吗?我想学习学习!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-18 22:52:27 | 显示全部楼层
谢谢云版主
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-5-18 22:57:06 | 显示全部楼层
这下搞清楚了。上午虽然把补丁作出来了,确没有想透。
回复 支持 反对

使用道具 举报

发表于 2008-5-18 22:57:46 | 显示全部楼层

回复 8# supermp3 的帖子

哈哈,166手册,我也没看过,你搜索下应该有的
回复 支持 反对

使用道具 举报

发表于 2008-5-18 23:01:53 | 显示全部楼层

回复 10# ljmstock 的帖子

我的6688所有补丁都是自己刷的,经常改要地址,所以除了DAXXXX  FAXXXX EAXXXX这种常见调用,就是要注意这种页地址转换的调用。

看多了补丁,许多补丁的写法都会很熟悉,一些系统数据 条件跳转,经常被用上。如果仅仅会汇编会编程,不了解6688的补丁,做补丁反而无从下手。
回复 支持 反对

使用道具 举报

发表于 2008-5-22 10:02:21 | 显示全部楼层
真是高手过招啊,看不懂。。

                               
登录/注册后可看大图
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-5 03:26

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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