在Hercules例程中,有一些以下划线开头的函数,无法定位到原函数,请问这些函数为何无法搜索到源。
是封装在LIB里的函数吗?
gaoyang9992006:
/* Enable the interrupt generation in CPSR register */ IntMasterIRQEnable(); _enable_FIQ();
———————————–
C:\ti\Hercules\HALCoGen EMAC Driver with lwIP Demonstration\v00.03.00\example\hdk\src\lwip_main.c
就这个文件里的。
Hank Zhao:
回复 gaoyang9992006:
还有一种可能就是这个函数的原函数是用汇编写的,CCS无法定位汇编代码的原函数。
gaoyang9992006:
回复 gaoyang9992006:
这是我和一个坛友讨论的结果。CSS无法定位在汇编里的函数原型。
不好意思,我找了一下没有找到,而且编译后无法定位源,应该是封装在LIB里 的,不过根据命名方式应该属于汇编性质的。 在文件sys_core.asm 中可以找到类似的。回头发帖问问TI负责这块的内部技术员,我在他们英文论坛也发现有人问这个问题,也是找不到实现的源,不过没人能回答这个问题,实在是抱歉。
————————————————————————-
您好: 前一段时间请教您的问题已经解决了。 我用的keil MDK开发平台,但_enable_FIQ();是ccs平台上使能/失能中断函数的宏定义,具体定义位置仍然没有找到。我通过看3137的用户手册知道了_enable_FIQ()的作用是操作CPSR寄存器(见504页),所以我就到asm文件中找关于CPSR寄存器的操作语句,发现如下内容是与中断有关的;——————————————————————————-; Disable interrupts – R4 IRQ & FIQ; SourceId : CORE_SourceId_025; DesignId : CORE_DesignId_025; Requirements: HL_SR494 .def _disable_interrupt_ .asmfunc_disable_interrupt_ cpsid if bx lr .endasmfunc;——————————————————————————-; Disable FIQ interrupt; SourceId : CORE_SourceId_026; DesignId : CORE_DesignId_026; Requirements: HL_SR494 .def _disable_FIQ_interrupt_ .asmfunc_disable_FIQ_interrupt_ cpsid f bx lr .endasmfunc;——————————————————————————-; Disable FIQ interrupt .def _disable_IRQ_interrupt_ .asmfunc_disable_IRQ_interrupt_ cpsid i bx lr .endasmfunc;——————————————————————————-; Enable interrupts – R4 IRQ & FIQ .def _enable_interrupt_ .asmfunc_enable_interrupt_ cpsie if bx lr .endasmfunc 我就直接在sys_main.c中调用sys_core.asm文件中的使能/失能中断函数,语句如下。extern _disable_IRQ_interrupt_();
extern _enable_interrupt_();问题已经解决,谢谢您的帮助。祝好!