典型案例分析
1、拷勤打卡钟产品 QR-732,QR-733,原来的产品使用的单片机为 NEC 的 uPD78F9418,由于货源、成本的原因,需要换成一种低成本易采购的单片机,根据用到的资源我们选择了义隆 EM78P569 进行开发,这颗 IC 有 LCD 驱动,IO 口很多,有副时钟可以做实时时钟,正好符合要求,我们分析了原先的 NEC 程序代码,用义隆汇编代码重写,并按客户要求做了一些改进,园满完成任务。
2、客户的产品是电机变频器,原先用的 MCU 是 EE87C196CM,属于英特尔典型的工业级 16 位单片机,由于停产的原因,客户找到我们重新开发,但没有源代码,只能提供 BIN 文件,我们经过评估选定 dsPIC30F3011 重新开发,为了保证功能高度一致,我们对 BIN 进行了反编译,并分析汇编代码,然后用 C 重写,非常成功,得到了客户高度评价。 dsPIC30F3011 程序样本 196 程序样本
3、客户是做远程抄表系统的,由于工程师跑了,造成集中器程序无法修改以适应不同的表头,该集中器是无线的,内置中兴的 GPRS 模块,通过 485 总线采集读数后通过 GPRS 转到后台,采用华帮 MCU。客户要求我们用 C 重写整个程序,并做好注解,经过一个来月完成任务,客户非常满意。
4、因为货源的原因,客户需要把代码从 PIC18F6527 转到 PIC18F66K22,经过分析 Datasheet,发现这两颗 IC 属于同一系列、在引脚功能、内部资源、ROM 大小、EEPROM 大小、A/D 位数都差别不大,这就满足了转码的最基本要求,首先反编译 6527,再用 66K22 编译,一次就全部通过,很好,但不代表就可以直接使用,因为从资料上看,66K22 的寄存器位置、有些位标置、有些寄存器配置方法不一样,我们选定 6527 来反编译刚得到的 66K22 代码,得到的 ASM 再与原 6527 的 ASM 对比,发现有几十行代码不一样,这说明这里面所涉及到的寄存器在两个 IC 中处于不同位,我们重点核对这些寄存器在两个 IC 中的功能,如果一致,就不用更改,不一致就要人工修正。
这个产品用到了 ADC,原 6527 是 10 位,而 66K22 是 12 位,配置方法也不同,我们人工修正配置方法,再把采样结果从 12 位修改成 10 位的,新加入的代码放在了空白的地方,经过上机测试,功能完全 OK。依托我们强大的反编译技术,项目得到顺利完成。另一例是 PIC18F2480 转到 PIC18F25K80(汽车诊断仪 OBD-II,OBD2,Vgate SCAN ELM327 V1.5)。
5、客户之前采用腾富公司单片机 JA5857E,由于 IC 停产,只能提供 OBJ 代码,无源代码,找到我们希望把代码转换到其它 IC 上,经过研究,这颗 IC 与 EM78P447,MDT2020,FM8PE59,PIC16C57 都相互兼容,管脚封装一模一样,这样就不必修改 PCB 板,其中指令与 MDT2020、PIC16C57 最为接近,但从价格看 MDT2020 更便宜,所以我们推荐 MDT2020,并且成功转码。
6、成功破解菲林 feeling 单片机烧录时序,成功破解芯睿单片机烧录时序。