提高FPGA嵌入式处理器的系统除错率

图1:F-Sight透过配接器连接到Spartan-3电路板。

使用处理器追踪功能

处理器追踪功能可以在不中断处理器执行的情况下监控程序执行情况,因此用户可以长时间对程序进行分析,以确定程序代码中的问题,而不会改变处理器的执行状态。Computex F-Sight提供的处理器追踪能力已证明适用在许多情况。

试想一段程序总是不停地产生例外。例外可能产生在程序的任何位置;工程师面临的挑战在于找出并厘清例外之处。为了解决这个问题,可以在例外产生之前或在例外向量中设置断点,这样当程序到达断点时就会暂停。当程序停止时,可查看F-Sight记录的执行历史数据,可从中发现在进入例外处理前执行了哪些指令。

在嵌入式系统中堆栈溢出也是一个常见的问题。程序突然开始从看起来不太正常的地方执行。堆栈可能由于溢出而被破坏。如果怀疑产生了这样的问题,可以透过设计触发器来开始或停止追踪数据的采集。透过设置触发器条件进行堆栈指针和堆栈上限之间的比较,当条件满足时,程序将及时中止,然后用户就可以很容易地确认堆栈溢出以及产生的地方。

在某些实时系统中,为了除错目的而停止处理器的执行过程并非很好的选择,因为停止执行本身可能会改变程序行为。有时候问题可能极少出现,因此可能需要长时间监控程序执行情况。F-Sight可以用来设置复杂的触发条件并收集追踪数据,然后透过事后分析来除错问题。

探测内部讯号

FPGA除错经常从设计模拟开始。尽管仿真器能够发现设计中的错误,但却不能发现与技术指标相关的问题。而且还经常产生设计在模拟时通过了所有测试、但在FPGA中实现时却无法工作的情况。产生这种情况时,设计人员将被迫利用逻辑分析仪在实际的目标系统中进行除错。