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的hwi和ecm的问题

我最近正在学习omapl138,刚接触dsp/bios,用的是ccs5,bios版本是5.42.学习过程中对hwi和ecm有了一定的疑惑,希望懂的人能给予解答。

我通过c6000的bios的api文档,知道ecm是被hwi包含。第一个问题,我想知道,hwi_int跟ecm有没有什么关系?因为这些128个事件都是映射到15个cpuint上的,感觉hwi_int和cpuint很类似,能否给予hwi_init的一些解释,或者给予一定资料或者例程,我对这一块理解比较混乱。第二个问题,根据ti的bios的用户文档,用户必须删除中断向量表的文件。比如说,我需要使用事件44的gpio bank 4 int,那我能否直接配置事件44的参数,设置function的名字为gpioinputisr,那我能否把这个函数理解为gpio的输入中断函数?在源文件内直接当中断函数处理?第三个问题,ti bios例程macros.int_initial这个文件有什么用,用bios必须用这个文件吗?

希望懂的人不吝赐教,谢谢。

  • #1. ECM:event combiner, 因为系统事件有多达128个,而CPU只有16个中断输入,通过事件组合器可以同时支持所有的事件响应。

    #2. CPU的中断与系统事件之间可以一一映射,这样CPU最多只能响应16个系统事件。

    #3. 系统事件可以通过Event Combiner产生中断信号EVT0~EVT3, 把EVTn与CPU的中断映射起来,在CPU响应EVTn的中断ISR里检查EVT的状态获知是哪一个系统事件产生的中断。每个EVT通过其Mask寄存器可以管理32个系统事件,这样CPU就可以管理所有的系统事件了。

    以上请参考SPRUFK5a的interrupt章节。http://www.ti.com/litv/pdf/sprufk5a

    二。 用了BIOS后,中断向量表由BIOS产生,不需要用户自己写中断向量表。在BIOS里的中断配置分为两种,

    a. 一种是按你说的那样,将GPIO事件如44配置为CPU的中断4~15中的某一个,function设为ISR的函数名,在原文件名前要加下划线_,同时代码中ISR函数名前要加关键字interrupt, 如 interrupt void ISRFunction()

    b. 另一种是用BIOS的dispatcher,这时代码中的ISR函数名前不要加interrupt。因为这时中断响应先进入系统的dispatch handler,中断的上下文切换由这个系统函数完成,而用户的ISR中是它调用的一个普通函数而已,所以不要加关键字interrupt。

    三。这个文件在哪?内容是什么?或者说哪个例程里有这个文件?

     

     

  • 谢谢你的解答,第三个文件是pspdrivers里面gpiosample的工程下的文件,文件内容是 BIOS5PSP_INSTALL_DIR="/../../../../../../../../../,我想这应该是什么的安装目录,应该对以后我建立工程影响不大,但还是想了解一下。