6033|12

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于 GO MAIN 的问题 [复制链接]

我的段分配如下:

MEMORY
{
PAGE 0:
       VEC:      origin=0x0,      length=0x40
       EX_PM:    origin=0x0044,    length=0x7fbe
      
PAGE 1:
       REG:      origin=0x0,      length=0x60
       BLK_B2:   origin=0x0060,   length=0x20
       BLK_B0:   origin=0x0200,   length=0x100
       BLK_B1:   origin=0x0300,   length=0x100
       PERIPH:   origin=0x7000,   length=0x1000
       CPLD:     origin=0x8000,   length=0x100
       STACK:    origin=0x8100,   length=0x0f00
       EX_DM:    origin=0x9000,   length=0x7000
}
SECTIONS
{
vectors   : { } > VEC    PAGE 0  
.text     : { } > EX_PM  PAGE 0
.cinit    : { } > EX_PM  PAGE 0
.switch   : { } > EX_PM  PAGE 0
.stack    : { } > STACK  PAGE 1
.bss      : { } > EX_DM  PAGE 1
.const    : { } > EX_DM  PAGE 1
.sysmen   : { } > EX_DM  PAGE 1
}

我在头文件中定义了一个数组,用于存放ASCII码字符的点阵信息,每个字符占八个字节,如下所示:
static unsigned char ASCII[]={
0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,        //  (空格)
0x0000,0x0000,0x0000,0x33F8,0x3000,0x0000,0x0000,0x0000,        // !
0x0000,0x0010,0x000C,0x0006,0x0010,0x000C,0x0006,0x0000,        // \"
......略...
};
调试程序时不能 GO MAIN,但是将这个数组去掉一大部分(比如,只定义到数字符号\'9\')之后,就可以GO MAIN了.
不知道是什么问题,我应该怎么做?

最新回复

可能是在进入main以前,处理的东西太多,这个时候看门狗工作了。 你可以把那些赋值什么的放到main里面,在main的开头就对dsp的时钟等进行处理,然后是赋值操作。  详情 回复 发表于 2008-4-5 16:10
点赞 关注

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
将.const    : { } > EX_DM  PAGE 1
更改为:
.const:    load = EX_PM PAGE 0,run = EX_DM PAGE 1
试一下
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

还是不行

如果数组太大的话,在复位中断程序中,总是从25C0跳到25C6:

25B4      _c_int0:
25B4 BF08 LAR     AR0,#8100h
25B6 BF09 LAR     AR1,#8100h
25B8 BE42 CLRC    OVM
25B9 BF00 SPM     
25BA BE47 SETC    SXM
25BB BF80 LACC    #2f4eh,0
25BD B801 ADD     #1h
25BE E388 BCND    25c2h,EQ
25C0 7A89 CALL    25c6h,*,AR1
25C2 7A89 CALL    main,*,AR1
25C4 7A89 CALL    _abort,*,AR1
25C6 7802 ADRK    #2h
25C7 BF80 LACC    #2f4eh,0
25C9 8B88 MAR     *,AR0
25CA A6A0 TBLR    *+
25CB B801 ADD     #1h
25CC A680 TBLR    *
25CD 0290 LAR     AR2,*-
25CE 038B LAR     AR3,*,AR3
25CF 7B9A BANZ    25d4h,*-,AR2
25D1 8B89 MAR     *,AR1
25D2 7C02 SBRK    #2h
25D3 EF00 RET     
25D4 B801 ADD     #1h
25D5 A6AB TBLR    *+,AR3
25D6 7B9A BANZ    25d4h,*-,AR2
25D8 B801 ADD     #1h
25D9 7988 B       25cah,*,AR0


 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

4
 
我在。H文件中定义了个
const Uint16 A[576]={0,1,.....575};可以的,
查看一下设置:Option/Customize/Debug Properties/下的Perform Go Main automatic要选中
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
我编的小程序中也出现不能GO MAIN的情况
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 

可是,这到底是什么原因造成的?

不会是仿真器或者CCS的BUG吧?
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

7
 

还是不行

0x0改成0H之后也不行.
我真是没有办法了.
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
程序可以运行,就是不能GO MAIN吗?
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

9
 
是不是你的主程序写的有问题呢?
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 

====请求高手出面====

除了上述问题之外,还有一个问题:
我现在用PB4,PB5,PB6,PB7这四个引脚来控制一个LCD模块,在仿真时,LCD能够正常工作。可是烧写到FLASH之后,LCD工作不正常,而其他的功能则正常。而在出现“不能GO MAIN”这个情况之前,烧写的程序曾经正常工作过。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 
有这么大的数组,应该程序中运算量很大。
我以前碰到过这种情况,运算量大,并且DSP工作频率高的话,连续运行时,DSP会不稳定,程序会跑飞;但是在仿真的单步运行时,是运行正常的。
后来我把DSP工作频率降低,程序就工作正常了。你试下降低DSP工作频率看行不行。另外,还要对程序的算法,进行优化,尽量减少乘法、除法和浮点数运算。
 
 
 

回复

48

帖子

0

TA的资源

一粒金砂(初级)

12
 
可是我的程序在调试时就不能GO MAIN,只要减小数组就可以GO MAIN 了。
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

13
 
可能是在进入main以前,处理的东西太多,这个时候看门狗工作了。
你可以把那些赋值什么的放到main里面,在main的开头就对dsp的时钟等进行处理,然后是赋值操作。
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表