联系方式
地 址:深圳市龙岗区南湾街道平吉大道1号建昇大厦B栋1605号(李朗软件园对面)
联系人:周工
电 话:0755-88820678
传 真:
信 箱:498187676@qq.com


欢迎新老朋友来电洽谈业务!

PCB抄板 >> 行业新闻 >> 当前位置
Nohau公司TRACE板的使用

介绍(Introduction)

    EMUL166-PC需要RAM用于保存数据使用和指令执行的历史记录。跟踪板有这个RAM。要支持跟踪板必须要有POD板的逻辑连接。每个跟踪板包含96位的RAM。跟踪板有两种尺寸的触发存储器;256K和1M。
安装描述(Installation Instructions)

    使用跟踪板前,你必须设置“跟踪板安装”和配置“I/O地址”。这两个设置关系到硬件,因此必须正确设置。它们定位于“Config Trace”对话框的左上角。    

要想POD板认出TRACE板。在“Board install”下选择“YES”。如果窗口显示TRACE不可用,那么就是该选择是“NO”。安装时,TRACE 板的I/O地址使用缺省设置。

   外部输入和控制(External Inputs and Controls)

    TRACE板在每个总线周期可记录8路外部数字信号。这些信号通过TRACE板边缘的15针D型连接器输入。

    注意:软件在每一帧中进行采样外部输入信号和控制,因此,每次的分辨率超过采样帧的速率是不可能的。

    在TRACE板上有两个SMB连接器与D型连接器的小夹子一样,功能是TRIGGER IN和TRIGGER OUT相同。

    注意TRIGGER IN和TRIGGER OUT信号是负电平信号。TRIGGER OUT上从5V到0V的转变表示一个触发(中断记录)。该信号将保持低电平直到TRACE板重新开始记录。

    TRIGGER IN小夹子呈现触发状态当该线保持在低电平时,LAST TRIG EVENT REPEAT COUNT最后触发事件重复计数器将不会减数,事件满 足重复状态也不会产生一个触发,TRACE的记录也不会停止。

跟踪描述(Introduction to Tracing)

    跟踪历史记录是按照总线周期的时间顺序(或其它有用的信息)。事件不影响CPU外部总线(例如,CPU内部寄存器测试)是不会被记录的。事件影响总线将被记录,如果在事件记录被打开并设置为记录这些事件的化。所有的跟踪仿真记录总线事件而不是实际指令的执行。因此,跟踪仿真必需有一个与指令流水线作用相关的工作通道。EMUL 166-PC跟踪板包含流水线译码和标记没有执行的取数据指令操作码。因此,软件在仿佛流水线不存在的情况下显示跟踪记录。随意地,它也能显示不正确的总线周期当它们被记录时。    

跟踪在每次仿真开始时自动启动,它也可以决定于跟踪设置对话框中设定的总线周期遇到情况的过滤器。如果总线满足条件,它将被记录,如果不满足,将不会被记录进跟踪缓冲区。如果总线周期不是一个正确的类型(取指令操作码,读数据,写数据),或它不属于过滤器的范围,将不会被记录。

    当跟踪开始时,缓冲区将被清空,记录一个单步后,跟踪缓冲区只包含一条指令的记录(源行)。当缓冲区满了,新的记录将覆盖旧的记录,跟踪缓冲区是一个环形缓冲区,采集新的记录以取代旧的记录直到仿真器停止记录。触发没有一个地址限制是不起作用的。
    触发和硬件断点(Triggers and Hardware Breakpoints)

    跟踪板能够在控制总线上记录更多的活动。当总线遇到某种状态是将出现一个触发。例如,你可以编程当0x4FE的指令被取4次时出现一个触发。触发开始并终止跟踪缓冲区的记录,并可能产生硬件断点。这些功能是有用的如果你执行外部ROM的程序或在某种硬件状态下需要一个中断。关于怎样创建触发和硬件断点的详细信息,见“TRACE SETUP DIALOG BOX”
