一种图像处理机数据加载与测试方法及装置转让专利

申请号 : CN200910063262.1

文献号 : CN101609544B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 张天序颜露新钟胜贺文娇曹治国张磊王来健付强董舒

申请人 : 华中科技大学

摘要 :

本发明公开了一种图像处理机数据加载与测试方法及装置,加载程序存储于FLASH的首地址处,加载启动时DSP将加载程序模块调入内存,待加载的多个图像处理程序存储于FLASH的后继地址中;DSP根据接收的指令信息在加载程序以及多个图像处理程序之间进行切换,以完成FLASH数据加载、通路测试和其它测试任务。本发明在图像处理机被封装后,能够对程序进行升级和维护,并可根据不同的目标类型启用不同的图像处理程序,操作方便,可靠性高。

权利要求 :

1.一种图像处理机数据加载与测试方法,加载程序存储于图像处理机的FLASH首地址处,包括FLASH加载子模块、切换程序子模块、通路检测子模块、第一测试子模块、第二测试子模块......、第n测试子模块,加载与测试装置启动时图像处理机的DSP将加载程序调入内存;待加载数据存入FLASH的后续地址,包括图像处理程序、程序参数以及目标模板图像;图像处理程序包括切换程序子模块、通路检测子模块和图像处理子模块;

DSP的当前运行程序接收加载与测试装置发送的指令信息,判断自身是加载程序还是图像处理程序,若是加载程序,则按照方式A进行处理:若是图像处理程序,则按照方式B进行处理;

方式A:

A1)若指令信息为FLASH加载指令,则运行加载程序的FLASH加载子模块完成FLASH数据加载操作;

FLASH数据加载操作按照如下方法进行:

(a11)FLASH加载子模块检测DSP连接的FLASH类型,向加载与测试装置返回包含有FLASH类型的接收就绪信息;

(a12)加载与测试装置根据FLASH类型对待加载数据进行编码,将编码得到的数据包发送给FLASH加载子模块;

(a13)FLASH加载子模块接收数据包,对数据包解码并作正确性校验,将校验结果返回给加载与测试装置,如校验结果为正确,进入步骤(a14),否则,结束;

(a14)FLASH加载子模块将解码得到的数据写入FLASH加载指令指定的FLASH扇区;

(a15)FLASH加载子模块对写入FLASH的数据进行正确性校验,如果正确,则返回FLASH加载成功的状态信息,否则结束;

A2)若指令信息为程序切换指令,则判断自身是否为目标程序,若是,则照常运行加载程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行加载程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;

A3)若指令信息为第i测试指令,i=1,2,......,n,则运行加载程序的第i个测试子模块完成相应测试,并向加载与测试装置返回表示测试结果的状态信息;

A4)若指令信息为通路检测指令,则运行加载程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息;

方式B:

B1)若指令信息为数据加载指令,则向加载与测试装置返回提示用户切换到加载程序的状态信息;

B2)若指令信息为切换程序指令,则判断自身是否为目标程序,若是,则照常运行当前图像处理程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行前图像处理程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;

B3)若指令信息为第i测试指令,i=1,2,......,n,则向加载与测试装置返回提示切换到加载程序的状态信息;

B4)若指令信息为通路检测指令,则运行当前图像处理程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息。

2.根据权利要求1所述的图像处理机数据加载与测试方法,其特征在于,为DSP外设一个可读写寄存器作为引导选择开关;DSP进行程序切换时,先将目标程序编号写入引导选择开关,再热复位,然后读取引导选择开关存储的数值,最后将存储于FLASH中编号与该数值相等的程序载入内存。

3.实现权利要求1所述方法的图像处理机数据加载与测试装置,包括主控机、RS232/RS422串口转换器、电器特性转换电路和加载程序;

主控机通过RS232/RS422串口转换器、电器特性转换电路与基于FPGA+DSP+FLASH结构的图像处理机相连;加载程序存储于图像处理机的FLASH首地址处,包括FLASH加载子模块、软件切换子模块、通路检测子模块、第一测试子模块、第二测试子模块......、第n测试子模块,加载启动时DSP将加载程序模块调入内存;待加载数据存入FLASH的后续地址,待加载数据包括图像处理程序、程序参数以及目标模板图像;图像处理程序包括切换程序子模块、通路检测子模块和图像处理子模块;

主控机对用户输入的待加载数据和指令信息编码得到数据包和指令包,将其发送给图像处理机的DSP;接收DSP返回的状态消息,对其解码后反馈给用户;

RS232/RS422串口转换器一端连接主控机,另一端连接电器特性转换电路,用于实现串行数据RS232格式与RS422格式的相互转换;

电器特性转换电路一端连接RS232/RS422串口转换器,另一端连接图像处理机的FPGA,用于实现串行数据RS422差分模式与单端模式的相互转换;

