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