embeddev 发表于 2011-12-2 15:31:31

程序死在main之前的初始化~

有问题的死在这里call #__data16_memzero,http://cache.amobbs.com/bbs_upload782111/files_48/ourdev_700928UZXUG2.JPG
(原文件名:1.JPG)

没问题的貌似多一句~

http://cache.amobbs.com/bbs_upload782111/files_48/ourdev_700936YOM9NS.JPG
(原文件名:2.JPG)

死机发生在main之前的初始化,不知道怎么修改,苦恼啊~

mfketggo 发表于 2011-12-2 16:01:47

哥们 你代码还保密咋的
发上来看一下代码你放着调试的二进制有什么用

eduhf_123 发表于 2011-12-2 16:11:20

关键字:WDTCTL

embeddev 发表于 2011-12-2 16:31:35

回复【1楼】mfketggo
哥们 你代码还保密咋的
发上来看一下代码你放着调试的二进制有什么用

-----------------------------------------------------------------------

1楼没注意看题,这个死机是发生在main函数之前,压根就没c代码,全是汇编的~死机就发生在清缓存这块儿~
编译和链接都通过

DOER 发表于 2011-12-2 16:37:41

你是不是申请了一大堆全局变量,而且都初始化了?

.titrwh 发表于 2011-12-2 16:37:48

你的变量初始化时间太长,看门狗复位了。

plc_avr 发表于 2011-12-2 16:52:21

看样子,关狗再试,如果是AVR,不要在熔丝位将看门狗使能,否则初化时间长就死了。

embeddev 发表于 2011-12-2 17:09:09

不是avr,430,开了5,6个任务~ 以前都跑的好好的,现在裁剪了,留的rom和data更多了~反倒出错了~一上电就关闭看门狗啦,现在死机发生在main之前,没办法操作啊~~

jlhgold 发表于 2011-12-2 18:34:22

全局变量是否过多?加上__no_initial 试试!

HadesHe 发表于 2011-12-2 20:03:00

楼上的正解

sunshulin 发表于 2011-12-2 21:06:53

建议你把这个函数加上试试
int __low_level_init(void)
{
WDTCTL = WDTPW+WDTHOLD;    // 停止看门狗
return 1;
}

huchunlei 发表于 2011-12-6 18:26:36

回复【10楼】sunshulin
建议你把这个函数加上试试
int __low_level_init(void)   
{   
wdtctl = wdtpw+wdthold;    // 停止看门狗   
return 1;   
}
-----------------------------------------------------------------------

10楼正解! 加上这个函数之后,不需要在你的程序里面调用,IAR编译的时候,会自动把这个函数放在变量初始化之前!

reflecter 发表于 2011-12-6 19:09:21

学习了~

kingheimer 发表于 2011-12-7 10:00:57

学习了

embeddev 发表于 2011-12-7 10:29:13

这个问题已经解决了,增加了Cstartup.s43,里面不只做了__low_level_init

kevin_me 发表于 2011-12-7 10:50:08

学习一下。只用过pic和51。

maimaige 发表于 2011-12-12 10:41:49

看门狗复位了,强

chancefine 发表于 2011-12-21 20:54:27

学习!
页: [1]
查看完整版本: 程序死在main之前的初始化~