1、有没有关于中断的例程
2、中断向量表如何编写,是不是只能用汇编编写。
3、全局符号是什么概念啊,是指全局变量吗,还是其他什么,函数名称是全局符号吗。
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.
1、有没有关于中断的例程
2、中断向量表如何编写,是不是只能用汇编编写。
3、全局符号是什么概念啊,是指全局变量吗,还是其他什么,函数名称是全局符号吗。
1、我用的6747。
2、具体如何编写啊,有没有什么规范,感觉无从下手啊。
3、函数名是(global)symbol吗
4、在map文件中global symbol是什么啊。
5、在汇编编写的中断向量表中用global定义的符号和map文件中的global symbol是一回事吗。
6、中断服务函数的名称是不是必须在中断向量表中用global定义才能将中断服务程序的地址赋给中断向量表中。
7、同一个工程中是不是只能同时又12个中断服务程序,如果中断超过12个还可以实现吗。
8、同一个工程是不是可以编写多个中断向量表,并且把他们置于不同位置,通过修改ISTP中ISTB的值就可以实现超过12个中断服务层序的实现。
2. 见附件中断向量表的写法。
3. 函数名可以用global定义。
4. 全局符号,你可以对应程序看。
5. 一样的。
6. 中断向量表中用global定义,是为了其他代码文件里调用它。
7. c6747有interrupt controller,可以把不同的事件映射到这12个中断。可以看一下下面的文档第7章节。
http://www.ti.com/lit/ug/sprufk5a/sprufk5a.pdf
8. 一个工程一个中断向量表。
1、中断向量表中定义的global symbol 为什么前面都加下划线。这样和中断服务程序名称不就对应不上了吗。
2、有没有关于c674x的中断例程啊,最好有关于关于中断数超过12个的处理例程。
1. 这个是compiler编译器规定的。如果从c语言里调用汇编函数的话,汇编函数前需要加下划线,看一下编译器文档第201页上的例程。
http://www.ti.com/lit/ug/spru187u/spru187u.pdf
2. 超过12个的处理例程没有。我们只有简单的一个中断的例程。可以看一下cslr中的例程。
http://processors.wiki.ti.com/index.php/QuickStartOMAPL1x_rCSL
1、我怎么感觉像是汇编在调用C语言函数啊,不像是C调用汇编啊,因为中断服务程序是在C文件中定义的。
2、例程中好多子函数定义找不到啊,比如_enable_interrupts(),CSL_FINST(),这些都在哪。
3、还有6748starterware中也有好多子函数找不到,比如ASSERT();HWREG()。
1. 不管是C调用汇编还是汇编调用c, 汇编文件里的函数名或变量需要在前面加下划线。
2. _enable_interrupts是rts库里的内嵌函数。看编译器手册7.5.6 Using Intrinsics for Interrupt Control and Atomic Sections。
http://www.ti.com/lit/ug/spru187q/spru187q.pdf
CSL_FINST这个在quickStartOMAPL1x_rCSL\OMAPL1x\support\includes\ti\pspiom\cslr\cslr.h头文件里有定义。
1、内嵌函数应该要声明吧。可是没看见啊。
2、另外_enable_interrupts()是对什么进行操作呢。rts库在什么地方。可以看到_enable_interrupts()的源代码吗。
问下,中断向量表怎么刚好是对应的中断处理函数例如:
_intcVectorTable:
_vector0: VEC_ENTRY _c_int00 ;RESET
_vector1: VEC_ENTRY _vec_dummy ;NMI
_vector2: VEC_ENTRY _vec_dummy ;RSVD
_vector3: VEC_ENTRY _vec_dummy ;RSVD
_vector4: VEC_ENTRY _EDMA3CC_INT1_isr ;DSP Maskable INT4 : Mapped to func 'EDMA3CC_INT1_isr'
_vector5: VEC_ENTRY _Timer0_12_isr ;DSP Maskable INT5 : Mapped to func 'Timer0_12_isr'
_vector6: VEC_ENTRY _vec_dummy ;DSP Maskable INT6 : Empty
_vector7: VEC_ENTRY _vec_dummy ;DSP Maskable INT7 : Empty
_vector8: VEC_ENTRY _vec_dummy ;DSP Maskable INT8 : Empty
_vector9: VEC_ENTRY _vec_dummy ;DSP Maskable INT9 : Empty
_vector10: VEC_ENTRY _vec_dummy ;DSP Maskable INT10: Empty
_vector11: VEC_ENTRY _vec_dummy ;DSP Maskable INT11: Empty
_vector12: VEC_ENTRY _vec_dummy ;DSP Maskable INT12: Empty
_vector13: VEC_ENTRY _vec_dummy ;DSP Maskable INT13: Empty
_vector14: VEC_ENTRY _vec_dummy ;DSP Maskable INT14: Empty
_vector15: VEC_ENTRY _vec_dummy ;DSP Maskable INT15: Empty
为什么 _EDMA3CC_INT1_isr和_Timer0_12_isr 刚好放在_vector4和_vector5那一行呢,这个从那里得处理的?