跟踪窗口(Trace Window)

    跟踪窗口显示跟踪缓冲区的内容。要打开一个跟踪窗口,从Windows菜单中选择“open a new trace buffer windows”。

    管道流水线影响(Pipeline Effects)

    当一个跳转出现并且流水线被刷新,某些指令被取走当并不执行。这些取走并忽略的指令将被跟踪板捕获,但是显示软件将不会反汇编它们。
    总线周期顺序(Bus Cycle Order)

    所有的总线周期将按照取指的顺序显示,而不是按照执行的顺序。跟踪窗口显示执行的取指。

    总线宽度(Bus Width)

    总线的尺寸是动态的,是8位或16位宽。跟踪缓冲区记录16位数据在每个总线周期。当总线执行8位总线周期时,跟踪板记录总线上所有的16位数据。CPU忽略其它没用的8位。当显示正确的总线周期时,跟踪窗口将不会显示忽略的数据。
跟踪菜单(Trace Menu)

    与其它特殊窗口菜单一样,当你在跟踪窗口中右击鼠标时打开。跟踪菜单包含怎样显示跟踪缓冲区的选项。

    查找帧编号(Find Frame Number)

    选择Find Frame number打开一个对话框,让你指定一个特殊的帧编号。该菜单选项卷动跟踪窗口到你在对话框中填入的记录。

    查找地址(Search Address)

    打开一个对话框让你指定一个特殊的地址,它将中帧缓冲区中开始查找包含你填入的地址的第一个记录。

    缺省的,跟踪查找仅包含操作码。它从缓冲区(不必包含第0帧)的第一帧(最新的)开始。在对话框中选择选项,你可以选择查找方向和查找限制用于查找某种总线周期。
    查找下一个地址(Search Next Address)

    从当前帧开始,Search Next Address 向下查找下一个出现的上次地址。如果你没有指定查找,它将不会查找任何帧。

    查找上一个地址(Search Previous Address)

    从当前帧开始, Search Previous Address 向上查找下一个出现的上次地址。如果你没有指定查找,它将不会查找任何帧。

    寻找触发点(Find Trig Point)

    Find Trig point卷动跟踪缓冲区窗口到第0帧(触发点)并显示。

    将跟踪记录保存为文本(Save Trace as Text)

    使用Save trace as text,你能将任何部分的跟踪缓冲区保存为文本文件。该文件适合于包含在文档中或用文本处理或字处理工具进行处理。选择该菜单项打开一个对话框让你设置帧的范围和文件的名字。
    该文本的格式与跟踪窗口的显示相同,如果你想该文本包含时间标记,你可以在跟踪缓冲区窗口设置打开时间标记。

    显示其它数据(Show Miscellanous Data)

    show misc.data显示24位(显示3个字节的十六进制符号)每个记录。跟踪板记录8个外部信号输入位从DB15连接器。剩下的16位是处理器状态信号。    

三个字节中,最左边显示从DB15连接器输入的位。其它两个字节仅为NOHAU客户支持人员使用。除非NOHAU客户支持人员询问,否则你可以忽略它们。

    显示时间标记(Show Timetamp)

    要显示时间标记,选择“Show timertamp”,跟踪窗口缺省设置是不显示时间标记

    使用时间标记的基准(Benchmarking Using the Timestamp)

    当你捕获到一条跟踪信息并查看时间标记信息,记住该时间标记是反映取指活动。因此,计算个别指令的执行时间不要看时间标记。例如,如果你想知道执行乘法指令用了多少时间,在程序窗口中输入10个乘法指令,然后,输入一个跳转指令到乘法指令序列的起始端。执行这个序列,查看跟踪结果能让你得到执行时间。你能够比较乘法指令的第一个字节被取指到下一个乘法指令的第一个字节被取指的时间。
    相对时间标记(Relative Timestamp)

    时间标记是一个足够大的整数,包含以50M运行的26小时的时钟输出的特有的编号。缺省的设置是将时钟标记显示为触发后的积累时间。

要观察两个特殊指令或总线周期的延时,选择“Relative timestamp”。你能够利用代码时间段的显示模式。“Figure 4-5 An Example of a Relative Timestamp Displayed in Seconds”仅显示地址400-410被记录的总线周期。每一个时间标记被显示相对于缓冲区中下一帧的时间标记。注意帧-1不是743毫秒长,743毫秒指示第-1帧取第一个字的总线周期结束到第0帧取第一个字的总线周期结束之间的时间,它用了743毫秒为第-1帧取操作码,在该循环中执行其它指令和对第0帧取指。    

