What are the limitations of debugging software applications located in ISOCM memory? Can I read and write the memory? Can I specify a breakpoint?
Before reading the answers to these questions, look at the MHS file connections between the ISOCM CNTLR and the block RAM.
Example MHS section:
PARAMETER INSTANCE = isbram_if_cntlr_0
PARAMETER HW_VER = 3.00.a
PARAMETER C_BASEADDR = 0x50000000
PARAMETER C_HIGHADDR = 0x50000FFF
BUS_INTERFACE DCR_WRITE_PORT = isocm_porta
BUS_INTERFACE INSTRN_READ_PORT = isocm_portb
BUS_INTERFACE ISOCM = isocm_i
PORT BRAMISOCMCLK = plb_clk
PARAMETER INSTANCE = bram_block_2
PARAMETER HW_VER = 1.00.a
BUS_INTERFACE PORTA = isocm_porta
BUS_INTERFACE PORTB = isocm_portb
Note that both ports of the dual-port block RAM are connected, one for DCR writes and one for Instruction reads. As a result, ISOCM memory cannot be read on the data path, which means that GDB cannot specify any software breakpoints. GDB/XMD does allow you to specify up to four hardware breakpoints in the ISOCM memory space.
The ISOCM memory data path restriction will not allow you to read from ISOCM memory, from XMD, or GDB; you must also not use the Memory Window in GDB.