某型光电雷达系统中 GAL 芯片的解密方法研究
摘要:介绍了某型光电雷达电子机载系统中常用的GAL系列可编程控制器的源程序破解方法,对实际破解过程中遇到的问题进行总结分析,并给出一个维修测试方法,实验结果表明:采用superpro编程器结合ABEL编译器软件可以实现程序破解和烧录需求,能满足使用要求。
关键词:GAL可编程控制器;光电雷达;ABEL语言;破解 1引言
通用逻辑可编程器件GAL[1]是在PAL器件基础上发展起来的PLD器件,在结构和工艺上作了很大改进,由于其性能稳定,价格低廉一直被广泛应用于工业生产中,某型光电雷达系统中使用较多的是GAL16V8B和GAL20V8D这两种。为了提高对某型光电雷达系统相关电路板整体功能的了解和工厂修理能力建设,需要通过对相关芯片源程序的破解以了解其输出与输入的逻辑关系。
本文介绍的对GAL芯片的破解方法以GAL16V8B为例,先通过superpro编程器读取相关芯片熔丝图,获取其jed [2]文件,最后使用ABEL编译器将jed文件进行反编译来获取原始程序,并对反编译后的结果进行验证测试。 2读取GAL芯片的jed文件
将需要破解的GAL芯片放入superpro编程器中,直接读取芯片的熔丝图并保存成jed格式文件。文件格式如下所示: MODULE:SUPERPRO
TITEL:C:\\Documents and Settings\\Administrator\\桌面\\1.jed DD GAL16V8* DM LATTICE* QP20* QF002194* QV0* F0*
L000000 0000000000000000000000000000000000000000* ……………………………………………………
L002160 1111111111111111111111111111111110* C229B*
jed文件以ASCII码形式表示出熔丝图、测试、标识和注释信息,是软件编程和器件编程之间一种“中间代码”。文件以各自段标识开始,以“*”结束。第一段为设计规范,可以用户名及公司名、日期和器件编号等信息等,最后一行(如C229B)为校验和。jed文件字段通用含义见表1: 表1 jed文件字段定义
3对jed文件进行反编译
3.1 ABEL中相关dev文件提取
ABEL系列编译器是专门针对GAL等逻辑功能器件的开源编译器。ABEL编译器可在Windows界面下完成对GAL代码的全部编辑、编译以及反编译过程,也可以在DOS命令行执行相关命令生成abl文件获得源程序文件。
实际使用中常遇到无法获取器件信息等问题导致无法进行从jed文件到abl源程序的反编译。如使用DOS命令直接执行jed源程序反编译时报错如下: Fatal Error 6503: Device type must be specified.
要解决上述问题,首先要确保ABEL下有相应的可执行dev文件,以某型光电雷达系统中使用到的GAL16V8B为例,手动在DOS命令行执行ABELLIB library –e 工业标号.dev 格式命令进行释放其三种工作模式所需的文件即P16V8R.DEV(寄存器模式)、P16V8S.DEV(简单模式)以及P16V8C.DEV(复合模式),若不熟悉ABEL命令可以执行ABELLIB library进行查看,具体运行过程如图1所示:
图1 DOS运行ABELLIB命令
执行成功后在ABEL的库文件目录里可以找到对应DEV文件。GAL20V8芯片要生成对应DEV文件步骤和上述描述一样。常见的ABEL器件库中常用的PLD器件工业标号见表2所示:
表2 ABEL库中PLD器件工业标号
3.2 对jed文件修改
通过3.1步骤解决了DEV文件问题,重新在DOS命令行或者ABEL的
Windows界面进行jed文件反编译时还会报无法获取设备信息错,这是因为不同编程器生成的jed文件虽然格式上是熔丝图列表,但是在文件头部信息定义中不是ABEL标准格式,缺少设备信息类型定义,需要手工修改文件头部信息才能使用。
在添加设备类型信息时需要根据jed文件熔丝图中相关控制位来确定,否则反编译出来的程序会和实际不符。以GAL16V8B为例,根据芯片资料得知
GAL16V8有3种输出逻辑宏单元结构模式,即寄存器模式、复合模式和简单模式。适当连接器件的引脚线,由输出逻辑宏单元(OLMC)的输出/输入特性可以决定其工作模式,总体位SYN=2192 和AC0=2193控制所有宏单元的模式组态。 本文中的GAL16V8B芯片其jed文件中查看熔丝图的定义模式的控制字如L002160 1111111111111111111111111111111110*,该行*号前两位是第2192和2193位,值分别是1和0 ,因此这个GAL16V8的输出是简单模式,使用ABEL中P16V8S的工业标号。
修改jed文件头部为ABEL识别的格式,主要是增加对应器件的工业标号类型然后保存。然后打开ABEL编译器的windows界面,选择“反编译”,点击“打开”选择修改后的jed文件,再点击“编译”,如图2所示:
图2 ABEL运行界面
界面显示反编译出来的基于ABEL语法的源程序,程序开头是管脚以及属性定义,重点要关注的逻辑功能部分描述如下: EQUATIONS
Pin12 = !((!Pin01 )); Pin12.OE = 1;
Pin13 = ((!Pin03 & Pin04 & !Pin05 & Pin06 & !Pin08 )); Pin13.OE = 1;
Pin14 = ((!Pin03 & Pin04 & !Pin05 & !Pin06 & !Pin08 )); Pin14.OE = 1;
Pin15 = ((!Pin03 & !Pin04 & Pin05 & Pin06 & !Pin08 )); Pin15.OE = 1;
Pin16 = ((!Pin03 & !Pin04 & Pin05 & !Pin06 & !Pin07 ));
Pin16.OE = 1;
Pin17 = ((!Pin03 & !Pin04 & !Pin05 & Pin06 & !Pin07 )); Pin17.OE = 1;
Pin18 = ((!Pin03 & !Pin04 & !Pin05 & !Pin06 & !Pin08 )); Pin18.OE = 1; Pin19 = (( 0 )); Pin19.OE = 0;
对比源程序的芯片引脚定义和实际芯片使用情况,可以确定引脚使用情况是一致的。另外从中可以得出几个推论:
(1)输出管脚12的值会跟随输入引脚1的值变化; (2)输出管脚12、13等缺省是高阻状态;
(3)输出管脚13、14、15、16、17、18是由输入管脚3、4、5、6、7、8的组合逻辑产生,但逻辑关系是否正确需通过产品测试加以验证。 4测试信号认证
根据3.2节中反编译出来的芯片逻辑关系,可以初步推断在输出信号有效时(输出为1表示有效)的真值表如表3所示: 表3 逻辑真值表
根据某型光电雷达产品工作状态,该GAL16V8B芯片与429[3]通信有关,GAL芯片输出控制HS3282该429数据收发芯片的使能控制端。
以光电雷达产品进行大场扫描为例,采集Pin13信号,示波器D0~D7通道分别采集芯片的Pin1,Pin12,Pin3,Pin4,Pin5,Pin6,Pin8,Pin13信号,在计算机下达大场扫描指令的瞬间波形图如图3所示,Pin13输出负脉冲,在下降沿到达瞬间输入输出引脚逻辑关系和表3中逻辑关系一致。
图3 大场扫描时波形图
在光电雷达产品进行大场扫描、小场扫描、复位、垂直、光学命令时,均能在指令下达和结束瞬间采集到输入、输出引脚对应波形,输出信号均负脉冲,在下降沿到达瞬间输入输出引脚逻辑关系和表3中逻辑关系一致。
通过上述结果分析得知,该GAL16V8B芯片主要是控制HS3282芯片的使能信号来实现429信号接收和发送,且根据CPU发送的控制信号(芯片的
Pin4,Pin5,Pin6)在满足表3逻辑关系时,依次使能HS3282的复位端、接收准备端、写数据控制端,在Pin12为低电平时控制HS3282完成复位、读写控制,待Pin12为高电平后HS3282会进行429数据的发送。 5维修方法认证
光电雷达产品维修时可以先用编程器读取并记录产品的熔丝图jed文件,如果有GAL芯片损坏,可以用对应jed文件对新的芯片进行烧录。本节对烧录方法和效果在某型光电雷达产品中进行了实际验证,具体步骤如下:
首先通过superpro编程器装入jed文件,然后设置编辑操作的处理方式,如图4所示,分别添加Erase擦除、Black_Check空校验、Program编程、Verify认证。
图5自动执行操作
选择Auto自动运行方式即按图4中逐一进行操作,全部执行成功即烧录完成,成功次数加1。
新烧录的芯片替换原有芯片后对光电雷达进行测试,其复位、大场扫描、小场扫描等相关的基本功能均正常,芯片信号采集结果和图3一致,证明该维修方法可行。 6结束语
GAL系列芯片在目前某型光电雷达产品中有较多应用,反编译出其内部逻辑代码可以有助于对整体相关电路功能的理解,且根据其工作原理可以延伸出更多测试设备和方法的研究,具有较大的推广意义。
【参考文献】
[1] 居悌,李州涛. GAL器件的编程和复制系统的研制【J】. 南京邮电学院学报,1993,13(2):1-8
[2] 刘渤. 怎样制作GAL器件的JED文件【J】.电脑与制作 ,1999,9:26-27 [3] 支超有 机载数据总线技术及其应用【M】.北京:国防工业出版社,2009:115-185
作者简介:
石海燕(1984 — ), 女,江苏淮安人,硕士,研究方向:控制理论与控制工程。 周阳辉(1981 — ),男,福建平和人,本科,研究方向:电子信息工程 卢伟(1981 — ),女,江苏盐城人,本科,研究方向:计算机科学与技术 葛洲宏(1995 — ),男,山东莱州人,本科,研究方向:电子信息工程