DSP的当前运行程序接收加载与测试装置发送的指令信息,判断自身是加载程序还是图像处理程序,若是加载程序,则按照方式A进行处理:若是图像处理程序,则按照方式B进行处理;

方式A:

A1)若指令信息为FLASH加载指令,则运行加载程序的FLASH加载子模块完成FLASH数据加载操作;

FLASH数据加载操作按照如下方法进行:

(a11)FLASH加载子模块检测DSP连接的FLASH类型,向加载与测试装置返回包含有FLASH类型的接收就绪信息;

(a12)加载与测试装置根据FLASH类型对待加载数据进行编码,将编码得到的数据包发送给FLASH加载子模块;

(a13)FLASH加载子模块接收数据包,对数据包解码并作正确性校验,将校验结果返回给加载与测试装置,如校验结果为正确,进入步骤(a14),否则,结束;

(a14)FLASH加载子模块将解码得到的数据写入FLASH加载指令指定的FLASH扇区;

(a15)FLASH加载子模块对写入FLASH的数据进行正确性校验,如果正确,则返回FLASH加载成功的状态信息,否则结束;

A2)若指令信息为程序切换指令,则判断自身是否为目标程序,若是,则照常运行加载程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行加载程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;

A3)若指令信息为第i测试指令,i=1,2,......,n,则运行加载程序的第i个测试子模块完成相应测试,并向加载与测试装置返回表示测试结果的状态信息;

A4)若指令信息为通路检测指令,则运行加载程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息;

方式B:

B1)若指令信息为数据加载指令,则向加载与测试装置返回提示用户切换到加载程序的状态信息;

B2)若指令信息为切换程序指令,则判断自身是否为目标程序,若是,则照常运行当前图像处理程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行前图像处理程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;

B3)若指令信息为第i测试指令,i=1,2,......,n,则向加载与测试装置返回提示切换到加载程序的状态信息;

B4)若指令信息为通路检测指令,则运行当前图像处理程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息。

4.根据权利要求3所述的图像处理机数据加载与测试装置,其特征在于,为DSP外设一个可读写寄存器作为引导选择开关;DSP进行软件切换时,先将目标软件编号写入引导选择开关,再热复位,最后进行DSP重加载;重加载过程具体为:DSP读取引导选择开关存储的数值,将存储于FLASH中与该数值对应的软件载入内存。

说明书 :

一种图像处理机数据加载与测试方法及装置

技术领域

[0001] 本发明属于数字图像处理应用领域,具体涉及对图像处理机进行数据加载的方法与装置。

背景技术

[0002] 图像处理机是对输入图像进行一系列处理、分析、识别、跟踪等操作,从而得出有用信息的设备。数字信号处理器(Digital Signal Processing,DSP)是图像处理机系统运行的主要载体之一。DSP在运行时,其程序和数据一般存放在内部的DSP或外扩的静态存储器(Static Random Access Memory,SRAM)中,掉电后将全部丢失,因此,DSP的程序文件和部分数据文件需要固化到外部的非易失性存储器中,如闪存(FLASH)。
[0003] 图像处理机针对不同对象类型需采用不同的图像处理算法、不同的工作参数以及针对特定对象的模板图像,其对象类型可能为运动中的汽车、轮船、飞机,也可能为静止的建筑物、交通枢纽、重要设施等。由于图像处理的多样性和复杂性,决定了图像处理机具有多程序模块的特点。能够正确无误的将上述数据加载到图像处理机中,是图像处理机加载与测试装置必须满足的条件,如果数据加载失败,如何保证加载与测试装置能够继续正常工作,是此类装置设计中的技术难点。
[0004] 常用的DSP软件在线调试与加载的方法是利用DSP制作厂商提供的仿真器通过DSP上的JTAG(Joint Test Action Group)端口进行。该方法在调试阶段非常方便,但是在复杂的嵌入式系统中,图像处理机可能只是整个系统的一部分。完成系统对接后,图像处理机与整个系统配合工作,一旦出现问题,就需要将图像处理机与整个系统分离,露出JTAG端口后才能实现软件的调试与加载。且使用JTAG加载,不仅需要仿真器、开发平台等额外的工具,还需要专业人士操作,适用范围窄。
[0005] 在《世界电子元器件》2008年第8期,空空导弹研究院的李世杰等人的《基于计算机串口DSP程序加载的实现》一文中,提到一种基于计算机串口对DSP进行加载的方法,通过一个UART芯片进行电平转换后连接到DSP的多通道缓存串口(Multi-channel Buffered Serial Port,McBSP)来进行,但是通信协议简单,给出的实例中只涉及到DSP单个程序模块的情况,不能适用于复杂的图像处理机。且该加载方法的可靠性不高,如果加载错误,将导致加载与测试装置瘫痪。
[0006] 在《研究与开发》2007年第26卷第10期,南京航空航天大学的张兵等人的《DSP片外Flash在系统编程的设计与实现》一文中,也提到了一种采用计算机串口对DSP片外Flash进行加载的方法,构建了一个常驻Flash的更新固件程序,解决了加载错误导致加载与测试装置瘫痪的问题,但是该方法所给出的实例也只涉及DSP处理单个软件的情况,通信协议简单,不能适用于具有多程序模块的图像处理机,且没有考虑更有效的措施来保证数据传输的可靠性。

