数据到PCI以后,怎么在DSP中设置中断使其处理该数据?

[复制链接]
3343|5
 楼主| extreme001 发表于 2007-9-3 10:35 | 显示全部楼层 |阅读模式
数据到PCI以后,怎么在DSP中设置中断使得其自动调用某段程序处理该数据?<br /><br />我用DM642,有SDK使得数据通过PCI进入DM642的内部内存空间<br /><br />那么,我想在CCS中写个程序,使得数据写入后再写一个中断触发信号,然后调用中断处理函数,处理该函数,应该怎么做呢?<br /><br />谢谢!
 楼主| extreme001 发表于 2007-9-3 14:24 | 显示全部楼层

例如

比如我想:通过PCI写入1-10到DSP的内存,在DSP里将这1-10的数据乘以2,再从PCI读到上位机,应该怎么具体实现呢?
aspl 发表于 2007-9-3 16:03 | 显示全部楼层

互相产生中断握手可以的

  
yxwsz 发表于 2007-9-4 23:07 | 显示全部楼层

HDCR寄存器

host向dsp发送数据之后,可以设置HDCR寄存器中的DSPINT位,&nbsp;向DSP发中断;<br />对于DSP来说,它收到的是HOSTSW中断(DSP代码使能该中断),如果DSP要知道更详细的信息,则需要host,dsp之间定义一个通讯协议,在dsp内部空间某个固定位置存放通讯数据;<br /><br />DSP也可以通过调用csl里面的PCI_dspIntReqSet函数来向host发送PCI中断
 楼主| extreme001 发表于 2007-9-5 15:05 | 显示全部楼层

那么在vecs.asm中该怎么设置中断向量表呢?

比如,在vecs.asm里,前面的内容是这样的:<br /><br />===========================<br />.sect&nbsp;“.vecs”<br /><br />.align&nbsp;1024<br /><br />_vectors:<br /><br />_vector0:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_c_int00&nbsp;&nbsp;&nbsp;;RESET中断<br /><br />_vector1:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;NMI不可屏蔽中断<br /><br />_vector2:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;保留中断1<br /><br />_vector3:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;保留中断2<br /><br />_vector4:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;外部中断INT4<br /><br />_vector5:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;外部中断INT5<br /><br />_vector6:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;外部中断INT6<br /><br />_vector7:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy&nbsp;;外部中断INT7<br /><br />_vector8:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_c_int08&nbsp;;&nbsp;EDMA控制器中断EDMAINT,对应于c_int08&nbsp;ISR<br /><br />_vector9:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;JTAGRTDX中断<br /><br />_vector10:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;EMIF_SDRAM_Timer中断<br /><br />_vector11:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;McBSP_0_Receive中断<br /><br />_vector12:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;McBSP_1_Transmit中断<br /><br />_vector13:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;Host_Port_Host_to_DSP中断<br /><br />_vector14:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;Timer0中断<br /><br />_vector15:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VEC_ENTRY&nbsp;_vec_dummy;Timer1中断<br /><br /><br />===========================<br /><br />我应该设置第几号中断呢?
yxwsz 发表于 2007-9-5 16:05 | 显示全部楼层

可以设置

随便,比如4号;<br />具体把中断映射到那个号上,是可以设置的<br /><br />void&nbsp;PCI_Config()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//imask&nbsp;=&nbsp;HWI_disable();<br />&nbsp;&nbsp;&nbsp;&nbsp;PCI_intEnable(PCI_EVT_PCIMASTER);<br />&nbsp;&nbsp;&nbsp;&nbsp;PCI_intEnable(PCI_EVT_PCITARGET);<br />&nbsp;&nbsp;&nbsp;&nbsp;PCI_intEnable(PCI_EVT_MASTEROK);<br />&nbsp;&nbsp;&nbsp;&nbsp;PCI_intEnable(PCI_EVT_HOSTSW);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;PCI_RSET(PCIIS,&nbsp;0x00000FFF);&nbsp;&nbsp;&nbsp;/*clear&nbsp;PCIIS*/<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;IRQ_map(IRQ_EVT_DSPINT,&nbsp;4);<br />&nbsp;&nbsp;&nbsp;&nbsp;IRQ_reset(IRQ_EVT_DSPINT);<br />&nbsp;&nbsp;&nbsp;&nbsp;IRQ_enable(IRQ_EVT_DSPINT);<br />}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

20

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部