打印

一个关于宏的问题!

[复制链接]
1645|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hujian007|  楼主 | 2008-10-22 19:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近在学习将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天都白辛苦的份上可怜哈我给点提示好不!

相关帖子

沙发
hujian007|  楼主 | 2008-10-24 19:38 | 只看该作者

回复二楼

多谢了
不过好象我还是没看出来问题怎么解决
请你说详细点好吗?
至于CM3和ARM7大同小异吧!
我也在看CM3不过准备把ARM7玩透了再说!毕竟CM3的介绍说的
很清楚CM3是ARM7的升级版

使用特权

评论回复
板凳
db10| | 2008-10-24 21:08 | 只看该作者

...

你定义了:IRQ_Handler   HANDLER   IRQ_Exption

那你定义了HANDLER这个宏没有?

ZLG的模板肯定是在ADS上改动后的,直接用ADS下当然不行啊,你要经过改动。。。
好好看下整个程序的汇编部分。。。 就能找到问题所在。

使用特权

评论回复
地板
hujian007|  楼主 | 2008-10-24 21:21 | 只看该作者

回复三楼

定义了宏的IRQ.INC 文件就是宏的定义
但是还是不认识

使用特权

评论回复
5
teddy2540| | 2012-5-11 17:01 | 只看该作者
楼主 我现在遇到同样的问题 你当时是如何解决的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