最近在学习将UC/OS-II移植到LPC2210,用的是ZLG的扳子,光盘上带了例子,其中IRQ照ZLG的做法是把进入中断的处理写成了一个宏文件(XXX.inc),然后在汇编中声明中断服务程序,但是我试过后发现只有ZLG自己提供的模板中才可以这么使用,在ADS自带的模板中不行!过程如下: IRQ.INC文件 CODE32 AREA IRQ,CODE,READONLY MACRO $IRQ_Label HANDLER $IRQ_Exception_Function
EXPORT $IRQ_Label ; 输出的标号 IMPORT $IRQ_Exception_Function ; 引用的外部标号 $IRQ_Label SUB LR, LR, #4 ; 计算返回地址 STMFD SP!, {R0-R3, R12, LR} ; 保存任务环境 ...... MEND END IRQ.s文件 CODE32 AREA HANDLER,CODE,READONLY IRQ_Handler HANDLER IRQ_Exption END 然后中断服务程序IRQ_Exption在target.c程序中. 以上使用的是ZLG提供的基于UCOSII的工程模板使用起来没有问题 但是我使用ADS1.2自己提供的ARM Executable Image模板时始终针对 IRQ_Handler HANDLER IRQ_Exption报错 报错信息是 bad symbol 我后来甚至把文件原样替换了都是一样报错! 我知道我提的问题有点混乱,一般人看不明白,但是我相信买过EasyARM2200这块板子的兄弟应该知道我在说什么!请你们看在小弟我找了N天都白辛苦的份上可怜哈我给点提示好不! |