一个关于宏的问题!

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

回复二楼

多谢了<br />不过好象我还是没看出来问题怎么解决<br />请你说详细点好吗?<br />至于CM3和ARM7大同小异吧!<br />我也在看CM3不过准备把ARM7玩透了再说!毕竟CM3的介绍说的<br />很清楚CM3是ARM7的升级版
db10 发表于 2008-10-24 21:08 | 显示全部楼层

...

你定义了:IRQ_Handler&nbsp;&nbsp;&nbsp;HANDLER&nbsp;&nbsp;&nbsp;IRQ_Exption<br /><br />那你定义了HANDLER这个宏没有?<br /><br />ZLG的模板肯定是在ADS上改动后的,直接用ADS下当然不行啊,你要经过改动。。。<br />好好看下整个程序的汇编部分。。。&nbsp;就能找到问题所在。<br />
 楼主| hujian007 发表于 2008-10-24 21:21 | 显示全部楼层

回复三楼

定义了宏的IRQ.INC&nbsp;文件就是宏的定义<br />但是还是不认识<br />
teddy2540 发表于 2012-5-11 17:01 | 显示全部楼层
楼主 我现在遇到同样的问题 你当时是如何解决的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

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