This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

请教关于DSP/BIOS的几个问题



1、关于HWI的处理,我看了TI SPRAAX9的文档,让我很费解的是,为什么对于在SWI和TSK里面处理interrupt,HWI的dispatcher epilogue都要等完成SWI和TSK里面的内容才调用呢?这跟我的理解完全不一样。我一直以为,在HWI dispatcher 指定的中断处理函数进入和退出是调用的。像SWI和TSK这么弄的话,有何意义?

2、HWI_enter和HWI_exit貌似可以和HWI dispatcher互换的?但是对HWI_enter和HWI_exit的参数,C28系列的AR_MASK ACC_MASK 等是不是通用的呢?对于带C28+FPU系列的,我怎么对FPU的寄存器context save呢?还是说,跟以前一样只对有改动的寄存器进行save?

3、SWI的context save的处理机制是否与HWI的一样?

  • 您好!

    第一个问题是出现在多少页?

    第二个问题:如果一个HWI不使用调度器(dispatcher)的话,那么HWI_enter和HWI_exit必须要使用的,用于保存现场和恢复现场。调度器(dispatcher)也是同样的作用,推荐使用调度器,调度器会去使用这两个函数的。对于C28+FPU,

    第三个问题:不一样

    硬件中断会保存Scratch register,在user's guide B-2页有介绍www.ti.com/.../spru625k.pdf

    软件中断会保存:

    al, ah, xar0, xar4, xar5, xar6, xar7, xt,ph, pl, dp

    一般来说会在HWI中使用SWI_post调用软件中断。

  • 你好~

    第一个问题,我的理解是,table 5, table 6, table 7 表示了HWI Dispatcher Epilogue是执行完SWI、TSK里面的代码后才运行的,所以我才觉得如果用dsp/bios处理硬件中断,这个处理时间太长了

     

    HWI_enter和HWI_exit怎么调用呢?在汇编里面直接调用??

     

    按照你的解释,是不是意味着,我在使用bios的时候就不需要考虑现场保存的工作呢?

  • 使用dispatcher,不用HWI_enter和HWI_exit。跟普通的不带OS的程序是一样的。

    不需要考虑现场保存,DSP/BIOS替你做了,要是不放心的话,编译完了后查看汇编代码