易于测试和调试程序的中央处理单元.pdf

上传人:00****42 文档编号:1049246 上传时间:2018-03-28 格式:PDF 页数:22 大小:926.48KB
返回 下载 相关 举报
摘要
申请专利号:

CN01112314.1

申请日:

2001.03.29

公开号:

CN1332409A

公开日:

2002.01.23

当前法律状态:

终止

有效性:

无权

法律详情:

未缴年费专利权终止IPC(主分类):G06F 11/26申请日:20010329授权公告日:20050119终止日期:20130329|||授权|||公开|||实质审查的生效申请日:2001.3.29

IPC分类号:

G06F11/26

主分类号:

G06F11/26

申请人:

先进数字芯片股份有限公司;

发明人:

赵璟衍; 林钟润; 李根泽; 韩相书; 闵炳权; 李熙; 权起弘

地址:

韩国汉城

优先权:

2000.07.05 KR 2000-0038161

专利代理机构:

上海专利商标事务所

代理人:

李玲

PDF下载: PDF下载
内容摘要

一种易于测试和调试应用程序的中央处理单元(CPU),它包括执行与主计算机数据通信的数据通信单元;具有一标记的状态寄存器,该标记代表CPU操作模式是代表通用操作状态的通用操作模式还是代表调试状态的调试模式;被用作堆栈指针的调试堆栈指针寄存器,该堆栈指针指定存储调试程序的数据的堆栈存储器;以及将存储在断点寄存器中的值与断点数据进行比较的比较器,其中如果断点寄存器值与断点数据相同则把CPU转换到调试模式,状态寄存器的标记具有代表调试模式的值,执行调试程序的启动地址被装载在程序计数器中,以及运行该调试程序,按照经

权利要求书

