其实这里的主要问题是对于/*
** -------------------------- BLOCK 3 ---------------------------------------
** SRAM 0x00070000 to 0x000707FF Long Word (64)
** SRAM 0x000E0000 to 0x000E0AAA Extended Precision Normal or Instruction (48)
** SRAM 0x000E0000 to 0x000E0FFF Normal Word (32)
** SRAM 0x001C0000 to 0x001C1FFF Short Word (16)
*/
的理解有误,其实这里的说法是BLOCK3设为不同width也就是不同位宽的时候的地址范围,也就是BLOCK3的大小就是这么大了,如果你设为64位宽的话,地址范围就是 0x00070000 to 0x000707FF而位宽设为48bit的时候,地址范围就是0x000E0000 to 0x000E0AAA了。所以在以上的ldf文件中,对于block3的存储空间(storage capacity)已经用完了,无论怎么设接下来的width48的ldf都会报错。下面是我后来自行修改的ldf文件,全文详见附件。PS:即使我后来修改了正确的ldf文件,也还是无法再21375上使用sigma studio,因为sigma studio不支持21375,这是我在建立了整个工程,在CCES里面调用sigma studio的一些底层函数的时候的痛苦的领悟。
/*
** -------------------------- BLOCK 3 ---------------------------------------
** SRAM 0x00070000 to 0x000707FF Long Word (64)
** SRAM 0x000E0000 to 0x000E0AAA Extended Precision Normal or Instruction (48)
** SRAM 0x000E0000 to 0x000E0FFF Normal Word (32)
** SRAM 0x001C0000 to 0x001C1FFF Short Word (16)
*/
mem_block3_dm32 { TYPE(DM RAM) START(0x000E0800) END(0x000E0FFF) WIDTH(32) }
/*
** -------------------------- External Memory -------------------------------
*/
mem_sdram_data { TYPE(DM RAM SYNCHRONOUS) START(0x00200000) END(0x004FFFFF) WIDTH(16) }
mem_sdram_code { TYPE(PM RAM SYNCHRONOUS) START(0x00500000) END(0x009FFFFF) WIDTH(16) }
/* mem_sdram_code { TYPE(PM RAM SYNCHRONOUS) START(0x00500000) END(0x00500FFF) WIDTH(48) }*/
mem_flash { TYPE(DM RAM ASYNCHRONOUS) START(0x08000000) END(0x083FFFFF) WIDTH(8) }
/*$VDSG<insert-new-memory-segments> */
/* Text inserted between these $VDSG comments will be preserved */
mem_block3_dm48 {TYPE(DM RAM) START(0x000E0000) END(0x000E0554) WIDTH(48) }
mem_block2_dm48 {TYPE(PM RAM) START(0x000C0000) END(0x000C0554) WIDTH(48) }
「该帖子被 liangbread 在 2014-07-19 17:39:08 编辑过」