DSP

基于C6000 DSP BIOS Link的中断设置

2019-07-13 19:01发布

为避免编译过程中,一些头文件和库找不到,我们需要将该例子放在OMAPL138 BSL软件包安装路径的 evmomapl138_v1 estsICETEK目录下 如果要使用自己的BSL库,请将压缩包中BSL目录下的 evmomapl138_gpio.c 替换BSL源程序的evmomapl138_v1slsrc 下的该文件,重新编译库。或者直接使用压缩包中的库 首先在main函数中使用DSP BIOS API允许可屏蔽中断: 例如我们使用CPUINT4作为GPIO bank23的中断   // 可屏蔽中断4允许 C64_enableIER(C64_EINT4); 以下是在DSP BIOS中的操作 第一种方式使用CPU中断直接响应外部事件 一、在Secheduling 中选择  HWI – Hardware Interrupt Function Manager前的加号 在展开的列表的 ECM –Event Combiner Manager 上点击鼠标右键,弹出菜单上选择 properties 在打开对话框中 选择 Enable event combiner manager 点击 确定 二、在HWI – Hardware Interrupt Function Manager 下的 HWI_INT4 ~ HWI_INT15中,选择一个然后在其上点击鼠标右键,选择properties 打开属性对话框   在interrupt selection number后的输入框中输入外部事件对应的中断号,如bank23的中断对应的中断号为49,对于不同的CPU的外设器中断号可能不一样参考对应器件的数据手册以及对应处理器的系统参考文章。对于OMAPL138的中断,参考文章: OMAP-L138 Applications Processor System Reference Guide 的 3.2.2.1章节 Interrupt Controller (INTC OMAPL138 数据手册的第5.7.2章节 DSP Interruptsfunction 后的输入框中 输入中断响应的函数(中断服务程序) 如我们中断服务程序为 则在输入框中输入 _output_clk 注意对于C语言写的中断服务程序在输入框中输入时应在函数名前加下划线”_” 对于用C语言写的中断服务程序,我们还应该做如下的步骤 在中断属性页面上点击Dispatcher选项卡,选中 Use Dispatcher选项。 Interrupt Mask后的下拉列表表示在执行当前中断的时候是否允许其他中断发生,即是否允许中断,参考DSP BIOS的在线帮助获得更多的信息 第二中方式 CPU响应事件组合器(combiner)生成的中断 一、在Secheduling 中选择  HWI – Hardware Interrupt Function Manager前的加号 在展开的列表的 ECM –Event Combiner Manager 上点击鼠标右键,弹出菜单上选择 properties 在打开对话框中 选择 Enable event combiner manager 点击 确定 展开  ECM –Event Combiner Manager,在对应的 EVENTn 上点击鼠标右键,选择 properties,这里作为例子我们使用OMAPL138GPIO23 的组中断作为演示,它对应的事件的编号为49,关于什么事件对应于那个事件编号,参考文章: OMAP-L138 Applications Processor System Reference Guide 的 3.2.2.1章节 Interrupt Controller (INTC OMAPL138 数据手册的第5.7.2章节 DSP Interrupts 打开属性对话框 在打开的对话框中, Comment 输入框中输入一些注释,方便我们以后识别该中断的作用 function 后的输入框中,输入用CC++写的中断服务程序函数名,且以 开始,如我们的中断服务程序如下 则应该在function输入框中输入 _output_clk unmask event source 选项应该选中,告知编译器不要屏蔽该事件的中断,默认的情况下,他们都是被屏蔽的 二、在HWI – Hardware Interrupt Function Manager 下的 HWI_INT4 ~ HWI_INT15中,选择一个然后在其上点击鼠标右键,选择properties 这里我们需要修改 interrupt selection number,输入的数字对应的ECM源的关系如下 nterrupt SelectionNumber ECM Module Objects ECM EventRange 0 EVENT4 to EVENT31 4 - 31 1 EVENT32 to EVENT63 32 - 63 2 EVENT64 to EVENT95 64 - 95 3 EVENT96 to EVENT127 96 – 127 如果拟将HWI_INT4 映射到ECM 32-63,这其中包含GPIO2bank的中断事件,则 nterrupt SelectionNumber 输入框中输入1 当我们在interrupt selection number输入框中输入0~3之间的数字时,function输入框中会自动填上函数 _ECM_dispatch 且不能修改成其他的Dispatcher 选项卡中,选中 use Dispatcher 如果我们不修改interrupt Mask选项,它自动选择Self,且Arg中填入一个数值,这个数值和我们在interrupt selection number输入框中输如的数值相关联,我们使用默认的。 Interrupt Mask后的下拉列表表示在执行当前中断的时候是否允许其他中断发生,即是否允许中断,参考DSP BIOS的在线帮助获得更多的信息 点击确定,重新编译项目,下载进行测试 ///////////////////////////////////////////////////////////////////////////////////////////////////// 参考文档: 1、 数据手册 http://www.ti.com/lit/gpn/omap-l138 2、 系统参考: http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprugm7d&fileType=pdf 3、 兆模块参考 http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprufk5a&fileType=pdf 4、 CPU和指令集用户手册 http://focus.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=sprufe8b&fileType=pdf