通过CCS生成的用户程序的out文件转换成ais文件格式,但是运行结果与在线调试的结果不一致!!!
我的程序:1、通过LED是正常的闪烁查看程序的运行的位置,led是可以正常的闪烁的。
2、里面的中断程序也能够正常的执行。
想不通的是生成的AIS镜像文件没有二级引导程序,我的程序是如何加载到内存中去执行的,如何跳转到程序的入口地址的?是不是用户程序中得执行程序的入口地址?
CMD文件code:
-c
-stack 0x40000
-heap 0x1000000
MEMORY
{
VEC o = 0x00800000 l = 0x00000400
DSPL2ROM o = 0x00700000 l = 0x00100000 /* 1MB L2 Internal ROM */
DSPL2RAM o = 0x00800400 l = 0x0003f000 /* 256kB L2 Internal RAM */
DSPL1PRAM o = 0x00E00000 l = 0x00008000 /* 32kB L1 Internal Program RAM */
DSPL1DRAM o = 0x00F00000 l = 0x00008000 /* 32kB L1 Internal Data RAM */
SHDSPL2ROM o = 0x11700000 l = 0x00100000 /* 1MB L2 Shared Internal ROM */
SHDSPL2RAM o = 0x11800000 l = 0x00040000 /* 256kB L2 Shared Internal RAM */
SHDSPL1PRAM o = 0x11E00000 l = 0x00008000 /* 32kB L1 Shared Internal Program RAM */
SHDSPL1DRAM o = 0x11F00000 l = 0x00008000 /* 32kB L1 Shared Internal Data RAM */
EMIFACS0 o = 0x40000000 l = 0x20000000 /* 512MB SDRAM Data (CS0) */
EMIFACS2 o = 0x60000000 l = 0x02000000 /* 32MB Async Data (CS2) */
EMIFACS3 o = 0x62000000 l = 0x02000000 /* 32MB Async Data (CS3) */
EMIFACS4 o = 0x64000000 l = 0x02000000 /* 32MB Async Data (CS4) */
EMIFACS5 o = 0x66000000 l = 0x02000000 /* 32MB Async Data (CS5) */
SHRAM o = 0x80000000 l = 0x00020000 /* 128kB Shared RAM */
DDR2 o = 0xC0000000 l = 0x20000000 /* 512MB DDR2 Data */
}
SECTIONS
{
.vecs > VEC
/* .text > DSPL2RAM*/
.text > SHRAM
/*.stack > DSPL2RAM*/
.stack > SHDSPL2RAM
/*.bss > SHRAM*/
.bss > DDR2
.cio > DSPL2RAM
.const > DSPL2RAM
.data > SHRAM
.switch > DSPL2RAM
/* .sysmem > DSPL2RAM*/
.sysmem > DDR2
/*.far > SHRAM*/
.far > DDR2
.args > DSPL2RAM
.ppinfo > DSPL2RAM
.ppdata > DSPL2RAM
/* COFF sections */
.pinit > SHRAM
/* .cinit > DSPL2RAM*/
.cinit > DDR2
/* EABI sections */
.binit > SHRAM
.init_array > SHRAM
.neardata > SHRAM
.fardata > SHRAM
.rodata > SHRAM
.c6xabi.exidx > SHRAM
.c6xabi.extab > SHRAM
}
中断向量表asm文件:
.global _intcVectorTable .global _c_int00 .global _c674x_nmi_isr .global _c674x_rsvd_int2_isr .global _c674x_rsvd_int3_isr .global _c674x_mask_int4_isr .global _c674x_mask_int5_isr .global _c674x_mask_int6_isr .global _c674x_mask_int7_isr .global _c674x_mask_int8_isr .global _c674x_mask_int9_isr .global _c674x_mask_int10_isr .global _c674x_mask_int11_isr .global _c674x_mask_int12_isr .global _c674x_mask_int13_isr .global _c674x_mask_int14_isr .global _c674x_mask_int15_isr ;********************************************************** ; Interrupt Fetch Packet ;********************************************************** VEC_ENTRY .macro addr STW B0,*--B15 MVKL addr,B0 MVKH addr,B0 B B0 LDW *B15++,B0 NOP 2 NOP NOP .endm ;********************************************************** ; Interrupt Vector Table ;********************************************************** .align 1024 _intcVectorTable: VEC_ENTRY _c_int00 VEC_ENTRY _c674x_nmi_isr VEC_ENTRY _c674x_rsvd_int2_isr VEC_ENTRY _c674x_rsvd_int3_isr VEC_ENTRY _c674x_mask_int4_isr VEC_ENTRY _c674x_mask_int5_isr VEC_ENTRY _c674x_mask_int6_isr VEC_ENTRY _c674x_mask_int7_isr VEC_ENTRY _c674x_mask_int8_isr VEC_ENTRY _c674x_mask_int9_isr VEC_ENTRY _c674x_mask_int10_isr VEC_ENTRY _c674x_mask_int11_isr VEC_ENTRY _c674x_mask_int12_isr VEC_ENTRY _c674x_mask_int13_isr VEC_ENTRY _c674x_mask_int14_isr VEC_ENTRY _c674x_mask_int15_isr