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.

CCS6 编译生成Map文件问题



芯片6713B,用CCS6编译程序生成的map文件查看内存占用情况,显示IRAM占用大小为0x000311a8(从0x00000400开始),但是发现在地址0x000315c7(>0x000311a8+0x00000400)后还有一段内存被使用,如下图所示。怎么会出现这种情况呢?

CMD 文件中.const段就是放在IRAM内。

  • 请问你的cmd文件是怎么写的?

  • CMD文件:

    MEMORY
    {
       /* IRAM     o = 0x00000000  l = 0x00040000   192kB + 64kB - Internal RAM */
        BOOT_RAM o = 0x00000000  l = 0x00000400  /* 192kB - Internal RAM */
        IRAM     o = 0x00000400  l = 0x0003FC00  /* 192kB + 64kB  - Internal RAM */
       /* L2RAM    o = 0x00030000  l = 0x00010000   64kB - Internal RAM/CACHE */
        EMIFCE0  o = 0x80000000  l = 0x10000000  /* SDRAM in 6713 DSK */
    
        EXFLASHSYN o = 0x901C3880  l = 0x00000780 
        EXFLASHPN  o = 0x901C4000  l = 0x0003c000  
        EMIFCE2  o = 0xA0000000  l = 0x10000000  /* Daughterboard in 6713 DSK */
        EMIFCE3  o = 0xB0000000  l = 0x10000000  /* Daughterboard in 6713 DSK */
    }
    
    SECTIONS
    {
    	.boot_load      >  BOOT_RAM
        .text          >  IRAM
        .stack         >  IRAM
        .bss           >  IRAM
        .cio           >  IRAM
        .const         >  IRAM
        .data          >  IRAM
        .switch        >  IRAM
        .sysmem        >  IRAM
        .far           >  IRAM
        .args          >  IRAM
        .ppinfo        >  IRAM
        .ppdata        >  IRAM
      
        /* COFF sections */
        .pinit         >  IRAM
        .cinit         >  IRAM
      
        /* EABI sections */
        .binit         >  IRAM
        .init_array    >  IRAM
        .neardata      >  IRAM
        .fardata       >  IRAM
        .rodata        >  IRAM
        .c6xabi.exidx  >  IRAM
        .c6xabi.extab  >  IRAM
        /* Revbuffer */
    	.Rev_bufferinit  > IRAM
    
    
    	 /* Flash 常量存储空间 */
        .my_flash_sys_sync_sect >  EXFLASHSYN
        .my_flash_PN_sect 		>  EXFLASHPN
    }
  • IRAM占用大小为0x000311a8,并不表示一定是到0x400+0x000311a8这个地址为止,在0x400~0x40000(0x400+0x3FC00)这段地址范围内都可以放数据,.const段放到0x000315c7没问题。

  • 我一直以为是占用大小就是到这个地址为止,之前还一直靠这个长度烧写Flash,最近才发现程序烧写后不对啦,看来以后要逻辑要改了,谢谢啦

  • .out文件转换成bin文件应该带有每个段的长度信息,根据每个段的长度信息去烧写。 

  • 嗯,之前一直直接转成不包含段信息的二进制文件了