您好!
在 SYS/BIOS 文件"C:\ti\BIOS_6_76_02_02\packages/ti\sysBIOS\family\c28\TaskSupport.c (第113行)中、任务堆栈配置的验证如下:
/*
SP 寄存器在28x 上只有16位。 确保
新堆栈中的最后一个地址*小于0xFFFF
*/
if ((((Ulong) tsk->stack)+(tsk->STACKSIZE)>= MAX_SP_ADDR){
ERROR_RAISE (EB、TaskSupport_E_invalidStack、tsk->stack、0);
返回(空);
在我的情况下、此检查失败、因为堆栈从地址0xFF00开始、大小为256。 但从我的角度来看、这应该是有效的、因为堆栈从地址0xFF00变为地址0xFFFF、该地址仍然是16位、并且位于控制器的内部 RAM 中。
因此、从我的角度来看、正确的代码应如下所示:
/*
SP 寄存器在28x 上只有16位。 确保
新堆栈中的最后地址*不大于0xFFFF
*/
if ((((Ulong) tsk->stack)+(tsk->STACKSIZE)>(MAX_SP_ADDR + 1U){
ERROR_RAISE (EB、TaskSupport_E_invalidStack、tsk->stack、0);
返回(空);
此致、
Matthias