微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > 关于 GO MAIN 的问题

关于 GO MAIN 的问题

时间:10-02 整理:3721RD 点击:
我的段分配如下:

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了.
不知道是什么问题,我应该怎么做?

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

如果数组太大的话,在复位中断程序中,总是从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


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

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

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

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

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

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

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

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

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

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top