基于C6000 DSP BIOS Link的中断设置

为避免编译过程中,一些头文件和库找不到,我们需要将该例子放在OMAPL138 BSL软件包安装路径的 evmomapl138_v1\tests\ICETEK目录下

如果要使用自己的BSL库,请将压缩包中BSL目录下的 evmomapl138_gpio.c 替换BSL源程序的evmomapl138_v1\bsl\src 下的该文件,重新编译库。或者直接使用压缩包中的库

首先在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 Interrupts

function 后的输入框中 输入中断响应的函数(中断服务程序)

如我们中断服务程序为

则在输入框中输入 _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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值