发明内容

[0007] 本发明的目的在于提供一种图像处理机数据加载方法和装置,在图像处理机被封装后,能够对程序进行升级和维护,并可根据不同的目标类型启用不同的图像处理程序,操作方便,可靠性高。
[0008] 一种图像处理机数据加载与测试方法,加载程序存储于图像处理机的FLASH首地址处,包括FLASH加载子模块、软件切换子模块、通路检测子模块、第一测试子模块、第二测试子模块、……、第n测试子模块,加载与测试装置启动时图像处理机的DSP将加载程序调入内存;待加载数据存入FLASH的后续地址,包括图像处理程序、程序参数以及目标模板图像;图像处理程序包括切换软件子模块、通路检测子模块和图像处理子模块;
[0009] DSP的当前运行程序接收加载与测试装置发送的指令信息,判断自身是加载程序还是图像处理程序,若是加载程序,则按照方式A进行处理:若是图像处理程序,则按照方式B进行处理;
[0010] 方式A:
[0011] A1)若指令信息为FLASH加载指令,则运行加载程序的FLASH加载子模块完成FLASH数据加载操作;
[0012] FLASH数据加载操作按照如下方法进行:
[0013] (a11)FLASH加载子模块检测DSP连接的FLASH类型,向加载与测试装置返回包含有FLASH类型的接收就绪信息;
[0014] (a12)加载与测试装置根据FLASH类型对待加载数据进行编码,将编码得到的数据包发送给FLASH加载子模块;
[0015] (a13)FLASH加载子模块接收数据包,对数据包解码并作正确性校验,将校验结果返回给加载与测试装置,如校验结果为正确,进入步骤(a4),否则,结束;
[0016] (a14)FLASH加载子模块将解码得到的数据写入FLASH加载指令指定的FLASH扇区;
[0017] (a15)FLASH加载子模块对写入FLASH的数据进行正确性校验,如果正确,则返回FLASH加载成功的状态信息,否则结束;
[0018] A2)若指令信息为程序切换指令,则判断自身是否为目标程序,若是,则照常运行加载程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行加载程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;
[0019] A3)若指令信息为第i测试指令,i=1,2,……,n,则运行加载程序的第i个测试子模块完成相应测试,并向加载与测试装置返回表示测试结果的状态信息;
[0020] A4)若指令信息为通路检测指令,则运行加载程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息;
[0021] 方式B:
[0022] B1)若指令信息为数据加载指令,则向加载与测试装置返回提示用户切换到加载程序的状态信息;
[0023] B2)若指令信息为切换程序指令,则判断自身是否为目标程序,若是,则照常运行当前图像处理程序,向加载与测试装置返回目标程序正在运行的状态信息,否则DSP复位,运行前图像处理程序的切换程序子模块将目标程序从FLASH中引导加载到DSP内存作为新的当前运行程序,并向加载与测试装置返回目标软件切换成功的状态信息;
[0024] B3)若指令信息为第i测试指令,i=1,2,……,n,则向加载与测试装置返回提示切换到加载程序的状态信息;
[0025] B4)若指令信息为通路检测指令,则运行当前图像处理程序的通路检测子模块完成加载与测试装置与DSP间的通路检测,并向加载与测试装置返回表示检测结果的状态信息。
[0026] 和以往传统背景技术相比,本发明的技术效果体现在:
[0027] 1.提高了加载可靠性。
[0028] 设计了一套常驻FLASH首地址处的加载程序,交付给用户后一般不用更改,有效的解决了数据加载失败导致加载与测试装置崩溃的问题。
[0029] 2.在图像处理机被封装后,方便对程序进行升级和维护
[0030] 用户通过主控机控制图像处理机运行加载程序,以完成数据加载任务,从而方便地升级图像处理机的程序数据;另外,可以实际需要,扩展加载程序的测试子模块,例如监测图像处理机上重要器件器件的工作状态、查看并更改DSP中当前运行的程序类型、查看FLASH中已存储的数据内容等,实现对程序的有效维护。
[0031] 3.制订了一套通用的加载与测试装置与被加载图像处理机之间的通信协议。
[0032] 该协议可扩展、易解释,不仅适用于基于计算机串口,还可以略加修改用于基于USB口或PCI口或网口的加载与测试装置,通用于具有FPGA+DSP+FLASH结构的图像处理机平台,具有通用、可扩展性强以及可靠性高等优点。
[0033] 4.改进了DSP多程序模块切换技术
[0034] 通过引入软件方式实现的引导选择开关,不需要修改处理机硬件,只需要用户输入待切换的目标程序信息,主控机控制DSP就可以实现多程序模块之间的任意切换。

