9.2i EDK / SimGen  – “警告:MDT  –  …. \ executable.elf不完全驻留在处理器ppc405_0的BRAM内存中”-Altera-Intel社区-FPGA CPLD-ChipDebug

9.2i EDK / SimGen – “警告:MDT – …. \ executable.elf不完全驻留在处理器ppc405_0的BRAM内存中”

问题描述

我在ISOCM和DSOCM上有一个带Block RAM的PowerPC系统,DSOCM-BRAM的第二个端口连接到opb_if_cntrl。如果我运行SimGen或BRAM_INIT,则会出现以下消息,表明我的.elf文件并未完全驻留在Block RAM内存中:

“警告:MDT – Elf文件C:\ …….. \ executable.elf不驻留

完全在处理器ppc405_0的BRAM内存中。

警告:MDT – 必须初始化驻留在BRAM外部的ELF部分

单独使用调试器,引导加载程序或ACE文件“

解决/修复方法

这通常发生在OPB_BRAM控制器和DSOCM-BRAM控制器连接到同一个Block RAM(端口A上的OPB,端口B上的DSOCM)的设置中。

由于生成BMM文件中的某些设计规则,内存未初始化并且工具正在生成警告。

如果使用Block RAM的两个端口,BMM文件将反映PORTA的地址范围。

端口A连接到OPB_BRAM控制器,因此BMM语法中块RAM模块的地址范围是:

ADDRESS_BLOCK exchange_memory RAMB16 [0x10000000:0x10003fff]

ADDRESS_BLOCK exchange_memory RAMB16 [0x10000000:0x10003fff]

BUS_BLOCK

exchange_memory / exchange_memory / ramb16_0 [31:28];

exchange_memory / exchange_memory / ramb16_1 [27:24];

exchange_memory / exchange_memory / ramb16_2 [23:20];

exchange_memory / exchange_memory / ramb16_3 [19:16];

exchange_memory / exchange_memory / ramb16_4 [15:12];

exchange_memory / exchange_memory / ramb16_5 [11:8];

exchange_memory / exchange_memory / ramb16_6 [7:4];

exchange_memory / exchange_memory / ramb16_7 [3:0];

END_BUS_BLOCK;

END_ADDRESS_BLOCK;

这会导致将编译数据添加到Block RAM中的问题,因为.elf文件包含以下标头:

部分:

Idx名称大小VMA LMA文件关闭Algn

0 .vectors 00000000 ffffc000 ffffc000 000005e0 2 ** 0

内容

1 .text 000001e8 ffffc000 ffffc000 000003e4 2 ** 2

内容,ALLOC,LOAD,CODE

2 .rodata 00000002 f0000000 f0000000 000000b4 2 ** 2

内容,ALLOC,LOAD,READONLY,DATA

3 .fixup 00000014 f0000004 f0000004 000000bc 2 ** 2

内容,ALLOC,负载,数据

4 .got1 00000000 f0000018 f0000018 000005e0 2 ** 0

内容

5 .got2 00000020 f0000018 f0000018 000000d0 2 ** 2

内容,ALLOC,负载,数据

6 .sdata2 00000000 f0000038 f0000038 000000f0 2 ** 2

内容,ALLOC,LOAD,READONLY,DATA

7 .sbss2 00000000 f0000038 f0000038 000005e0 2 ** 0

内容

8。数据000002f0 f0000038 f0000038 000000f0 2 ** 3

内容,ALLOC,负载,数据

9 .sdata 00000004 f0000328 f0000328 000003e0 2 ** 2

内容,ALLOC,负载,数据

10 .sbss 00000000 f000032c f000032c 000005e0 2 ** 0

11 .bss 00000000 f000032c f000032c 000003e4 2 ** 0

ALLOC

12 .boot0 00000010 ffffc1e8 ffffc1e8 000005cc 2 ** 0

内容,ALLOC,LOAD,READONLY,CODE

13 .boot 00000004 fffffffc fffffffc 000005dc 2 ** 0

内容,ALLOC,LOAD,READONLY,CODE

14 .eh_frame 00000000 f000032c f000032c 000005e0 2 ** 0

内容

15 bss_stack 00000404 f000032c f000032c 000003e4 2 ** 0

ALLOC

16 bss_heap 00000400 f0000730 f0000730 000003e4 2 ** 0

ALLOC

17 .stab 00000f60 00000000 00000000 000005e0 2 ** 2

内容,随便,调试

18 .stabstr 000027dd 00000000 00000000 00001540 2 ** 0

内容,随便,调试

19 .comment 000000a2 00000000 00000000 00003d1d 2 ** 0

内容,READONLY

现在,DSOCM位于0x10000000(来自MHS文件),因此.elf文件包含该区域中数据区域的内容。

要解决此问题,请交换Block RAM实例上的端口A和B,以便DSOCM控制器连接到端口A.这将修改BMM文件,使块RAM地址为0xF0000000。完成此修改后,将生成以下BMM文件:

ADDRESS_BLOCK exchange_memory RAMB16 [0xf0000000:0xf0003fff]

BUS_BLOCK

exchange_memory / exchange_memory / ramb16_0 [31:28];

exchange_memory / exchange_memory / ramb16_1 [27:24];

exchange_memory / exchange_memory / ramb16_2 [23:20];

exchange_memory / exchange_memory / ramb16_3 [19:16];

exchange_memory / exchange_memory / ramb16_4 [15:12];

exchange_memory / exchange_memory / ramb16_5 [11:8];

exchange_memory / exchange_memory / ramb16_6 [7:4];

exchange_memory / exchange_memory / ramb16_7 [3:0];

END_BUS_BLOCK;

END_ADDRESS_BLOCK;

请登录后发表评论

    没有回复内容