1: 一种易于测试和调试应用程序的中央处理单元(CPU),包括临时存储数 据和地址操作所需的数据的通用寄存器组、存储各程序所存储地址的程序计数 器、具有指示CPU状态的状态寄存器和断点寄存器的专用寄存器组、连接通 用寄存器组与专用寄存器组的内部总线、以及与内部总线连接的控制单元,用 于输出CPU内部和外部元件所需的各种控制信号,所述CPU包括: 执行与主计算机的数据通信的数据通信单元; 具有标记的状态寄存器,该标记代表CPU的操作模式是代表通用操作状 态的通用操作模式还是代表调试状态的调试模式; 被用作堆栈指针的调试堆栈指针寄存器,所述堆栈指针指定存储调试程序 的数据的堆栈存储器;以及 比较存储在断点寄存器中的值与断点数据的比较器, 其特征在于,如果断点寄存器值与断点数据相同将CPU转换到调试模式, 状态寄存器的标记具有代表调试模式的值,执行调试程序的启动地址被装载在 程序计数器中,以及运行该调试程序,按照经数据通信单元来自主计算机的命 令执行调试。
2: 如权利要求1所述的CPU,其特征在于进一步包括: 存储复位数据的复位数据存储单元;以及 复位数据比较器,用于比较经数据通信单元输入的数据与存储在复位数据 存储单元中的复位数据,并且如果经数据通信单元输入的数据与复位数据相同 的话指令控制单元对CPU初始化。
3: 如权利要求1所述的CPU,其特征在于,所述断点数据是存储在程序 计数器中的程序地址。
4: 如权利要求1所述的CPU,进一步包括屏蔽寄存器,其中,断点数据 是存储在程序计数器和屏蔽寄存器中的值的操作的结果。
5: 如权利要求1所述的CPU,其特征在于,断点数据是数据所存储的存 储器地址。
6: 如权利要求1所述的CPU,进一步包括屏蔽寄存器,其中,断点数据 是数据所存储的存储器地址和存储在屏蔽寄存器中的值的操作的结果。
7: 如权利要求1所述的CPU,其特征在于,所述断点数据是输入到CPU 和从CPU输出的数据。
8: 如权利要求1所述的CPU,进一步包括屏蔽寄存器,其中,断点数据 是输入到CPU和从CPU输出的数据以及存储在屏蔽寄存器中的值的操作的结 果。
9: 如权利要求1所述的CPU,其特征在于,所述断点数据是输入到CPU 和从CPU输出的地址。
10: 如权利要求1所述的CPU,进一步包括屏蔽寄存器,其中,断点数据 是输入到CPU和从CPU输出的地址以及存储在屏蔽寄存器中的值的操作的结 果。
11: 如权利要求1所述的CPU,其特征在于,所述控制单元接收调试存储 器选择信号并且当存储在断点寄存器中的值与断点数据相同时根据调试存储 器选择信号把执行调试程序的各个不同地址装载到程序计数器中。
12: 如权利要求1所述的CPU,进一步包括存储调试程序所使用的数据值 的数据存储存储器,它与存储通用程序所使用的数据值的数据存储器相分离。
13: 如权利要求1所述的CPU,进一步包括存储调试程序的存储器,它与 存储通用程序的存储器相分离。
14: 如权利要求1所述的CPU,其特征在于,经数据通信单元从主计算机 下载待测试和调试的应用程序。
15: 如权利要求1所述的CPU,其特征在于,当CPU已经被转换为调试 模式时,存储在程序计数器中的值和存储在状态寄存器中的数据被存储到由调 试堆栈指针寄存器所指定的存储器中。
16: 如权利要求1所述的CPU,进一步包括临时存储寄存器,其中,当 CPU已经被转换为调试模式时,存储在程序计数器中的值和存储在状态寄存器 中的数据被存储到临时存储存储器中。
17: 如权利要求1所述的CPU,进一步包括: 存储参考数据的参考数据存储单元;以及 比较通过数据通信单元输入的数据与参考数据的参考数据比较器, 其中,控制单元控制CPU被转换到调试模式,以及如果通过数据通信输 入的数据与参考数据相同把执行调试程序的启动地址装载到程序计数器中,由 此控制CPU按照经数据通信单元来自主计算机的命令执行调试。
18: 一种易于测试和调试程序的中央处理单元(CPU),包括临时存储数据 和地址操作所需的数据的通用寄存器组、存储各程序所存储地址的程序计数 器、具有指示CPU状态的状态寄存器和断点寄存器的专用寄存器组、以及连 接通用寄存器组与专用寄存器组的内部总线,所述CPU包括: 执行与主计算机的数据通信的数据通信单元; 具有标记的状态寄存器,该标记代表CPU的操作模式是代表通用操作状 态的通用操作模式还是代表调试状态的调试模式; 指定存储调试初始化程序的数据和调试服务程序的数据的堆栈存储器的 调试堆栈指针寄存器; 控制单元,用于通过复位信号对CPU初始化、检查调试模式进程信号、 如果已经激活该调试模式进程信号则把执行调试初始化程序的启动地址装载 在程序计数器中,由此将CPU转换到调试初始化模式中以及把状态寄存器的 标记设定到代表调试模式的值、以及输出与内部总线连接的CPU的内部和外 部元件所需的各种控制信号;以及 比较存储在断点寄存器中的值与断点数据的比较器, 其特征在于,如果断点寄存器值与断点数据相同将CPU转换到调试模式, 状态寄存器的标记具有代表调试服务模式的值,执行调试服务程序的启动地址 被装载在程序计数器中,以及运行该调试服务程序,按照经数据通信单元来自 主计算机的命令执行调试。
19: 如权利要求18所所述的CPU,其特征在于进一步包括: 存储复位数据的复位数据存储单元;以及 复位数据比较器,用于比较经数据通信单元输入的数据与存储在复位数据 存储单元中的复位数据,并且如果经数据通信单元输入的数据与复位数据相同 的话指令控制单元对CPU初始化。
20: 如权利要求18所所述的CPU,其特征在于,所述断点数据是存储在 程序计数器中的程序地址。
21: 如权利要求18所所述的CPU,进一步包括屏蔽寄存器,其中,断点 数据是存储在程序计数器和屏蔽寄存器中的值的操作的结果。
22: 如权利要求18所所述的CPU,其特征在于,断点数据是数据所存储 的存储器地址。
23: 如权利要求18所所述的CPU,进一步包括屏蔽寄存器,其中,断点 数据是数据所存储的存储器地址和存储在屏蔽寄存器中的值的操作的结果。
24: 如权利要求18所所述的CPU,其特征在于,所述断点数据是输入到 CPU和从CPU输出的数据。
25: 如权利要求18所所述的CPU,进一步包括屏蔽寄存器,其中,断点 数据是输入到CPU和从CPU输出的数据以及存储在屏蔽寄存器中的值的操作 的结果。
26: 如权利要求18所所述的CPU,其特征在于,所述断点数据是输入到 CPU和从CPU输出的地址。
27: 如权利要求18所所述的CPU,进一步包括屏蔽寄存器,其中,断点 数据是输入到CPU和从CPU输出的地址以及存储在屏蔽寄存器中的值的操作 的结果。
28: 如权利要求18所所述的CPU,其特征在于,所述控制单元接收调试 存储器选择信号并且当存储在断点寄存器中的值与断点数据相同时根据调试 存储器选择信号把执行调试程序的各个不同地址装载到程序计数器中。
29: 如权利要求18所所述的CPU,进一步包括存储调试程序所使用的数 据值的数据存储存储器,它与存储通用程序所使用的数据值的数据存储存储器 相分离。
30: 如权利要求18所所述的CPU,进一步包括存储调试程序的存储器, 它与存储通用程序的存储器相分离。
31: 如权利要求18所所述的CPU,其特征在于,经数据通信单元从主计 算机下载待测试和调试的应用程序。
32: 如权利要求18所所述的CPU,进一步包括临时存储寄存器,其中, 当CPU已经被转换为调试模式时,存储在程序计数器中的值和存储在状态寄 存器中的数据被存储到临时存储存储器中。
33: 如权利要求18所所述的CPU,进一步包括: 存储参考数据的参考数据存储单元;以及 比较通过数据通信单元输入的数据与参考数据的参考数据比较器, 其中,控制单元控制CPU被转换到调试模式,以及如果通过数据通信输 入的数据与参考数据相同把执行调试程序的启动地址装载到程序计数器中,由 此控制CPU按照经数据通信单元来自主计算机的命令执行调试。

