c6416的Entry Point 在哪个地址上修改啊???和C6455和其他的dsp的Entry Point 不一样。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
c6416的Entry Point 在哪个地址上修改啊???和C6455和其他的dsp的Entry Point 不一样。
你好,怎么从0地址启动啊,写cmd文件吗,这是我的cmd文件;但是entry point 还不是0地址啊???
*Vectors_poll.asm Vector file for polling
.global _vectors
.global _c_int00
.global _vector0
.global _vector1
.global _vector2
.global _vector3
.global _vector4
.global _vector5
.global _vector6
.global _vector7
.global _vector8
.global _vector9
.global _vector10
.global _vector11
.global _vector12
.global _vector13
.global _vector14
.global _vector15
.ref _c_int00 ;entry address
VEC_ENTRY .macro addr
STW B0,*--B15
MVKL addr,B0
MVKH addr,B0
B B0
LDW *B15++,B0
NOP 2
NOP
NOP
.endm
_vec_dummy:
B B3
NOP 5
.sect ".vectors"
.align 1024
_vectors:
_vector0: VEC_ENTRY _c_int00 ;RESET
_vector1: VEC_ENTRY _vec_dummy ;NMI
_vector2: VEC_ENTRY _vec_dummy ;RSVD
_vector3: VEC_ENTRY _vec_dummy
_vector4: VEC_ENTRY _vec_dummy
_vector5: VEC_ENTRY _vec_dummy
_vector6: VEC_ENTRY _vec_dummy
_vector7: VEC_ENTRY _vec_dummy
_vector8: VEC_ENTRY _vec_dummy
_vector9: VEC_ENTRY _vec_dummy
_vector10: VEC_ENTRY _vec_dummy
_vector11: VEC_ENTRY _vec_dummy
_vector12: VEC_ENTRY _vec_dummy
_vector13: VEC_ENTRY _vec_dummy
_vector14: VEC_ENTRY _vec_dummy
_vector15: VEC_ENTRY _vec_dummy
是*.asm文件。 您的Vectors_poll.asm 应该实现了这个功能。 理论上,DSP脱离复位后,会从0地址运行,_vector0处的代码显示PC指针会跳转到_c_int00.
在您的CMD文件中,把.vectors段指定到0地址了吗?
下面是CMD文件的例子:
MEMORY
{
VECS o=0x00000000 l=0x00000800
L2: o=0x00000800 l=0x000DF800
L2CACHE: o=0x000E0000 l=0x00020000
SDRAM: o=0x80000000 l=0x00800000
}
SECTIONS
{
.vectors > VECS
.bss > L2
.far > SDRAM
.data > L2
.text > L2
.cio > L2
.cinit > L2
.boot > L2
.const > L2
.stack > L2
.sysmem > L2
}
如果还有问题,您把具体测试方式和实验现象描述一下。
你好,谢谢你以前的帮助,现在我又遇到一个问题了,能否帮我解释一下啊,非常谢谢了!
C6416 EMIFA 这样配置寄存器 然后向外部存储器的三个地址写数据,最后观看CCS的memory为什么出现0xA0000000以后的所有地址都是一个值啊???都是0xFFFFFFFF,而不是0xA0000000是0x55555555,0xA0000004是0x12345678,0xA0000008是0xFFFFFFF?????
程序如下:
#include <csl.h>
#include <csl_emifa.h>
#include <stdio.h>
#define EMIFA_CE3_BASE_ADDR1 0xA0000000
#define EMIFA_CE3_BASE_ADDR2 0xA0000004
#define EMIFA_CE3_BASE_ADDR3 0xA0000008
EMIFA_Config emifaCfg0 = {
0x0009207C,
0xFFFFFFD3,
0xFFFFFF03,
0xFFFFFF43,
0x6326CC22,
0x57116000,
0x0008061A,
0x00054549,
0x00000042,
0x00000042,
0x00000042,
0x00000042
};
Uint32 index, tempData1,tempData2,tempData3;
Uint32 *pAsyncData1 = (Uint32 *)EMIFA_CE3_BASE_ADDR1;
Uint32 *pAsyncData2 = (Uint32 *)EMIFA_CE3_BASE_ADDR2;
Uint32 *pAsyncData3 = (Uint32 *)EMIFA_CE3_BASE_ADDR3;
void main()
{
/*Initialise CSL,???CSL?*/
CSL_init();
EMIFA_config(&emifaCfg0);
tempData1 = 0x55555555;
tempData2 = 0x12345678;
tempData3 = 0xFFFFFFFF;
index=0;
while(1){
*pAsyncData1 = tempData1;
*pAsyncData2 = tempData2;
*pAsyncData3 = tempData3;
}
printf("\nAsynchronous Read Write is Successful\n");
return;
}