附图说明

[0035] 图1是本发明操作步骤图;
[0036] 图2是指令包格式定义示意图;
[0037] 图3是文件包格式定义示意图;
[0038] 图4是本发明加载与测试装置的整体结构图;
[0039] 图5是本发明加载与测试装置和被加载图像处理机的层次结构图;
[0040] 图6是主控机端控制程序功能模块划分图;
[0041] 图7是串口数据格式图;
[0042] 图8是本发明加载与测试装置与被加载图像处理机的连接示意图;
[0043] 图9是主DSP和从DSP之间的McBSP口连接示意图;
[0044] 图10是FLASH中数据存储示意图;
[0045] 图11是加载程序的子模块划分示意图;
[0046] 图12是加载程序实施例的子模块划分示意图;
[0047] 图13是运行于图像处理机主DSP中的加载程序模块流程图;
[0048] 图14是运行于图像处理机主DSP中的图像处理程序模块流程图;
[0049] 图15是运行于图像处理机从DSP中的加载程序模块流程图;
[0050] 图16是运行于图像处理机从DSP中的图像处理程序模块流程图。

具体实施方式

[0051] 下面结合附图及实施例作进一步详述。
[0052] 图1给出了本发明加载方法流程,具体为。
[0053] (1)将由DSP的开发平台编译生成的加载程序可执行文件转换成FLASH所支持的纯数据文件,例如将由CCS(Code Composer Studio)编译生成的.out文件,转换为16进制的.hex文件。加载程序包括FLASH加载子模块、切换程序子模块、通路检测子模块、器件测试子模块和FLASH数据查看子模块。
[0054] (2)采用DSP制作厂商提供的仿真器和调试接口,例如采用TI公司的USB仿真器和JTAG端口,将步骤(1)中生成的数据文件写到DSP片外FLASH的首地址处。
[0055] (3)启动加载与测试装置,包括连接加载与测试装置与被加载图像处理机,打开主控机,运行主控机控制程序模块,启动图像处理机。此时图像处理机中的各DSP所运行的程序均为步骤(2)中烧写到FLASH首地址处的加载程序。
[0056] (4)加载程序的FLASH加载子模块进行数据加载前,先测试从主控机→图像处理机DSP→主控机的数据通路是否正确,如果正确,则进入步骤(5),否则结束操作,检查故障原因。
[0057] (5)FLASH加载子模块按照下述方式分别将各种数据写入指定FLASH的扇区位置:
[0058] (5.1)用户向FLASH加载子模块发送FLASH加载指令,FLASH加载指令包括的信息有:待加载数据大小、写入FLASH的扇区起始地址;
[0059] (5.2)FLASH加载子模块接收到FLASH加载指令后,检测连接的FLASH类型,并做好接收待加载数据的准备;
[0060] (5.3)加载与测试装置接收到DSP准备就绪的消息后,对待加载数据进行编码,并将编码得到的数据包发送给加载程序;待加载数据存入FLASH的后续地址,包括图像处理程序、程序参数以及目标模板图像;图像处理程序包括切换程序子模块、通路检测子模块和图像处理子模块;
[0061] (5.4)FLASH加载子模块接收待加载数据包,对数据包解码并作正确性校验,将校验结果返回给加载与测试装置,如校验结果为正确,进入步骤(5.5),否则,结束本次操作,检测故障原因,回到步骤(3);
[0062] (5.5)FLASH加载子模块将解码得到的有效待加载数据写入FLASH加载指令所指定的扇区位置;
[0063] (5.6)FLASH加载子模块对写入FLASH的数据进行正确性校验,如果正确,则返回加载成功的信息给加载与测试装置,本次加载完毕,回到步骤(5);否则结束本次操作,检测错误原因,回到步骤(4);
[0064] (6)加载与测试装置将所有数据都正确写入图像处理机的FLASH之中后,DSP的当前运行程序接收用户的指令信息,判断自身是加载程序还是图像处理程序,若是加载程序,则按照前述方式A进行处理:若是图像处理程序,则按照前述方式B进行处理。
[0065] 加载与测试装置与图像处理机所交互的主要数据有加载与测试装置发送给图像处理机的指令数据、加载与测试装置发送给图像处理机的被加载数据和图像处理机返回给主控机的状态消息数据三种,具体为:
[0066] (1)加载与测试装置将通路检测指令发送给图像处理机;
[0067] (2)加载与测试装置发送切换程序指令给图像处理机;
[0068] (3)加载与测试装置发送文件数据更新指令给图像处理机;
[0069] (4)加载与测试装置发送待加载文件数据给图像处理机;
[0070] (5)加载与测试装置发送测试板上器件指令字给图像处理机;
[0071] (6)加载与测试装置发送FLASH数据查看指令给图像处理机;
[0072] (7)图像处理机返回通路正常与否的信息给加载与测试装置;
[0073] (8)图像处理机返回切换程序状态信息给加载与测试装置;
[0074] (9)图像处理机返回加载FLASH信息给加载与测试装置;
[0075] (10)图像处理机返回器件测试结果信息给加载与测试装置;
[0076] (11)图像处理机返回FLASH中存储的数据信息给加载与测试装置。
[0077] 为了保证加载方法的可靠性,本发明主要采取了以下几个措施:
[0078] (1)制定了一套由加载与测试装置与图像处理机共同遵循的通信协议;
[0079] 将加载与测试装置与图像处理机所交互的数据定义为固定大小格式,每个数据包大小为32Bytes。加载与测试装置发送给图像处理机的指令包和图像处理机返回给加载与测试装置的状态消息包的格式定义相同,如图2所示,前三个字段为包头信息,分别表示:DSP编号、程序编号和指令类别,最后两个字段为16位循环校验码(Cyclic Redundancy Check,CRC),中间字段为具体的指令或状态字。
[0080] 待加载数据包的格式定义如图3所示,包头包尾信息与指令包的包头包尾一致,文件包的第3,4字段是数据帧号。
[0081] (2)对加载与测试装置与图像处理机之间传送的数据包进行CRC校验;
[0082] (3)对加载与测试装置发送给图像处理机的被加载程序模块数据包进行帧号校验,校验错误的数据包将不允许写入FLASH。
[0083] (4)设定了常驻FLASH的加载程序模块。
[0084] 即步骤(1)(2)中所提到的加载程序,该程序独立与其它的图像处理程序,专用于实现数据加载功能,其写入FLASH后一般不用更新,解决了数据加载失败导致加载与测试装置不能继续正常工作的问题。
[0085] (5)超时处理。
[0086] 包含图像处理机超时和加载与测试装置超时两种。如果图像处理机超时,则主控机控制程序给出系统消息,提示用户“处理机超时无响应”,用户根据此提示进行故障检测。图像处理机上设置有看门狗电路,如果DSP超过一定时间没有运行,处理机将会自动重启。
[0087] 如果DSP在接收完一个文件包后30s内没有收到下一个文件包,则认为主控机超时,在DSP中设定一个时钟监视器,一旦时钟监视器被触发,DSP就放弃当前操作,回到初始状态。
[0088] 本发明不仅用于单DSP图像处理机,还适用于多DSP图像处理机,现以多DSP图像机为例说明实现上述方法的加载与测试装置。如图4所示,加载与测试装置包含一台RS232/RS422串口转换器、具备RS232串口的主控机、电气特性转换电路和加载程序,被加载图像处理机是一种基于多DSP+FPGA+FLASH的结构。
[0089] 加载与测试装置和被加载图像处理机的层次结构,参考图5,从低到高依次为从低到高依次为:硬件层、硬件接口层、监控系统层、Windows设备驱动层、Windows操作系统层和应用层。
[0090] (1)硬件层:图像处理机及其板上各种硬件资源。
[0091] (2)硬件接口层:又称硬件驱动层,由一系列经过封装的驱动函数组成,这些驱动函数直接对硬件进行操作,从而驱动硬件电路正常工作。它们向上提供的调用接口使用户不必关心底层硬件是如何工作的。
[0092] (3)监控系统层:监控程序用于控制整个图像处理机的运行,完成整个系统的任务调度,资源分配,数据的传递、命令的接收、解释和执行。
[0093] (4)Windows设备驱动层:介于应用层和监控软件层之间,控制程序和图像处理机之间所有数据通信要有Windows设备驱动层的支持,设备驱动层将应用层的数据和命令转变成IRP请求包,调用相应的处理例程完成控制程序和DSP的数据通信。
[0094] (5)Windows操作系统层:主控机端控制台控制程序模块的运行环境。利用其消息循环机制处理控制程序模块的各种Windows窗口消息,同时调用设备驱动程序处理相应的IRP,是整个主控机控制程序模块的支撑环境。
[0095] (6)应用层:主控机控制程序模块就处于该层,有良好的人机交互界面,用户通过该程序模块控制整个系统的运行和监控系统的状态。
[0096] 其中,(1)(2)(3)层的所有任务和功能的实现位于图像处理机上,(4)(5)(6)层的所有任务和功能的实现位于加载与测试装置上。
[0097] 实现上述方法的数字图像机数据加载与测试装置,包括主控机、RS232/RS422串口转换器、电器特性转换电路和加载程序,下面对加载与测试装置的各组件详细介绍。
[0098] 1、RS232/RS422串口转换器
[0099] 串口转换器一端连接主控机的RS232端口,另一端连接图像处理机的电气转换电路。其作用是将主控机输出数据流转换为差分模式,便于长距离传输。
[0100] 2、主控机
[0101] 主控机的控制程序模块在Visual C++6.0的环境下开发,向上与用户交互,向下调用Windows API(Application Programming Interface,应用编程接口)函数。要能向图像处理机发送协议规定的数据,接收并解析DSP返回的信息;搭建与用户交互的界面,根据用户操作,产生相关指令信息并且发送给图像处理机。接收到图像处理机返回的信息后,解析并且通知给用户。主控机控制程序模块的功能模块划分如图6所示,包含六个功能子模块,分别为:文件格式转换子模块、编码子模块、发送子模块、接收子模块、解析子模块和显示子模块。
[0102] (1)文件格式转换子模块用于将用户输入的数据文件转换为FLASH所支持的文件格式,例如将由CCS编译生成的.out文件转换为.hex文件,文件格式转换的步骤如下:
[0103] ①将文件的扩展名由.out改为.hex;
[0104] ②将.hex文件头去掉,分离出数据文件;
[0105] ③将转换完成后的.hex写入.out文件的目录下,即存入主控机硬盘。
[0106] (2)编码子模块接收用户输入的指令信息,读取主控机硬盘中的数据文件,按照通信协议分别对指令信息和数据文件信息进行编码,得到指令包和文件包。例如指令包[0107] 00c000001ABCDEFGHIJKLMNOPQRSTU(CRC1)(CRC2),表示这是一条发送给DSP0的通路检测指令,并且DSP0中正在运行的应该是0号程序,最后两个字段CRC1、CRC2表示CRC校验码。
[0108] 11c000002200000000000000000000(CRC1)(CRC2),表示这是一条发送给DSP1的切换程序指令,DSP1中正在运行的是1号程序,要求DSP1将程序切换到2号。
[0109] 20c000003100064010000000000000(CRC1)(CRC2),表示这是一条发送到DSP2的FLASH加载指令,待加载文件大小为0x1000Bytes,待加载到FLASH中的起始地址是0x64010000。
[0110] 例如文件包00dfe00010d24f353dfs5fgg5f3g4f(CRC1)(CRC2),表示这是一个发送到DSP0的文件包,帧号为0xfe(254),中间25个字段为有效文件数据。当剩余文件数据个数不足25Bytes时,加0补齐。
[0111] (3)发送子模块配置主控机串口,并将指令包和数据包发送给主控机串口。串口参数包括:串口名称、波特率、校验位、数据位和停止位。本发明采用的波特率是19200,校验位为0,数据位为8,停止位为0,11bits数据中的有效数据为8bit,串行数据格式如图7所示。
[0112] (4)接收子模块通过主控机串口将图像处理机反馈的状态信息写入主控机的存储区。
[0113] (5)解析子模块用于解析处理机返回的状态信息包。
[0114] 例如状态信息包
[0115] 02c000001ABCDEFGHIJKLMNOPQRSTU(CRC1)(CRC2),表示PC到DSP0之间的串口数据通路正确,且DSP0中正在运行的程序是2号程序。
[0116] 12c000002200000000000000000000(CRC1)(CRC2),表示DSP1已经成功切换到2号程序。
[0117] 20c000003510000000000000000000(CRC1)(CRC2),表示DSP2已经准备号接收待加载文件数据,DSP2片外的FLASH型号为SST28VF016。
[0118] 如果消息包不符合通信协议的规定,则认为该数据包是错误信息。
[0119] (6)显示子模块将解析子模块得到的解析结果显示到用户界面状态栏。例如:“PC到0号DSP的串口通路正确,DSP正在运行0号程序”,“处理机超时无响应,请检查数据通路是否连接或重启处理机”,“DSP写FLASH错误,请检查FLASH是否正确”等。
[0120] 3、电气特性转换电路
[0121] 由于RS-422工作于差分模式,而图像处理机的FPGA工作于单端模式,因此需要在FPGA外围附加电气特性转换电路,使通信双方的电气特性匹配,例如MAXIM公司推出的一款专用于RS-422、RS-485通信的转换芯片MAX3490便可以实现这种功能。
[0122] 4、加载程序
[0123] 加载程序主要是用于将待加载数据写入FLASH,本发明采用DSP制作厂商提供的仿真器和调试接口,例如采用TI公司的USB仿真器和JTAG端口,将其写到FLASH的首地址处。
[0124] 被加载图像处理机是一种基于多DSP+FPGA+FLASH的结构,包括1~4片FPGA(Field Programmable Gate Array,区域可编程门阵列),1~9片DSP,以及与DSP一一对应的NOR FLASH,其与加载与测试装置的连接方式见图8,下面将分别描述图像处理机各组件的工作原理:
[0125] 1、FPGA
[0126] FPGA一般用1~4片,分为主FPGA和从FPGA,与电气特性转换电路相连的FPGA为主FPGA,其余为从FPGA。主FPGA一方面将主控机传来的串行数据转换为并行,根据其包头信息(DSP编号)判断数据流向,将数据包传送给相应的DSP;另一方面将DSP返回的并行信息包转换为串行,并反馈给主控机。在主FPGA中构建通用异步收发器(Universal Asynchronous Receiver and Transmitter,UART),实现数据的串/并转换。从FPGA只需要判定数据流向以及转发数据,不需要进行串/并转换。FPGA在图像处理机中起到了构建数据通路的作用,实现DSP与主控机之间的数据交互。
[0127] 2、DSP和FLASH
[0128] DSP一般用1~9片,也分为主DSP和从DSP,具体分配由用户指定,但是与主FPGA相连的DSP一定为主DSP。主DSP与FPGA之间的数据通路由一对FIFO缓存(输入缓存FIFO和输出缓存FIFO)构建,主DSP和从DSP之间的数据通路由DSP自带的接口实现,例如TI C6000DSP的McBSP口,ADI SHARC系列DSP的Link口,两个TI DSP采用McBSP口的连接方式如图9所示。从DSP间的加载通道相互独立。DSP响应主控机的指令,执行相应的操作,是数据加载的主要执行者。
[0129] 与主DSP和从DSP相连的FLASH均存储有加载程序模块和图像处理程序模块两种,如图10所示。由于NOR FLASH在编程之前需要将相应的扇区擦除,因此为了方便编程,将各数据存放到FLASH中的起始地址规定为某个扇区的起始地址,并根据各数据的大小和程序编号,为其分配固定的扇区位置。各数据在定型后一般变化较小,扇区分配考虑一定余量,分配后将不用更改。
[0130] 主DSP的加载程序子模块整体划分示意图参见图11,该加载程序的一个实例如图12所示,包括六个功能子模块:
[0131] (1)数据流向判断及转发子模块:用于判定主DSP收到的数据包是否需要转发给从DSP。具体为:判定数据包中的DSP编号信息是否对应当前主DSP编号,若是,则由主DSP对其进行处理,若不是,则将其转发给对应的从DSP。
[0132] (2)通路检测子模块,用于测试从主控机→图像处理机→主控机的数据通路是否正确,具体为:判断指令包中的握手数据是否与通信协议中的规定一致,如果一致,则返回通路正常消息包;如果不一致,表明通路传送的数据错误,返回通路不正常消息包,之后回到初始状态;
[0133] (3)FLASH加载子模块,用于将有效数据写入FLASH。FLASH加载子模块从数据加载指令中提取出待加载数据大小、该文件将写入FLASH的扇区起始地址、最多可烧写次数等信息,计算出数据包的个数,再检测DSP所挂载的FLASH类型,返回消息包给主控机端控制程序表明“DSP0已经准备好接收文件数据,DSP所挂载的FLASH型号为:XXXX”,之后打开时钟监视器。DSP接收到文件数据包后进行可靠性校验,将校验正确的数据提取出来存入烧写数组,丢掉校验不正确的数据包并记录错误数据包的个数。如果数据包完全接收正确,则可以进行下一步操作了,否则跳出该模块,回到初始状态。如果两个相邻的文件数据包的到达时间超过30s,便认为主控机超时,DSP触发时钟监视器跳出FLASH加载模块,回到起始状态。
[0134] DSP接收数据包完毕后,关闭时钟监视器,调用FLASH加载模块的烧写函数开始写FLASH。写完后校验FLASH中数据与内存中的烧写文件数据是否一致,如果一致,则返回消息包“FLASH烧写成功完成”,并回到初始状态;如果不一致,表示写FLASH错误,如果没有超过可重复操作的最大次数,则再写一次,如果已经超过可重复操作次数依然没有写FLASH成功,则返回信息包“写FLASH错误”,之后回到初始状态,准备下一次操作。
[0135] (4)切换程序子模块,用于图像处理机多程序模块之间的相互切换。切换方式具体为:先判断待切换的目标程序与DSP内存中正在运行的程序是否一致,若一致,则返回消息包“程序已成功启动”,若不一致,则返回消息包“正在切换到目标程序”,之后DSP复位,将目标程序从FLASH中加载到DSP内存。
[0136] (5)器件测试子模块,用于测试DSP所挂载的片外器件的工作状态,获取FLASH中所存放的数据等。挂载到DSP的常用器件有同步动态随机存取存储器(Synchronous Dynamic Random Access Memory,SDRAM)、FLASH、双 口 RAM(DualPort Random Access Memory,DPRAM)等。测试方法具体为:首先判定待测器件类型,再向待测器件写入一组递增的数据,再读出来,判断与写入数据是否相同,若相同,则表明该器件工作正常,否则认为该器件工作不正常。
[0137] (6)FLASH数据查看子模块:用于查看存放在FLASH中的数据内容。查看方法具体为:FLASH加载子模块先根据指令包中待获取数据的存放地址信息和大小信息,读取FLASH中的该段数据,再按照上述主控机控制程序模块中编码子模块对文件包进行编码的方法对数据进行编码,生成查看结果消息包,最后返回给主控机。
[0138] 主DSP的图像处理程序包括通路检测子模块、切换程序子模块、流向判断子模块和图像处理子模块。其中通路检测子模块和切换程序子模块与前述主DSP加载程序的通路检测子模块、切换程序子模块的功能相同。此处的流向判断子模块与主DSP加载程序的流向判断及转发子模块的相同点在于:两者都需要判定数据包中的DSP编号信息是否对应当前主DSP编号;不同点在于:前者判定结果为不对应时,则返回提示切换到加载程序的状态信息,而后者判定结果为不对应时,则直接将数据转发给目标从DSP。图像处理子模块用于实现某种特定任务的图像处理算法。
[0139] 图像处理机端的工作流程如下:
[0140] 主DSP和从DSP上电后都默认启动存储在FLASH首地址处的加载程序,如果超过规定时间,没有收到主控机数据,则认为用户当前不作FLASH加载操作,将程序自动切换到默认的图像处理程序,否则,继续运行加载程序对主控机任务数据作相应处理。
[0141] 主DSP在执行图像处理程序的过程中,如果有主控机任务数据到,则图像处理程序停止当前操作,转而对主控机任务数据进行处理:主DSP调用图像处理程序的流向判断子模块判断数据包是否需要转发,若需要,则返回消息包提示用户切换到主DSP的加载程序,若不需要,则参考图14,按照如下步骤进行处理:
[0142] (101)若指令包中的命令字表明为检测通路指令,则运行图像处理程序的通路检测子模块。
[0143] (102)若指令包中的命令字表明为数据加载指令,则返回消息包提示用户切换到加载程序。
[0144] (103)若指令包中的命令字表明为切换程序指令,则运行图像处理程序的切换程序子模块。
[0145] (104)若指令包中的命令字表明为器件测试指令,则返回信息包提示用户切换到加载程序。
[0146] (105)若指令包中的命令字表明为FLASH数据查看指令,则返回信息包提示用户切换到加载程序。
[0147] 主DSP在执行加载程序时,如果有主控机任务数据到,则加载程序对主控机传来的串口数据(指令包和数据包)作解析,调用加载程序的数据流向判定及转发子模块判定数据包是否需要转发,若需要,则转发数据包给对应的从DSP,若不需要,则参考图13按照下述步骤进行处理:
[0148] (201)若指令包中的命令字表明为检测通路指令,则运行加载程序的通路检测子模块。
[0149] (202)若指令包中的命令字表明为数据加载指令,则运行加载程序的FLASH加载子模块。
[0150] (203)若指令包中的命令字表明为切换程序指令,则运行加载程序的切换程序子模块。
[0151] (204)若指令包中的命令字表明为器件测试指令,则运行加载程序的器件测试子模块。
[0152] (205)若指令包中的命令字表明为FLASH数据查看指令,则运行加载程序的FLASH数据查看子模块。
[0153] 图15和图16分别给出了从DSP的加载程序处理流程和图像处理程序处理流程,从DSP接收主DSP转发的指令包和数据包,对它们的后续操作与主DSP处理基本相同,区别有两点:a、从DSP不需要转发数据包给其它的DSP,因此从DSP的加载程序不包含数据流向判断及转发子模块,从DSP的图像处理程序不包含数据流向判断子模块;b、从DSP产生的信息包通过主DSP返回给主控机。
[0154] 本发明中,被加载图像处理机DSP的引导加载过程与华中科技大学图像识别与人工智能研究所郑伟等人申请的中国专利文件《多DSP多程序模块引导加载方法及其系统》中所提到的引导加载方法相同,该专利文件还提到了一种对DSP多程序模块进行切换的方法,但需要对电路板上的拨码开关进行操作才能实现。当处理机被封装后,板上的拨码开关也同时被封装了,将导致程序切换功能不可用。如果强行将按键连接出来,将影响系统的可靠性。本发明对这种方法做了改进,采用软件方式实现了DSP程序模块之间的切换。本实施例在与DSP相连的FPGA中设置一个可读写寄存器作为引导选择开关。DSP进行引导加载的时候读取该引导选择开关的值,根据这个值来启动相应的程序。
[0155] 具体方法如下:
[0156] 1)DSP当前运行的程序收到切换指令后,首先判断目标程序编号与正在运行的程序编号是否一致,若不一致,则将目标程序编号写入引导选择开关,进行下一步操作;若一致,则不进行下一步操作。
[0157] 2)关闭全局中断并清除中断控制寄存器。
[0158] 3)将DSP一级缓存中的数据设置为无效。
[0159] 4)跳转到DSP内存地址0处执行。
[0160] 5)DSP内存地址0处存放的是用户加载代码,所以DSP执行用户加载过程,将FLASH中存放的编号与引导选择开关值对应的程序数据载入内存,加载完毕。