这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 求助,程序老是进入取数据终止或取指令终止?急!在线等待...

共2条 1/1 1 跳转至

求助,程序老是进入取数据终止或取指令终止?急!在线等待...

院士
2006-09-17 18:14:16     打赏
求助,程序老是进入取数据终止或取指令终止?急!在线等待...



关键词: 求助     程序     老是     进入     数据     终止     指令     在线         

院士
2006-12-22 22:43:00     打赏
2楼
问 项目使用周立功的“ARM Executable Image for UCOSII(for lpc2200)”模板建立,CPU为2294,在BANK1扩了

一片RAM 62256,分散加载文件如下:
ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000
    {
        Startup.o (MyStacks)
    }

    STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }

    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }

    ERAM 0x81000100
    {
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    HEAP_BOTTOM 0x81008000 UNINIT
    {
        Startup.o (HeapTop)
    }
}

在调试过程中,经常出现莫名其妙的问题,常常进入取数据终止或取指令终止,有时候没有改程序,又好了。

今天问题又出现了,写完一段程序,运行后出现取指令终止,我把出现问题的一行加了注释,运行正常,把注

释去掉后,程序还是正常,真是搞不明白为啥?

1: 还发现一个问题还发现一个问题,同样的程序,用0级优化(minimum)可以正常运行,换成1级优化(Most)后,指针飞了。难道是编译器的问题? 2: 请各位帮忙看看,如何解决 3: 优化值变化造成指针飞有时变量用volatile和不用会有区别,尤其是使用中断的情况下。
4: 取数据终止的原因找到了取数据终止的原因找到了,是某个任务的栈设置太小了,导致栈指针超出了有效RAM的范围。
现在出现取指令终止的原因还没有找到,不知道如何找原因。 5: 同样的问题我也遇到同样的问题。
在做TCP协议实验时原程序未改动时,在外部RAM或外部FLASH程序运行正常;
当加入若干行程序后,在外部RAM运行正常,到外部FLASH运行时就出现“取指令终止”;有时在外部RAM运行会出现“取数据终止”。
我用的是SmartARM2200的开发板,实验书上说“根据以往经验,由于总线冲突,建议使用外部RAM进行实验”。 6: 这个问题比较恶心这种问题比较恶心
有的时候的确是由编译器引起的
在用UCOS的时候又是OS_EXIT_CRITICAL都会引起取数据中止
你仔细看是不是代码超过的存储器的大小。
取指令中止,有时也是指针引起的。 7: 郁闷~~~我为何遇不到这种好事...晕到~~~

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]