你好,我的DSP 6455程序中使用了BIOS。BIOS中有两个硬中断和一个任务,任务是用来调用以太网服务程序的。现在情况是一样的程序烧到同一个批次的板子中,有的板子会出现跑飞(大概10次会出现1次),有的正常,已经排除硬件原因。
我们通过观察地址线A1(正常情况下DSP与外设交互很频繁),出问题时,自举完后程序运行很短的一段时间就跑飞了。我们在主程序MAIN中加入while语句,相当于屏蔽网络任务,或者通过配置外围电路使硬中断不触发,这两种情况下程序就不会跑飞。后来我们发现改变BIOS中与网络有关的那个任务中stack堆栈的大小好像解决了跑飞的问题,我们由默认的4096加大到16384程序没发现跑飞的情况。
现在问题是我们不清楚出现跑飞真的是因为BIOS中任务的stack堆栈大小设置不合适造成的,还是改变堆栈大小只解决了表面问题,还有深层的问题。如果是堆栈原因怎么设置合适的大小?
我们后来发现BIOS手册上说硬件中断应该在2~100us完成(HWIs should be used for application
tasks that may need to run at frequencies approaching 200 kHz, and that
need to be completed within deadlines of 2 to 100 microseconds.),我们的硬件服务程序快到ms级了,不知道是否与这也有关系?