共2条
1/1 1 跳转至页
求助,程序老是进入取数据终止或取指令终止?急!在线等待...

问
项目使用周立功的“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: 郁闷~~~我为何遇不到这种好事...晕到~~~
一片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 跳转至页
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 |