第一帧的时间标记(-9帧)显示缓冲区中第一帧的时间,不是前一帧的时间,因此,该时间标记显示748毫秒,而不是742毫秒,只是显示通过这个循环的其它时间。

    T=0在当前光标处(T=0 at the Cursor)

    该软件指令强迫当前帧的时间标记为零,这是你测量执行时间的一个快捷方式。

    转换周期到时间 (Convert Cycles to Time)

    跟踪记录中的真实时间标记是时钟周期的记录。当你选择“Convert cycles to time”,你能看到在用时间显示的时间标记如图4-5。

它使用“Trace Setup”对话框中“CLOCK”中的值转换周期计数到时间。如果“CLOCK”的值不正确,这些时间标记也会不正确。当你不选择“Convert cycles to time”时,跟踪窗口显示时间标记为时钟周期。    

注意:如果应用程序动态地改变时钟频率,时钟标记用时间显示可能正确也可能不正确。但用时钟周期显示的时间标记总是正确的,无论时钟速度是多少。

同步程序窗口(Synchronize Program Window)

    选择同步程序窗口将使在程序和源代码窗口中的光标指向跟踪窗口中当前高亮的取指指令的范围。

    跟踪设置(Trace Setup)

    跟踪设置打开一个跟踪设置对话框,下一段“Trace Setup Dialog Box”小节将描述该对话框的细节。

    触发跟踪(Toggle Trace)

    如果跟踪板是记录周期,触发跟踪将关闭记录。相反地,选择该菜单项(或单击Trace Beg)在仿真开始之前或一个触发被执行后打开记录。

跟踪设置对话框(Trace Setup Dialog Box)

    跟踪板安装(Board Installed)

    在你能够使用跟踪板之前,你需要将该选项置为YES。如果你屏蔽该选项或没有安装跟踪板,或你没有在应用程序开始的时候正确设置起始I/O地址,“Trace Setup dialog box”将自动打开。如果你安装了跟踪板并选择NO,应用程序将单步而不是全速运行。
    地址(Address)

    I/O地址标识仿真主板I/O地址的起始地址。该值应该与仿真主板上的跳线保持一致。仿真主板的地址跳线设置见Nohau 用户手册第三章中3-2 “Installation Instructions”。
    跟踪存储器(Trace Memory)

    在该对话框中,“Trace Memory Size”显示记录能被跟踪板保存的记录的最大数目。该栏无论在仿真板还是跟踪板被复位时被设置。
    触发(Triggers)

    一个触发是发生一次跟踪记录开始的事件。

    有两个让你能够设置触发和执行正确过滤的途径;普通模式和窗口模式。在普通模式中,触发有更多的控制。一个触发在普通模式下或者停止记录,或者开始一个递减计数器直到记录停止和任意产生一个硬件中断。(帧0是触发的存储单元。)窗口过滤模式在总线周期的记录上有更多的控制。    

包含触发出现后记录帧的数量。一旦触发出现,记录将继续进行,直到记录采样的数量等于该栏的数目。如果该数量被设置为0,触发出现后没有一个周期会被记录。如果该数量被设置为10,那么触发出现后将有10个周期被记录。如果该数量设置为总的缓冲区的尺寸,则0帧是缓冲区中的第一帧。

    如果你配置跟踪板在触发出现时中断执行, “Post trigger samples”栏不要使用,因为当执行停止时记录也停止了。选择“on trace stop” 一旦后置触发器采样(Post trigger samples)被记录将导致跟踪被终止。   

“Last trigger repeat count最后触发重复计数”栏包含在触发出现前最高编号的触发条件被遇到的次数。如果你设置触发条件为400地址的操作码被取指和设置“Last trigger repeat count”为10,前9次400地址的取指将被计数,当第10次400地址取指时触发出现。

    该计数能够高达255。该寄存器允许上次(高编号)触发事件用普通的过滤模式条件。如果“Trig event 3”没有条件(或被Disable), 它将被忽略并且“Trig event 2”中的条件被计数,如果“Trig event 2”和“Trig event 3”都没有任何条件(或被Disable),“Trig event 1”将被计数。
    过滤模式:普通(Filter Mode:Normal)

    应用普通过滤模式你能够设置三个触发条件。每一个触发条件都是一系列的逻辑或的陈述。 每一个陈述包含一个地址范围和一个总线周期类型。每一个触发条件能够使用大约2000个陈述。这三个触发条件被测试对着地址和数据总线顺序。当触发1的条件被遇到,触发2 的条件(如果出现)被测试。如果没有触发2的条件,触发1条件被遇到则触发出现。对于触发3同样如此。关于触发条件的设置和改变见“编辑触发条件Editing Trigger Conditons”。
    “在任何情况下触发(Trigger on Anything)”显示触发1 使用遇到任何总线周期和任何地址从0~7FFF时触发。

    记录总线周期直到一个触发停止该记录。记录总线周期是比起决定触发还是不触发来说一个单独的活动。记录有一个单独的过滤条件定 义。过滤栏包含高达2000个逻辑或陈述来决定是否记录总线周期。图4-8“选择记录(Selective Recording)”中跟踪板记录从main到 main+100H,从TIME模块的93行和108行之间取指令操作码,以及到或来自于timer.sec(1338H)的数据总线周期(读或写周期)的任何事。
    注意:触发事件必需是序列。数据屏蔽是用输入的十六进制地址或数据值“与”。

    扩展记录(Extend Recording)

   扩展记录意味着在过滤条件关掉记录工程后继续记录3至5个记录。每次过滤捕捉到一个记录,它设 置一个计数器。如果下一个指令没有通过过滤器,记录将总是被捕获并且计数器减1。下面的一些指令同样如此,直到计数器为0。然后,如果记录被过滤出来,它将不会被捕获。    

