打印

遇到奇怪的问题,肯请老虾救命~~~

[复制链接]
楼主: shunpu
手机看帖
扫描二维码
随时随地手机跟帖
21
conwh| | 2007-7-20 14:29 | 只看该作者 回帖奖励 |倒序浏览

你用51试下,就简单把EA拉高,512照常使用

使用特权

评论回复
22
ptt1234| | 2007-7-20 15:03 | 只看该作者

不需擦除27C512

想办法将27C512的A13脚接地(当然断开CPU的对应脚),在运行程序就知道和原来是不是一样,如果运行一样,那8K后无数据.

使用特权

评论回复
23
shunpu|  楼主 | 2007-7-20 16:14 | 只看该作者

现在基本可以确定

27512的8K以后没有数据,我已经检查过了。救火车提的方法很好,不过现在我还没法试验,我的27C512是OTP写入的,没法擦除,我重新搞一块片子实验。

  还有,对不起各位大虾,我有很重要的一点没有说明。原来这个系统的27C512的/E脚以及6264的/CS1脚都是由一片GAL16V8输出信号控制的,我原来以为对程序从片外移到片内不会产生影响,可能是犯错误了。

  各位对GAL16V8在此的应用有什么看法?

使用特权

评论回复
24
shunpu|  楼主 | 2007-7-20 16:19 | 只看该作者

GAL16V8的接法如下

使用特权

评论回复
25
conwh| | 2007-7-20 17:32 | 只看该作者

GAL应该是个可编程器件,也就是有加密功效

使用特权

评论回复
26
gyt| | 2007-7-20 20:04 | 只看该作者

这样情况就比较复杂了

建议还是多用一片512来得方便。否则就可能要找加密的地方并且修改程序,那就不是一般的麻烦了:)

使用特权

评论回复
27
conwh| | 2007-7-20 20:19 | 只看该作者

这样作到真正还原是很难的,你可以简单把EPROM里的内容读出

再把在系统的每个字节读出来,再相互比较,才能找出算法。

使用特权

评论回复
28
conwh| | 2007-7-20 20:20 | 只看该作者

也有的编程器能够读出GAL的运算逻辑

使用特权

评论回复
29
太阳之母| | 2007-7-20 21:45 | 只看该作者

512使用了不止8K吧?

从512的地址线接法上看,512使用了8K以上的容量(14根地址线与51连接了)

使用特权

评论回复
30
太阳之母| | 2007-7-20 22:17 | 只看该作者

呵呵,加密了啊!

虽然从物理上看,27512只用了前面的8K(或16K),但由于使用了GAL加密,逻辑上看,也许远远超过8K(或16K)的地址范围了,估计源代码是用汇编写的,一个ORG就可以把某段代码放到64K内任意的地方,再用GAL收拢到8K(或16K)的范围内。试着看看反汇编,留意:所有的LCALL 指令和LJMP指令!
留意:所有的LCALL 指令和LJMP指令!看看是不是对应的目标地址超出了8K(或16K)???
基本可以断定:有一个或多个目标地址超出了!!!

举例如下:
       ORG     0100H
       ... ...
       LCALL    SUB1;从下面的ORG 8800H可以看出,这等价于 LCALL 8800H
       ... ...
       ... ...

       ORG     8800H
SUB1:  ... ...
       ... ...
       RET
正常情况下,子程序SUB1定位在地址8800H处,但可以把SUB1的代码烧写在27512的非8800H地址开始的地方(比如0800H),通过GAL对地址的重新译码就可以从逻辑上正常地反问这些代码了(比如,把8800H 译码成0800H并拉低片选线)。

使用特权

评论回复
31
shunpu|  楼主 | 2007-7-21 08:14 | 只看该作者

谢谢各位,我明白了一些

原来的源代码就是用汇编写的,并且情况的确如太阳之母说的那样,仔细察看反汇编过来的程序,地址上有超过8k的情况。

我一直认为是硬件上出现了问题,所以就忽视了仔细分析程序,现在经过指点,才有些恍然大悟。

还想问大虾有没有好的解决办法?
要不我就要开始着手准备重新设计了,不过原来的问题不解决,心里不痛快啊。

使用特权

评论回复
32
shunpu|  楼主 | 2007-7-21 08:28 | 只看该作者

程序地址如下



