TI中文支持网
TI专业的中文技术问题搜集分享网站

C5510A 怎么用GEL,设置stack mode.

C55有两个堆栈模式,fast mode和slow mode。

一般使用.ivec _c_int00,USE_RETA 设置。

但是在线调试时,怎么使用GEL,设置堆栈模式呢?

谢谢

mao zhu:

回复 Shine:

哦,谢谢。
但是,在使用CCS,加载代码到RAM中执行时,RAM中的复位向量是不会执行的呀。

Shine:

回复 mao zhu:

中断向量表不是自己定义的么?

mao zhu:

回复 Shine:

是这样。
当使用CCS加载代码时,
我看到的程序运行,是直接从,入口点,_c_int00,这个函数运行的。
并不是从,复位中断向量 开始的。

谢谢

Shine:

回复 mao zhu:

可以在中断向量表中断0处设置断点,上电后代码会跳转到中断向量表的reset中断开始执行。
_vecs: .ivec _c_int00,use_reta

mao zhu:

回复 Shine:

Hello: I test it, but it don't work.

codes:

.ivec rst_isr,USE_RETA

rst_isr: @IVPD_L = #(_VECSTART >> 8) goto _c_int00

程序,并没有停止在我的断点位置。(@IVPD_L = #(_VECSTART >> 8)),而是直接进入main函数,这时IVPD 为 0xFFFF.

我尝试reset mcu.

CCS显示为 No source available for "0xff8000" 这个时候,IVPD 为 0xFFFF. 但是,程序和GEL中,是设置为0x0100.  _VECSTART = 0x10000; Q1: 为什么,软件复位会导致IVPD变化。(GEL reset和CCS CPU reset, 都尝试过) 谢谢。

Shine:

回复 mao zhu:

1. 没必要写rst_isr, reset中断就是一条_c_int00跳转指令,直接写在中断向量表里就可以了。可以下载csl,参考里面的examples\evm5510\csl\timer\timer1例程的中断向量表写法。
http://www.ti.com/tool/sprc133

2. IVPD的现象正常,请参考下面CPU user guide的说明。
A hardware reset loads the interrupt vector pointer called IVPD with FFFFh
and, thus, forces the CPU to fetch the reset vector from program address
FF FF00h. During a software reset, IVPD remains unchanged; the CPU
fetches the reset vector using the current IVPD value.

www.ti.com/…/spru371f.pdf

mao zhu:

回复 Shine:

你好:

我是通过CCS,把代码加载到RAM中运行。
1. 代码始终没有停止在reset的断点上,而是进入了main()
2. IVPD,soft reset应该不改变,GEL中 GEL_Reset();是软复位吧
3. 我需要,运行加载到ram中的我自己的中断向量表,而不是,ROM中build-in
这个情况,要怎么通过CCS加载调试

谢谢。

Shine:

回复 mao zhu:

有参考过上面csl里的例程吗?在cmd文件里把中断向量表分配到RAM。

MEMORY
{PAGE 0:
MMR: origin = 0000000h, length = 00000c0h SPRAM: origin = 00000c0h, length = 000004
VECS: origin = 0000100h, length = 00100h
….
}
SECTIONS
{.vectors : {} > VECSPAGE 0/* interrupt vector table */
…..
}

mao zhu:

回复 Shine:


请问在c5510上 怎么实现 software reset
谢谢

赞(0)
未经允许不得转载:TI中文支持网 » C5510A 怎么用GEL,设置stack mode.
分享到: 更多 (0)