说明书


易于测试和调试程序的中央处理单元

    本发明涉及易于测试和调试程序的中央处理单元(CPU),尤其涉及能够对在调试状态下已经从主计算机下载的测试和调试应用程序进行测试和调试的易于测试和调试程序的CPU。

    通常,CPU或微处理器读出存储在存储器中的由一组多个指令字构成的程序,通过指令句法分析程序对这些指令字进行句法分析以及通过执行单元而执行对应于每个指令字的操作。

    应当测试存储在存储器中地由一组多个指令字构成的应用程序是否正确建立。在应用程序不是正确建立的情况中,应当调试该应用程序。

    图1是一方框图,表明通过利用传统电路内仿真器测试和调试应用程序的例子。

    利用电路内仿真器测试和调试程序的系统包括具有CPU模块3、输入/输出(I/O)单元1、和存储器2的目标系统4;与CPU模块3连接的电路内仿真器(ICE)5,用CPU模块3已经替代目标系统4中CPU,目标系统4中CPU被CPU模块3替代,以便测试和调试目标系统4;以及主计算机6,输出测试和调试应用程序的指令,对电路内仿真器作调试。

    电路内仿真器5接收来自主计算机6的应用程序和存储能够调试该应用程序的调试程序,以及按照从主计算机6输入的命令启动位于电路内仿真器的中央处理单元(CPU)。此外,电路内仿真器5通过CPU模块3直接控制位于目标系统4中的一条控制总线、一条地址总线和一条数据总线,以便进行输入/输出单元1和存储器2所需的输入/输出操作。此外,电路内仿真器5能够读出电路内仿真器5内CPU的内寄存器或者改变内寄存器中数据。

    即,电路内仿真器5接收来自主计算机的调试应用程序,运行该程序、以及操作电路内仿真器5中CPU。此外,电路内仿真器5通过CPU模块3直接控制位于目标系统4中的控制总线、地址总线和数据总线,以便进行输入/输出单元1和存储器2所需的输入/输出操作,强迫停止应用程序的运行,以便测试和调该试应用程序。然后,根据来自主计算机6的命令,相对于目标系统4中输入/输出单元1和存储器2读出或写入数据,或者读出或写入存储在电路内仿真器5内寄存器中的数据。于是,判定该应用程序是否正确地被制成。如果有差错,对该应用程序作调试。

    电路内仿真器5仅仅在当利用传统电路内仿真器对应用程序进行测试和调试时目标系统中CPU能够被与电路内仿真器5连接的CPU模块3替代的情况中可以是有用的。此外,由于起目标系统的CPU功能作用的硬件单元应当存在于电路内仿真器5内,这是个问题,即电路内仿真器很昂贵。此外,由于在目标系统用单个半导体芯片集成的情况中位于电路内仿真器内的CPU不能被CPU模块3替代,不能使用电路内仿真器。

    图2是一方框图,表明用于测试和调试程序的装置,其中串行通信单元12和后台调试监视器11被集合在传统中央处理单元(CPU)13中。

    参考图2,CPU 13包括后台调试监视器(DBM)11和串行通信单元12,以便解决在图1的目标系统已经被集成为单个半导体芯片的情况下不能使用电路内仿真器的问题。

    图2的装置包括目标系统10,其中具有DBM11和串行通信单元12的CPU13、输入/输出(I/O)单元14和存储器15被集成在单个半导体芯片中;和经过串行通信单元12用于测试和调试应用程序的主计算机20。

    DBM11用包括寄存器和控制单元的控制器应当能够直接控制位于CPU13中的所有内部元件,以便句法分析来自主计算机20经过串行通信单元12输入的命令,由此进行必要操作。即,DBM11与内部总线连接,以读出或改变存储在寄存器中的值。DBM11控制着控制器、存储器地址寄存器和存储器数据寄存器,由此控制着控制信号总线、地址总线和数据总线,在图2中未示出它们。

    在包括如图2所述的传统DBM的CPU中,主计算机20应当经过串行通信单元12与DBM11进行通信。在这种情况中,连接主计算机20与CPU13的输入/输出线的所需数目为2或3。于是,图2的测试和调试装置比图1中所示的替代整个CPU的情况更有效。

    然而,由于传统的DBM11应当直接控制CPU13中的所有内部元件,与图2的DBM相结合的CPU是昂贵的,并具有复杂的硬件装置。

    为了解决现有技术问题,本发明的目的是提供一种便于程序测试和调试操作的中央处理单元(CPU),其中通过启动调试输入信号把调试模式新增加到具有用户模式的CPU中,在调试模式下从主计算机下载的用于测试和调试的应用程序易于被测试和调试,由此把CPU的硬件简化为较低价格的CPU,和执行更有效的测试和调试操作。

    为了实现本发明的上述目的,提供一种易于测试和调试程序的中央处理单元(CPU),该CPU包括:用于执行与主计算机的数据通信的数据通信单元;具有标记的状态寄存器,该标记代表CPU的操作模式是代表通用操作状态的通用操作模式还是代表调试状态的调试模式;被用作堆栈指针的调试堆栈指针寄存器,所述堆栈指针指定存储调试程序的数据的堆栈存储器;以及比较存储在断点寄存器中的值与断点数据的比较器,其中,如果断点寄存器值与断点数据相同将CPU转换到调试模式,状态寄存器的标记具有代表调试模式的值,用于执行调试程序的启动地址被装载在程序计数器中,以及运行该调试程序,按照经数据通信单元来自主计算机的命令执行调试。

    根据本发明的另一个方面,提供一种易于测试和调试程序的中央处理单元(CPU),该CPU包括:执行与主计算机的数据通信的数据通信单元;具有一标记的状态寄存器,该标记代表CPU的操作模式是代表通用操作状态的通用操作模式还是代表调试状态的调试模式;指定存储调试初始化程序的数据和调试服务程序的数据的堆栈存储器的调试堆栈指针寄存器;控制单元,用于通过复位信号对CPU初始化、检查调试模式进程信号、如果已经激活该调试模式进程信号则把执行调试初始化程序的启动地址装载在程序计数器中,由此将CPU转换到调试初始化模式中以及把状态寄存器的标记设定到代表调试模式的值、和输出与内部总线连接的CPU的内部和外部元件所需的各种控制信号;以及比较存储在断点寄存器中的值与断点数据的比较器,其中,如果断点寄存器值与断点数据相同将CPU转换到调试模式,状态寄存器的标记具有代表调试服务模式的值,执行调试服务程序的启动地址被装载在程序计数器中,以及运行该调试服务程序,按照经数据通信单元来自主计算机的命令执行调试。

    通过参考附图对本发明较佳实施例的更详细描述,本发明的以上目的和其它优点将变得更加明显。

    图1是表明利用传统电路内仿真器测试和调试程序的方框图。

    图2是一方框图,表明用于测试和调试在传统中央处理单元(CPU)中加入了串行通信单元和后台调试监视器的程序的装置。

    图3是根据本发明的易于测试和调试程序的CPU的方框图。

    图4是根据本发明的用于测试和调试程序的状态寄存器的视图。

    图5A是一工作图,表明在一般操作的应用程序和调试程序被存储在同一存储器中的情况中的矢量处理。

    图5B是一工作图,表明在调试程序被存储在不同于一般操作应用程序存储器的一单独存储器中的情况中的矢量处理。

    图5C是一工作图,表明在调试程序既被存储在与一般操作应用程序存储器相同的存储器中又被存储在与一般操作应用程序存储器不同的一单独存储器中的情况中的矢量处理。

    将参考附图更详细地描述根据本发明较佳实施例的中央处理单元(CPU)。

    图3是根据本发明的易于测试和调试程序的CPU的方框图。

    在图3中,根据本发明的易于测试和调试程序的CPU包括:临时存储数据和地址操作所需的数据的通用寄存器组100;专用寄存器组200,它包括存储程序所存储的存储器地址的程序计数器(PC)、具有一标记的状态寄存器(SR),该标记代表CPU的操作模式是代表通用操作状态的通用操作模式还是代表程序测试和调试状态的调试模式、断点寄存器(BR)、掩蔽寄存器(MR)、和指定一存储器的调试堆栈指针(ISP),该存储器存储调试初始化程序和调试服务程序的数据;连接通用寄存器组100和专用寄存器组200的内部总线(IB);连接内部总线(IB)的控制单元300,用于输出CPU的内部和外部元件所需的各种控制信号(CONT)、通过复位信号(RESET)使CPU初始化、校验调试模式进程信号(OSI),由此把执行调试初始化程序的启动地址装载在程序计数器中,如果已经启动调试模式进程信号(OSI)则将CPU转换为调试初始化模式以及使得状态寄存器(SR)的标记具有代表调试模式的值;存储器地址寄存器400;存储器数据寄存器500;数据通信单元600,进行与主计算机的数据通信;以及比较器700,比较存储在断点寄存器(BR)中的值(IBR)与断点数据(BD),如果断点寄存器值与断点数据相同将CPU转换为调试服务模式。

    此外,作为另一种方法,根据本发明的易于测试和调试程序的CPU包括;进行与主计算机的数据通信的数据通信单元600;状态寄存器(SR),它具有一标记,该标记代表CPU的操作模式是代表通用操作状态的通用操作模式还是代表程序测试和调试状态的调试模式;和被用作堆栈指针的调试堆栈指针(ISP),以指定存储调试程序的数据的存储器;以及比较器700,比较存储在断点寄存器中的值与断点数据,如果断点寄存器值与断点数据相同将CPU转换为调试模式,其中,如果存储在断点寄存器(BR)中的值与根据初始调试模式项从主计算机输入的断点数据(BD)相同,把执行由调试初始化程序和调试服务程序组成的调试程序的启动地址装载到程序计数器(PC)中,由此执行调试程序把CPU转换为调试模式并按照经数据通信单元600来自主计算机的命令进行调试,在这种情况中,状态寄存器标记具有代表调试模式的值。

    输入到比较器700中的断点数据(BD)可以是存储在程序计数器(PC)中的程序地址、数据被存储的存储器地址、输入和输出数据、以及输入和输出地址。此外,利用掩蔽寄存器(MR),断点数据(BD)可以是存储在程序计数器中的程序地址与存储在掩蔽寄存器(MR)中的值的运算结果、数据被存储的存储器地址与存储在掩蔽寄存器(MR)中的值的运算结果、以及输入和输出地址与存储在掩蔽寄存器(MR)中的值的运算结果。

    正如图3、5A和5B所示,控制单元300接收调试存储器选择信号(OSIROM),当存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同时,根据调试存储器选择信号(OSIROM)能够把执行调试服务程序PROG5和PROG7的不同地址分别装载到程序计数器(PC)中。此外,正如图5B所示,能够使存储调试程序(包括调试初始化程序(PROG6)和调试服务程序(PROG7))的存储器90与存储通用程序的存储器80分开。

    换句话说,能够使存储调试程序所使用的数据值的数据存储存储器与存储通用程序所使用的数据值的数据存储存储器分开。

    当CPU被转换为调试模式时,易于进行测试和调试程序的CPU应当进一步包括快速进行调试的临时存储寄存器1200,以及在CPU已经被转换为调试模式然后执行调试程序后,在执行调试程序之前,把程序计数器(PC)和状态寄存器(SR)存储到临时存储寄存器1200中。

    易于测试和调试程序的CPU进一步包括其上存储参考数据的参考数据存储单元900、和参数数据比较器800,将经数据通信单元输入的数据(DEB1)与参考数据进行比较,如果数据(DEB1)与参考数据相同的话则将CPU转换为调试服务模式,由此允许用户经数据通道单元使CPU强制被转换为调试服务模式,利用主计算机执行该调试服务模式。

    根据本发明的易于测试和调试程序的CPU进一步包括存储事先已经设定的复位数据的复位数据存储单元1100、和将存储在该复位数据存储单元1100中的复位数据与经数据通道单元600输入的调试数据(DEB2)进行比较的复位数据比较器1000。于是,如果以后把数据从主计算机发送到数据通信单元600,以便对CPU强制初始化,比较器1000将存储在复位数据存储单元1100中的复位数据与经数据通信单元600接收的值进行比较,由此在两个值相同的情况中使CPU初始化。

    根据本发明的易于测试和调试程序的CPU的操作如下:

    控制单元300通过复位信号使CPU初始化,如果输入到控制单元300的调试模式项目信号(OSI)被启动,控制单元启动状态寄存器(SR)的调试模式标记(OSIM),如图4所示。然后,控制单元300设定CPU进入调试和调试应用程序的起始环境,并执行待测试和调试的应用程序经数据通信单元600从主计算机下载到CPU。在应用程序的执行期间,比较器700判定存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)是否相同。如果两个值相同,控制单元300则使CPU进到调试模式并根据经数据通信单元600从主计算机输入的命令进行应用程序的测试和调试。

    在调试模式项目信号(OSI)被启动,因此CPU被设定为测试和调试应用程序的起始环境后,该应用程序从主计算机下载到CPU。否则,在CPU被设定为起始环境后,如果在比较器700的比较结果中存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,那么CPU进到程序测试和调试状态,然后应用程序从主计算机下载到CPU。

    如果在比较器700的比较结果中存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,控制单元300停止或者完成应用程序的执行,控制待存储到由临时存储寄存器(TR)或者调试堆栈指针(ISP)指定的堆栈存储器中的被存储在程序计数器(PC)中的值和被存储在状态寄存器(SR)中的值,控制用于执行待存储在程序计数器(PC)中的调试服务程序的启动地址,以便测试和调试该应用程序,以及改变状态寄存器(SR)的数据,从而使CPU处于测试和调试应用程序的状态。

    输入到比较器700中的断点数据(BD)可以是存储在程序计数器(PC)中的程序地址、数据被存储的存储器地址、输入和输出数据、以及输入和输出地址。此外,利用掩蔽寄存器(MR),断点数据(BD)可以是存储在程序计数器中的程序地址与存储在掩蔽寄存器(MR)中的值的运算结果、数据被存储的存储器地址与存储在掩蔽寄存器(MR)中的值的运算结果、输入和输出地址与存储在掩蔽寄存器(MR)中的值的运算结果、以及输入和输出数据与存储在掩蔽寄存器(MR)中的值的运算结果。当仅有一部分待校验的数据被比较时,掩蔽寄存器(MR)是有用的。即,在输入和输出数据当中仅有6个较低位被校验的情况中,把十六进制数字中3F的值被设定在掩蔽寄存器(MR)中,输入和输出数据与掩蔽寄存器(MR)中设定的值逻辑相乘。然后,如果断点数据(BD)的6个较低位与断点寄存器(BR)的6个较低位相同,那么将CPU转换为调试模式。

    正如图5A所示,用于CPU的初始化和一般操作的应用程序(PROG1、PROG2和PROG4)、根据调试模式项目信号(OSI)的启动把CPU设定为测试和调试应用程序的起始环境的调试模式初始化程序(PROG3)、和在比较器的比较结果中如果CPU进到程序测试和调试状态用于测试和调试应用程序的调试服务程序(PROG5)被存储在同一存储器80中。否则,正如图5B所示,调试模式初始化程序(PROG6)和调试服务程序(PROG7)能够被存储在另一单独存储器90中。

    正如图5B所示,存储应用程序(PROG1、PROG2和PROG4)(用于CPU的初始化和一般操作)的存储器80和存储调试模式初始化程序(PROG6)和调试服务程序(PROG7)的存储器90是彼此分开的。在这种情况中,如果存储器90与CPU集成在一起,那么CPU的操作速度变得更快。

    另一方面,正如图5C所示,存储调试模式初始化程序(PROG6)和调试服务程序(PROG7)的存储器90(它与CPU相集成)的独立,用户能够建立调试模式初始化程序(PROG3)和调试服务程序(PROG5)并能够把它们存储在存储用于CPU初始化和一般操作的应用程序(PROG1、PROG2和PROG4)的存储器80中。

    在用于CPU初始化和一般操作的所有应用程序(PROG1、PROG2和PROG4)、调试模式初始化程序(PROG3)和调试服务程序(PROG5)被存储在同一存储器的情况中,如图5A所示,下面将更详细地本发明的操作。

    如果给CPU供电,复位信号(RESET)被启动。控制单元300根据该复位信号(RESET)对CPU初始化并判定调试模式项目信号(OSI)是否被启动。如果调试模式项目信号(OSI)处于非启动状态,图4的状态寄存器(SR)的调试模式标记(OSIM)未被激活。然后,控制单元300从矢量表81读出存储存储器80(存储待执行的初始程序)地址的复位矢量,并存储专用寄存器组200的程序计数器(PC)。控制单元300把存储在程序计数器(PC)中的复位矢量移动到存储器地址寄存器400并把他输出到地址总线(ADDB)。此外,控制单元300把存储器读出信号输出到控制总线并读出存储应用程序(PROG1)的存储器80的内容。从存储器输出的数据经存储器数据总线(DATAB)进入控制单元300、存储器数据寄存器500和内部总线(IB)。以这种方式输入控制单元300的命令字被句法分析。于是,所需控制信号(CONT)是以执行相应命令字的方式从控制单元300输出的。

    如果CPU被复位矢量初始化而调试模式项目信号(OSI)处于非启动状态,以便执行用于调试的应用程序(PROG1),那么CPU执行该应用程序(PROG1)。

    如果CPU被复位信号初始化而输入到控制单元300的调试模式项目信号(OSI)被启动,那么控制单元300启动状态寄存器(SR)和调试模式标记(OSIM)。此外,控制单元300读出调试模式初始化矢量并把读出结果存储在程序计数器(PC)中,该矢量是存储在存储器80中的调试模式初始化程序(PROG3)的启动地址。然后,如果根据存储在程序计数器(PC)中的调试模式初始化矢量执行调试模式初始化程序(PROG3),那么CPU设定为测试和调试应用程序的初始环境。

    控制单元300根据从主计算机输入的命令不启动状态寄存器(SR)的调试模式标记(OSIM),并控制待执行的应用程序的命令字被存储在程序计数器(PC)中的地址,由此执行该应用程序。如果在应用程序的执行期间,在比较器700的比较结果中,专用寄存器组200的存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,CPU停止或者完成应用程序的执行操作、控制存储在程序计数器(PC)中的应用程序的地址的值和存储在状态寄存器(SR)中的数据(待存储在临时存储寄存器(TR)1200中)、控制调试服务矢量是调试服务程序(PROG5)(用于测试和调试待存储在程序计数器(PC)中的应用程序)的启动地址、以及改变CPU的状态寄存器(SR)的值,由此应用程序处于被测试和调试的状态中。即,状态寄存器(SR)的调试模式标记(OSIM)被启动。

    与此同时,如果在比较器700的比较结果中,存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,CPU停止或者完成应用程序的执行操作并能够控制存储在程序计数器(PC)中的值和存储在状态寄存器(SR)中的数据,它们不被存储在临时存储寄存器(TR)中,但是被存储在有调试堆栈指针(ISP)指定的堆栈存储器中。

    CPU进到程序测试和调试状态,然后根据存储在存储器80中的调试服务程序(PROG5)执行主计算机的命令,例如由用户建立的应用程序的下载、被下载应用程序的执行、断点寄存器(ER)的数据变化、或者存储在通用寄存器组100和专用寄存器组200的寄存器中的数据的读出(READ)或写入(WRITE)、以及根据存储在存储器80中的调试服务程序(PROG5)对存储在存储器中的数据的读出或写入。用户判定应用程序是否利用命令正确地建立。如果判定应用程序是错误地建立,那么该应用程序被校正。

    经数据通信单元执行CPU与主计算机之间的命令的处理过程如下:

    如果由用户建立的程序根据主计算机的下载命令经数据通信单元600被CPU接收并控制CPU的存储器中的接收程序,CPU给主计算机发送一信号,表示该程序已经成功地被接收。如果在应用程序的传送期间发生差错,那么CPU请求主计算机重新发送该应用程序。在应用程序已经被下载到CPU后,主计算机输出一设定CPU中断点寄存器(BR)数据值的断点寄存器数据改变命令,以便执行调试操作。在断点寄存器数据改变命令后,CPU给主计算机发送一信号,表示该应用程序已经被成功地接收。主计算机给CPU发送该应用程序的执行命令,以便执行被下载在存储器中的应用程序,CPU响应于应用程序的执行命令而执行该应用程序。如果在应用程序的执行期间,在比较器700的比较结果中,存储在断点寄存器(BR)中的数据值与程序计数器(PC)的数据(为断点数据(BD))相同,应用程序的执行操作被停止或者已完成,存储在程序计数器(PC)中的所有值、存储在状态寄存器(SR)中的数据、以及通用寄存器的内容被存储在临时存储寄存器(TR)或者由调试堆栈指针(ISP)指定的堆栈存储器中。调试服务矢量(为用于测试和调试应用程序的调试服务程序(PROG5)的启动地址)被存储在程序计数器(PC)中,状态寄存器(SR)的数据被改变,使得CPU处于测试和调试应用程序的状态中。即,状态寄存器(SR)的调试模式标记(OSIM)被启动。根据调试服务程序(PROG5)CPU进到测试和调试应用程序的状态。如果CPU已经进到测试和调试应用程序的调试模式,那么接收寄存器读出命令,存储在临时存储寄存器(TR)或由调试堆栈指针(ISP)指定的堆栈中的寄存器的数据被发送到主计算机。然后,用户分析该发送数据并判定是否输出正确值。如果在分析的结果中该发送数据不是正确数据,那么确定应用程序是不正确的。于是,应用程序被校正。

    重复上述方法,应用程序能够被便利地调试。

    当最初给CPU加电时复位信号(RESET)被启动。否则,复位数据比较器1000将经数据通信单元600从主计算机输入的调试数据(DEB2)与存储在复位数据存储单元1100中的复位数据进行比较,如果前者与后者相同,CPU被启动。换句话说,在待调试的应用程序的执行期间,在CPU处于不可恢复状态的情况中,例如在无限循环的状态中,CPU被初始化,以解决这个问题。

    在应用程序超过预定时间继续被执行的情况中,即,在应用程序处于无限循环状态的情况中,存储在参考数据存储单元900中的与参考数据等同的调试数据(DEB1)经数据通信单元600被发送,参考数据比较器800将存储在参考数据存储单元900中的参考数据与经数据通信单元600接收的调试数据(DEB1)进行比较,在比较结果中如果前者与后者相同,那么迫使CPU进到调试服务模式,这是程序测试和调试状态,由此摆脱无限循环,对发生无限循环的应用程序作调试。

    正如图5C所示,调试模式初始化程序(PROG3和PROG6)和调试服务程序(PROG5和PROG7)既能被存储在存储器80(存储对CPU初始化和操作的服务程序)中又能被存储在与存储器80分开的存储器90中。为此,存储器识别信号(OSIROM)需要作为控制单元300的输入信号。即,在控制单元300用复位信号(RESET)已经对CPU初始化后,然后如果调试模式项目信号(OSI)在被启动时已经被校验以及如果存储器识别信号(OSIROM)在被启动时已经被校验,调试模式初始化矢量II(是存储在存储器90中的调试模式初始化程序(PROG6)的启动地址,以便测试和调试应用程序)应当被存储在程序计数器(PC)中。此外,断点寄存器(BR)的数据值与断点数据相同的情况中,比较器700通知控制单元300两个值相同,控制单元300控制程序计数器(PC),存储调试模式初始化矢量II,这是存储在存储器90中的调试服务程序(PROG7)。

    如果存储器识别信号(OSIROM)不被启动,调试模式初始化矢量I是用于执行调试模式初始化程序(PROG3)的启动地址,调试服务矢量I是用于执行调试服务程序(PROG5)的启动地址。

    如上所述,如果存储器是分开和使用的,用户并不使用内部存储的调试模式初始化程序(PROG6)和调试服务程序(PROG7),使用用户制作的调试模式初始化程序(PROG3)和调试服务程序(PROG5),由此测试和调试应用程序。

    此外,在根据本发明的易于测试和调试程序的CPU中,CPU被复位信号(RESET)初始化。然后,CPU被调试模式项目信号(OSI)转换到初始调试模式。否则,根据在应用程序的执行期间经数据通信单元600来自主计算机的调试数据(DEB1)(与存储在参考数据存储单元900中的参考数据等同)的输入,CPU被控制单元300强迫转换到初始调试模式。于是,如果由调试初始化程序和调试服务程序构成的调试程序被执行,根据该调试程序在主计算机中能够设定断点寄存器(BR)的值。断点寄存器(BR)的设定数据经数据通信单元600被存储在断点寄存器(BR)中,如果在应用程序的执行期间存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,CPU总是前进到调试模式,不管调试模式项目信号(OSI)启动或是不启动。即,如果存储在断点寄存器(BR)中的值(IBR)与断点数据(BD)相同,控制单元300启动状态寄存器(SR)的调试模式标记(OSIM),把用于执行调试程序的启动地址装载到程序计数器(PC)中。于是,控制单元300控制CPU执行调试程序,由此控制CPU被转换到调试模式中。此外,控制单元300根据调试程序执行经数据通信单元600来自主计算机的命令,例如调试程序所使用的存储器的初始化、一组调试堆栈指针、一组或改变的参考数据、一组或改变的对CPU初始化的复位数据、断点寄存器(BR)的值的改变、存储通用寄存器组100或专用寄存器组200的寄存器中的数据的读出(READ)或写入(WRITE)、存储在存储器中的数据的读出或写入,以及判定应用程序是否被正确地建立,由此校正和改进不正确的应用程序。

    根据本发明的易于测试和调试程序的CPU在具有用户模式的CPU状态中新增加了调试模式,由此使得CPU能够在调试模式下易于测试和调试从主计算机下载的应用程序。这里,CPU是用更简单的硬件单元制备的,这能够降低CPU的价格并能够更有效的测试和调试。此外,把CPU设定到测试和调试应用程序的初始环境中的调试模式初始化程序和通过使CPU前进到程序测试和调试状态对应用程序作测试和调试的调试服务程序被存储到存储用户应用程序(使CPU初始化和操作)的存储器以外的其他单独存储器中。因而,用户不需要考虑所提供的调试模式初始化程序和调试服务程序,利用由用户建立的调试程序能够建立一应用程序。

易于测试和调试程序的中央处理单元.pdf_第1页
第1页 / 共22页
易于测试和调试程序的中央处理单元.pdf_第2页
第2页 / 共22页
易于测试和调试程序的中央处理单元.pdf_第3页
第3页 / 共22页
点击查看更多>>
资源描述

《易于测试和调试程序的中央处理单元.pdf》由会员分享,可在线阅读,更多相关《易于测试和调试程序的中央处理单元.pdf(22页珍藏版)》请在专利查询网上搜索。

一种易于测试和调试应用程序的中央处理单元(CPU),它包括执行与主计算机数据通信的数据通信单元;具有一标记的状态寄存器,该标记代表CPU操作模式是代表通用操作状态的通用操作模式还是代表调试状态的调试模式;被用作堆栈指针的调试堆栈指针寄存器,该堆栈指针指定存储调试程序的数据的堆栈存储器;以及将存储在断点寄存器中的值与断点数据进行比较的比较器,其中如果断点寄存器值与断点数据相同则把CPU转换到调试模式。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1