P89C51RD2隐藏功能分析
电子元件,电子元器件深圳市创唯电子有限公司
您现在的位置: 首页 > 电子技术
P89C51RD2隐藏功能分析  2012/3/1
摘要:提出了一种读取P89C51RD2隐藏分区的方法,并给出了1KBootROM区以外分区的部分程序。通过分析这些程序,找到了P89C51RD2隐藏的特殊功能寄存器,并基于这些程序分析了其flash的底层操作。1引言P89C51RD2是PHILIPS公司的8位单片机产品。在保证80C51指令系统和硬件结构的大体框架的同时,扩充了许多功能,包括看门狗、ISP功能和Flash操作。值得一提的是,PHILIPS的技术并非完全公开,这就给单片机的使用带来了一定的困难。比如说

     摘  要: 提出了一种读取P89C51RD2隐藏分区的方法, 并给出了1K Boot ROM 区以外分区的部分程序。通过分析这些程序, 找到了P89C51RD2隐藏的特殊功能寄存器, 并基于这些程序分析了其flash的底层操作。

1  引  言

P89C51RD2是PH ILIPS 公司的8位单片机产品。在保证80C51指令系统和硬件结构的大体框架的同时, 扩充了许多功能, 包括看门狗、ISP功能和F lash操作。值得一提的是, PH ILIPS的技术并非完全公开, 这就给单片机的使用带来了一定的困难。

比如说, 它的Boot ROM 区本来是4K 字节, 但在手册中只提及了1K 字节, 其他部分程序隐藏调用, 这就给程序设计带来了很大的麻烦。同时, 除了手册中提及的高位地址特殊寄存器区, P89C51RD2 还设计了一些特殊功能寄存器, 对这些寄存器的意外访问也有可能造成芯片的异常。因此, 有必要对这些功能区进行分析, 以找出其所有单片机资源。

2  Boo tROM 固件代码的读出

对于1K ( 地址FC00H ~ FFFFH ) Boot ROM 的flash代码读取方法, 参考文献已经有提及, 这里只是在此基础上进行进一步分析。下面来看PGM _MTP入口地址的部分代码。

PUSH 0E4H ; 保存E4H值

ORL 0E 4H, # 80H ; 置位E4H 最高位

PUSH PSW

ACALL 0F9ADH ; 调用看门狗服务程序

C JNE R1, # 00H, 0FF4FH

ACALL 0F9D9H ; 读生产批号子程序

通过这部分程序可以看出, Boo tROM 区调用了0F9ADH 地址中的子程序, 而从手册上, 只写出有FC00H ~ FFFFH 地址。所以, 这是一个需要特殊访问的flash区。同时, 程序还控制了E4H, 这个特殊功能寄存器也是手册里面没有提及的。鉴于P89C51RD2有专门的控制位来控制1K flash, 假设还有一个控制位, 位于E4H 的最高位, 也是通过置位方式, 能够得到flash切换的效果, 只要程序中首先置位了E 4H, 就可以通过movc 指令得到隐藏区的程序。实践证明这个假设是对的, 从F000H ~FFFFH 都读出了数据, 其中F000H ~ F7FFH 地址中全为0。而F800H ~ FBFFH中存在1K 可执行程序,并且这些程序就是PGM _MTP调用的隐藏子程序。

通过反汇编这一区间程序, 可以找到全部flash底层操作的程序。所以实际的P89C51RD2的f lash 空间分布应该如图1所示。

手册里面1K 字节的Boo t ROM 区, 实际上是由一个4K 的flash块构成的, 其中2K 字节的flash最终被填写进00H, 另外2K 用于实现Boot ROM 的实际操作。所以, 用户也可以将这2K 的地址空间, 作为用户的使用空间, 存放一些需要保留的重要数据。

3  部分子程序分析

P89C51RD2多余的1K 程序空间写满了程序。

这些程序都是由FFF0的子程序调用的。通过反汇编这一段子程序, 能够知道单片机的底层操作细节。

由于篇幅所限, 这里面仅列出flash写操作的部分程序, 有兴趣的读者可以依照上面的方法反汇编所有程序进行分析。以下是编程数据字节子程序的反汇编结果。

; 编程数据字节一级子程序

F9C9: 75 E4 91MOV 0E4H, # 91H ; E4H 未公开

F9CC: 31 D1 ACALL 0F9D1H ;

F9CE: 65 E5 XRL A, 0E5H ; 返回E5H 参数

F9D0: 22 RET

; 编程数据字节二级子程序

F9D1: F5 E5MOV 0E5H, A

F9D3: 31 25 ACALL 0F925H ; 多入口子程序,连续写和读E6H, flash操作

F9D5: 75 E4 80MOV 0E4H, # 80H

F9D8: 22 RET

; 编程数据字节三级子程序

与《P89C51RD2隐藏功能分析》相关列表
电话:400-900-3095
QQ:800152669
库存查询
Copyright(C) 2011-2021 Szcwdz.com 创唯电子 版权所有 备案号:粤ICP备11103613号
专注电子元件代理销售  QQ:800152669  电子邮件:sales@szcwdz.com  电话:400-900-3095