例如,应用程序在TIME模块结尾的161行调用函数。161行在C源代码文件中是一个封闭的大括号,你怎样找到哪一部分代码(可能是汇编代码)正在被函数调用呢?

    一个解决方案是用一个小的后置触发采样计数器记录161行的任何事件并中断,当触发出现时,从161行以后的一些帧将被捕获。从而指示出当从函数调用返回是程序计数器到哪儿了。从128K的记录里面,只有一帧的信息内容是你需要的。如果没有你需要的调用,你可以设置 “Last trigger repeat count”栏。可是,该设置不会告诉你想捕获的函数调用是下一次还是第3000次。    

使用仿真器资源用于选择仅捕获那些对你来说可能有效的信息。用控制记录,并使用如图4-8的过滤设置,每次跟踪板捕获从161行取指 的操作码时,它同时也捕获跟随的3~5个总线周期。那些总线周期告诉你161行以后程序计数器变到什么数值。使用扩展记录使跟踪板能够包含高达32K的记录,用于指明161行指令执行后程序计数器的变化。

    过滤模式:窗口(Filter Mode:Window)

    过滤模式(“The Filter Mode Window”)在记录什么样的周期上给出了不同的控制,在某种程度上,记录过滤不能选择记录程序的线程。类似触发条件, “Enable recording” 和 “Disable recording”条件被设置,在下一节 “Editing Trigger Conditions” 中被描述。 每一个条件与其它条件是逻辑或的关系用于查找匹配的条件。 当 “Enable recording”条件被遇到时,总线周期开始记录,当“Disable recording”条件被遇到时停止记录。一旦记录开始,过滤栏中的条件决定是否记录一个总线周期。
    编辑触发条件(Editing Trigger Conditions)

要设置触发条件

    1.单击触发(记录控制)中的一个

    2.在你想改变的陈述上单击

    3.单击EDIT。一个地址限定(Address qualifier)窗口被打开并且Start栏被选择

    4.输入地址范围的起始地址(十六进制数,标号名)

    5.按<TAB>键到END(或在END上单击)

    6.输入地址范围上限

    7.在周期类型上单击

    8.在START和END中填入单一地址(“Data Mode=Opcode”显示怎样监控一个单独的地址)

    缺省的Data模式栏标记Opcode对话框和显示选项。

    当寻址16位宽度的存储器时,在一个单字节WRITE上触发时,在数据总线上出现一个旧的地址在高字节上,设置屏蔽到FF00和数据限定在高字节。
    注意:未来的EMUL166-PC将使该特性更直观

    为一个或所有的触发改变Data模式。在改变Data模式后,检查所有的触发条件确保它们都正确。

    当该对话框包含期望的地址范围和Cycles栏被正确的选择,然后按<enter>,或单击OK。每一个触发大约可包含2000个条件中断仿真对话框(Break Emulation Box)。

    当触发出现或记录停止时一个触发能够产生一个硬件断点, 当后置触发器采样帧被记录, 屏蔽任何一个(或两个)选择,“Enableing Harding Breakpoints”该特性让你设置断点,否则程序和触发将不会干扰程序的执行。

     注意:由于预读序列的影响,两个触发导致断点和断点真正出现之间的时间可能被延迟3个指令周期。

返回顶部