打印

【TI DSP分享季】c64x+ DSP/BIOS硬件中断的配置

[复制链接]
443|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lwsn|  楼主 | 2016-4-26 21:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
64+的中断系统和以往的不同,中断是基于事件的。整个硬件CPU接收15个中断,实际用户可用12个可屏蔽中断,但系统可以支持最多128个中断源。64+将中断源视为事件"Event",128个事件可以分别通过配置连接到12个可屏蔽中断。而128个事件每连续32个可以合并到四个固定的事件中,即Event0(对应事件号0-31)、Event1(对应事件号32-63)、Event2(对应事件号64-95)、Event3(对应事件号96-127)(实际最大有效中断源为124个)。这样可以通过数量有限的CPU中断来管理大量的中断源,使用灵活。下图是系统事件映射图:




       中断控制器通过上述这些事件向C64x+ CPU输出如下信号:
       1.一个可屏蔽,硬件异常(EXCEP)
       2.12个可屏蔽硬件中断(INT4到INT15)
       3.一个可用于中断或才异常的不可屏蔽中断(NMI)
       4.一个复位中断(RESET)
       中断控制器包括以下几个模块,用于将事件路由到中断或者异常:
       1.中断选择器:将系统事件路由到12个可屏蔽中断中
       2.事件组合器:将大量的事件减小到四个组合后的事件。
       3.异常组合器:系统所有事件异常组合成一个CPU的异常输入

       以下是中断控制器的框图:


'
       在DSP/BIOS下进行基于事件的中断配置如下(假设我们要配置的是idma1传输完成中断, idma1的完成中断事件号是14,将其路由到INT4):
       1.首先,在dsp/bios图形配置文件中选择HWI-Hardware Interrupt Service Routine Manager,选择HWI_INT4,右键它,点“Properties”,打开属性编辑框。
       2.其次,在"Genral"选项中的“interrupt selection number ”中输入0,(因为idma1事件号是14,属于Event0),点击“应用”,这时"function"中会自动生成"_ECM_dispatch"。点“确定”退出属性设置。
       3.选择“ECM-Event Combiner Manager”,点右键“Properties”,选择属性框中"Enable event combiner manager"中的复选框
       4.在源文件中编写idma1中断服务程序,isr_idma1(),
       5在EVENT14中点右键,选择"Properties",打开属性框,在"function"中输入"_isr_idma1"."arg"框中输入14(事件号),同时选中"unmask event source“,点确定
       6.设置完毕,运行程序,当idma1传输完成即可执行isr_idma1函数

111912yeoeyqe7vqeeem3m.gif (165.92 KB )

111912yeoeyqe7vqeeem3m.gif

111922rf55rfw5brbcilbl.gif (114.48 KB )

111922rf55rfw5brbcilbl.gif

相关帖子

沙发
zhangmangui| | 2016-4-26 21:25 | 只看该作者
感谢分享   感谢参与 活动还在进行中

使用特权

评论回复
板凳
Sode| | 2016-4-27 12:36 | 只看该作者
学习

使用特权

评论回复
地板
zhangjin_comeon| | 2016-4-30 22:25 | 只看该作者
能更详细点就好了  感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

122

主题

824

帖子

1

粉丝