Sim Api User Guide(11)
2.12 Simulator control
这些模拟器调用只有在配置步骤之后才能进行。这些用于运行时控制和访问 Hexagon 核心内存和寄存器。这些调用可以多次进行。
2.12.1 LoadExecutableBinary
Prototype
HEXAPI_Status LoadExecutableBinary (const char *pElfFile = NULL)
Parameters
Return
Description
为模拟加载一个可执行文件,或者为模拟重新加载可执行文件。在没有参数的情况下调用这个函数(或者参数值为NULL)会导致用ConfigureExecutableBinary指定的二进制文件被(重新)加载。这通常是为了重新开始模拟当前的程序。该文件使用HEX_MODE_READBINARY模式打开。
注意
为使该功能正常运行,可能需要进行复位。如果这个函数没有提供文件名,并且没有调用
注意
ConfigureExecutableBinary()没有被调用,这个函数就没有作用。
2.12.2 Ru
Prototype
HEXAPI_CoreState Run (HEX_4u_t *result)
Parameters
Return
Description
为模拟加载一个可执行文件,或者为模拟重新加载可执行文件。在没有参数的情况下调用这个函数(或者参数值为NULL)会导致用ConfigureExecutableBinary指定的二进制文件被(重新)加载。这通常是为了重新开始模拟当前的程序。文件使用HEX_MODE_READBINARY模式打开。
**注意 **
为使该功能正常运行,可能需要进行复位。如果这个函数没有提供文件名,并且没有调用
注意
ConfigureExecutableBinary()没有被调用,这个函数就没有作用。
2.12.3 Run
Prototype
HEXAPI_CoreState Run (HEX_4u_t *result)
Parameters
Return
Description
运行Hexagon核心,直到它由于不可恢复的错误(例如,双重异常)或由于击中断点而完成执行(所有线程停止)。执行结果是正常终止的模拟程序的退出代码(HEX_CORE_FINISHED),或其他返回值的未定义。
注意 如果在配置阶段对ConfigureRemoteDebug(第2.9.2节)进行了有效的调用,模拟器将等待来自调试器的连接,控制将被传递给调试器。当调试器退出时,一个运行调用将返回HEX_CORE_FINISHED。
2.12.4 Step
Prototype
HEXAPI_CoreState Step(HEX_4u_t cycles,
HEX_4u_t *cyclesExecuted, HEX_4u_t *result)
Parameters
Return
Description
对Hexagon核心进行一个或多个周期的步进。实际步进的周期数在cyclesExecuted中返回。结果是正常终止时模拟程序的退出代码(“Program finished”),其他返回代码未定义。
注意
无论是否成功调用ConfigureRemoteDebug(第2.9.2节),这个调用都不会连接到调试器。要连接到一个调试器,必须调用Run(第2.12.2节)。
运行(第2.12.2节)可以和AddTimedCallback(第2.10.5节)一起使用,以便在连接调试器的特定时间段内执行程序。
2.12.5 StepTime
Prototype
HEXAPI_CoreState StepTime(HEX_8u_t time, HEXAPI_Interval units,
HEX_4u_t *cyclesExecuted, HEX_4u_t *result)
Parameters
Return
Description
使处理器步进相当于时间输入参数的周期数。实际步进的周期数在cyclesExecuted中返回。结果是正常终止时模拟程序的退出代码(“程序完成”),其他返回代码未定义。
注意
无论是否成功调用ConfigureRemoteDebug(第2.9.2节),这个调用都不会连接到调试器。要连接到调试器,必须调用Run(第2.12.2节)。
运行(第2.12.2节)可以和AddTimedCallback(第2.10.5节)一起使用,以便在连接调试器的特定时间段内执行程序。
2.10.6 AssertNMI
Prototype
HEXAPI_Status AssertNMI()
Return
Description
向内核发出一个非屏蔽的中断。它一直被断言,直到被解除断言。
2.10.7 DeassertNMI
Prototype
HEXAPI_Status DeassertNMI()
Return
Description
向内核发出一个非屏蔽的中断。它一直被断言,直到被解除断言。
2.10.8 ClearInterrupt
Prototype
HEXAPI_Status ClearInterrupt(HEX_4u_t interruptNum)
Parameters
Return
Description
清除Hexagon核心的中断等待寄存器中的特定中断。范围从0到31。
2.10.9 ClearAllInterrupts
Prototype
void ClearAllInterrupts()
Description
清除Hexagon核心的中断等待寄存器中的所有中断。
2.10.10 SetBreakpoint
Prototype
HEXAPI_Status SetBreakpoint(HEX_VA_t vpc)
Parameters
Return
Description
在一个虚拟地址上设置一个断点。断点的列表在模拟器中被维护为一个无界的列表。多次调用在某一地址设置断点的结果是只设置一个断点。模拟器在指定地址的指令提交之前,从Run或Step命令中返回。传递给该函数的地址必须是一个数据包的第一条指令的地址,这样才能识别断点。
2.10.11 ClearBreakpoint
Prototype
HEXAPI_Status ClearBreakpoint(HEX_VA_t vpc)
Parameters
Return
Description
清除由所提供的虚拟地址指定的地址上的断点。如果在给定的地址上没有设置断点,则不采取任何行动。
2.10.12 ClearAllBreakpoints
Prototype
HEXAPI_Status ClearAllBreakpoints()
Return
Description
清除所有断点。
2.10.13 AssertReset
Prototype
HEXAPI_Status AssertReset ()
Return
Description
将六角形磁芯放入复位模式。当处于复位模式时,核心不能步进或运行。寄存器被清除,所有的统计和轮廓数据计数器也被清除。PC被设置为EVB值。
2.10.14 DeassertReset
Prototype
HEXAPI_Status DeassertReset ()
Return
Description
将Hexagon核心从复位模式中取出。模拟器向量到复位向量PC值(由EVB寄存器描述)。在内核脱离复位之前,EVB必须至少被设置一次。