应该是有超过8k地址的情况了。
.......
LJMP    00C6H
LJMP    1C75H
LJMP    753EH
........
LJMP    1DD3H
LJMP    9040H
NOP
MOVX    A,@DPTR
CJNE    A,20H,1E59H
RET
.......
MOV    A,#40H
CJNE    A,DPL,1EA1H
MOV    DPTR,#8800H
MOVX    A,@DPTR
MOV    SBUF,A
JNB    SCON.1,1EC1H
CLR    SCON.1
JNB    SCON.0,1EC6H
CLR    SCON.0
MOV    A,SBUF
INC    DPTR
MOV    A,#8EH
CJNE    A,DPH,1EBEH
MOV    A,#40H
CJNE    A,DPL,1EBEH
SETB    SCON.5
RET
........
LCALL    1382H
MOV    14H,#30H
MOV    DPTR,#9E70H
MOV    A,16H
SWAP    A
ADD    A,15H
MOVX    @DPTR,A
........

使用特权

评论回复
33
tage| | 2007-7-21 08:54 | 只看该作者

楼主也是的,用16v8也不早告诉大家一下,

你应该弄个好编程器先把GAL16V8的逻辑读出来,然后重新分析组合汇编程序。改跳转地址什么的。要把它弄好写到内部eeprom中够你分析的了,

使用特权

评论回复
34
shunpu|  楼主 | 2007-7-21 09:34 | 只看该作者

不好意思,应该早说的

在此谢谢所有给我指点的各位,我准备把先把GAL16V8的逻辑读出来,仔细分析一下,还会继续向大家请教呢.

使用特权

评论回复
35
HWM| | 2007-7-21 09:37 | 只看该作者

LZ:别这么辛苦了,不如重新搞一个。

使用特权

评论回复
36
shunpu|  楼主 | 2007-7-21 09:43 | 只看该作者

已经在重新搞了,不过

原来的这个问题很奇巧,就想把它解决了.

现在我已经重新构思设计一个新的系统,不用原来的构架了.

使用特权

评论回复
37
shunpu|  楼主 | 2007-7-21 09:48 | 只看该作者

有一个问题

百思不得其解,就是既然GAL16V8把地址搞乱了,烧片子不行,为什么仿真器在同样的条件下就可以运行,并且很正常?

 还请各位指点!

使用特权

评论回复
38
救火车| | 2007-7-21 10:06 | 只看该作者

我有个想法请大侠再指点

楼主在10楼说的:“对了,还有重要的一点就是,我用仿真器跑这个程序,效果非常好,比原来用8031时要好得多,但就是不知道烧片子怎么就不行了 ??”
请问用仿真器跑时,仿真芯片选的是8031还是8052?

我有个想法,能否借助仿真器,在ljmp lcall处点断点,单步执行到跳转后。再搜索跳转后地址的程序的16进制码,查找到真的正程序位置。我不敢砍确定,这个办法一定可行,请大侠再指点。

使用特权

评论回复
39
shunpu|  楼主 | 2007-7-21 10:19 | 只看该作者

我选的仿真芯片是P89C52X2

因为仿真器是功能还可以,可选的芯片很多,都是51和52的。

----------------------------------------------------------
仿真CPU:P89C52X2
  全面支持仿真P8xC52X2系列MCU,以及每机器周期6/12时钟,开启关闭ALE特性,双DPTR特性。支持仿真AT89C52, AT89S52, W78E52与P8xC52X2功能相同的部分。
----------------------------------------------------------
仿真模式0:标准8xC51系列单片机,完全仿真P0/P2口特性
    支持仿真标准80C51系列单片机80C51/52/54/58/516片内4K/8K/16K/32K    
/64K ROM版本的单片机。
    与片内ROM对应的空间由仿真器内部存储器提供超出片内ROM空间,由
[设置菜单|设置仿真器|程序仿真存储器映像]选项对话框设置决定取自仿真器
内部存储器还是目标系统存储器空间。
----------------------------------------------------------

使用特权

评论回复
40
救火车| | 2007-7-21 15:28 | 只看该作者

看36楼 知道你重新做了。这样最彻底。

不过我还是想打听一下。
用仿真器跑的时候,跑的是片内程序还是片外程序。
用仿真器跑的时候27512插着没有?
有没有拔下27512的情况下用仿真器跑过?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则