Adrian 发表于 2010-11-12 11:22:51

RVMDK 4.10编译出现这样的错误!Error: L6218E: Undefined symbol FIQ_Handler (refer

如题,错误信息如下:
TEST.axf: Error: L6218E: Undefined symbol DAbt_Handler (referred from aduc702x.o).
TEST.axf: Error: L6218E: Undefined symbol FIQ_Handler (referred from aduc702x.o).
TEST.axf: Error: L6218E: Undefined symbol IRQ_Handler (referred from aduc702x.o).
TEST.axf: Error: L6218E: Undefined symbol PAbt_Handler (referred from aduc702x.o).
TEST.axf: Error: L6218E: Undefined symbol SWI_Handler (referred from aduc702x.o).
TEST.axf: Error: L6218E: Undefined symbol Undef_Handler (referred from aduc702x.o).
不知大家有没有碰到,我也没有用到中断,只是一个简单的跑马灯例程。例程是用一个很老的版本realview2.xx建立的,有代码量限制,就换了现在的高版本。

Adrian 发表于 2010-11-12 11:24:49

启动文件也是用的默认的,怎么搞啊,浪费几天了!!!!
http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_597394GFXI9U.JPG
(原文件名:未命名.JPG)

superyongzhe 发表于 2010-11-13 01:25:13

就是那几个函数没有定义

Adrian 发表于 2010-11-13 14:00:15

回复【2楼】superyongzhe最后的骑士
-----------------------------------------------------------------------

我都没有用到哪些函数!就只有一个Test.c:
       /*********************************************************************
   作者:QCM
   功能:SPI接口测试,实现跑马灯显示
*********************************************************************/
#include<ADuC7026.h>
/*****************************************************************************/
unsigned char results = {0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
/*****************************************************************************/
void delay(int lengh)
{
while(lengh>0)
   lengh--;
}
/*****************************************************************************/
int main()
{
        int i = 0;
       
        GP1CON = 0x22220000;        // 配置SPI总线
        SPIDIV = 0xCC;                        // 配置SPI 时钟 40960000/(2x(1+SPIDIV))
                                                  // 0xCC = 100kHz
        SPICON = 0x104B;                // 使能SPI主机,连续转换模式
                                               
    while(1)
   {       
      
           SPITX = 0xff;
           for (i=0;i<8;i++) // 跑马灯顺序显示
           {
             SPITX = results;                                  
               delay(200000);
           }
           delay(400000);
           SPITX = 0xff;   
           for (i=7;i>=0;i--) // 跑马灯反序显示
           {
              SPITX = results;                                  
                  delay(200000);
           }   
    }
}
/*****************************************************************************/

superyongzhe 发表于 2010-11-13 18:56:48

还有初始化代码可能使用这写函数,这里面的几个函数都是arm的异常中断处理函数。

bluelucky 发表于 2010-11-13 20:52:56

看来是MDK为aduc72xx提供的启动代码的问题。我用MDK生成了一个试试,发现这些符号都是"EXTERN"的,看起来是要求自己动手实现这几个异常向量。在test.c中添加以下代码把这几个需要连接进入的函数加入就可以了
void DAbt_Handler(void)
{
        while(1);
}
void FIQ_Handler(void)
{
        while(1);
}
__asm void IRQ_Handler(void)
{
        // todo: 响应中断
}
void PAbt_Handler(void)
{
        while(1);
}
void SWI_Handler(void)
{
        while(1);
}
void Undef_Handler(void)
{
        while(1);
}

要注意的是IRQ_Handler()通常是必须要实现的,除非系统不使用中断。而且这个函数最好用汇编写,因为需要保护现场和操作寄存器。可以在保护现场后再调用一个C函数

Adrian 发表于 2010-11-19 16:04:42

回复【6楼】bluelucky
-----------------------------------------------------------------------
谢谢啊,还是没有解决,我移植到IAR了。按你的方法,编译没有问题,可是下载仿真的时候一点反应也没有,运行的还是原来的程序!感觉程序没有下载进去。而且仿真的时候C程序中都没有那个指示运行步骤的朝右的箭头,反汇编窗口有!

Adrian 发表于 2010-11-19 16:05:49

http://cache.amobbs.com/bbs_upload782111/files_34/ourdev_599077AUBAZ8.JPG
(原文件名:JTAG仿真有问题.JPG)
页: [1]
查看完整版本: RVMDK 4.10编译出现这样的错误!Error: L6218E: Undefined symbol FIQ_Handler (refer