现在有一个数字电源项目准备使用SYS/BIOS和28335,控制周期(也就是硬件timer的定时中断周期)为10us,由于HWI的开销太大,想使用类似non-sys/bios模式的ISR模式,TI的spraax9-Using DSP&BIOS in C2800 Applications with high Interrupt Rates.pdf文档提到这样解决办法,就是SYS/bios还是支持裸跑方式的ISR(当然不能调用OS相关的API)这个我觉得可能还有问题,因为只要跑RTOS,它在调度时都是要关中断的,而且说句实话TI SYS/BIOS的这方面优化的还需要进一步加强,他的调度时关中断的时间还是漫长的,大家可以参考:这个文章评测了DSP/BIOS的一些情况
http://www.netlab.tkk.fi/opetus/s38310/04-05/Kalvot_04-05/aarnikoivu_091104.pdf
因此,即便使用ISR而不是HWI,他的中断延时也是蛮大的,因此,我想知道,对于这种强实时的应用如何考虑,裸跑我认为可能比SYS/BIOS还要好一些。
Young Hu:
个人感觉DSP/BIOS只是上层的一个操作系统而已,说到底还是软件。使用传统的无操作系统的ISR是没有问题的,中断来了照常执行,而且在ISR中中断没法嵌套,只有执行完了ISR后其他的程序才继续执行。可以做一下实验试试。
现在有一个数字电源项目准备使用SYS/BIOS和28335,控制周期(也就是硬件timer的定时中断周期)为10us,由于HWI的开销太大,想使用类似non-sys/bios模式的ISR模式,TI的spraax9-Using DSP&BIOS in C2800 Applications with high Interrupt Rates.pdf文档提到这样解决办法,就是SYS/bios还是支持裸跑方式的ISR(当然不能调用OS相关的API)这个我觉得可能还有问题,因为只要跑RTOS,它在调度时都是要关中断的,而且说句实话TI SYS/BIOS的这方面优化的还需要进一步加强,他的调度时关中断的时间还是漫长的,大家可以参考:这个文章评测了DSP/BIOS的一些情况
http://www.netlab.tkk.fi/opetus/s38310/04-05/Kalvot_04-05/aarnikoivu_091104.pdf
因此,即便使用ISR而不是HWI,他的中断延时也是蛮大的,因此,我想知道,对于这种强实时的应用如何考虑,裸跑我认为可能比SYS/BIOS还要好一些。
decai wang:
回复 Young Hu:
看了TI网上的一段视频,讲的RAW ISR和HWI问题,可以使用raw ISR减少中断延迟,但是在raw isr中不能使用发信号量等OS API,我觉得这点sys/bios做的不是非常友好,ucosII之类的也没有所谓的dispatcher,但是也可以在中断中使用发送信号量,设置事件等API,只要不阻塞中断就可以。
网上曾有有人比较多ucosii和sys/bios(在dsp2000上移植ucos),对比的结果是sys/bios大多数性能赶不上ucosii,我觉得sys/bios功能是比ucos强,但是设计比较复杂,可能造成一定性能的减弱,大家怎么看?
现在有一个数字电源项目准备使用SYS/BIOS和28335,控制周期(也就是硬件timer的定时中断周期)为10us,由于HWI的开销太大,想使用类似non-sys/bios模式的ISR模式,TI的spraax9-Using DSP&BIOS in C2800 Applications with high Interrupt Rates.pdf文档提到这样解决办法,就是SYS/bios还是支持裸跑方式的ISR(当然不能调用OS相关的API)这个我觉得可能还有问题,因为只要跑RTOS,它在调度时都是要关中断的,而且说句实话TI SYS/BIOS的这方面优化的还需要进一步加强,他的调度时关中断的时间还是漫长的,大家可以参考:这个文章评测了DSP/BIOS的一些情况
http://www.netlab.tkk.fi/opetus/s38310/04-05/Kalvot_04-05/aarnikoivu_091104.pdf
因此,即便使用ISR而不是HWI,他的中断延时也是蛮大的,因此,我想知道,对于这种强实时的应用如何考虑,裸跑我认为可能比SYS/BIOS还要好一些。
Julian xiao:
回复 decai wang:
建议用ucos,感觉ti-rtos很乱。不清晰。估计中国TI的工程师都没完全搞懂。