We are trying to define a bunch of 23-word
long memory sections in external memory space on the 2833x and running into
what appear to be random linker errors. There will be a FPGA connected to the
EMIF that looks like memory. We need to link specific TX/RX data structures into these exact memory
locations. Three out of the ten data structures link without error, however 7
fail.
- We have double checked that there is sufficient space between the memory sections and that our data structures are not too long : verification of this is we can re-map one of the failing data structures into one of the “working” memory sections and successfully link. In other words the linker error seems dependant on the specific memory address vs. the data structure we are trying to link in to.
- By changing the starting address of the memory section the linker errors seems to come and go randomly.
o For example
- RT_TX_25_DAT : origin = 0x100B78, length = 0x000023 – this address fails
- RT_TX_25_DAT : origin = 0x100c58, length = 0x000023 – this address links fine.
We are using 4.1.3 compile tools.
See below details and linker error.
******************* mem sections from map *****************************
PAGE 1: RT_MSG_PTR_TBL 00100100 00000080 00000080 RWIX
RT_RX_16_PTR 00100450 00000002 00000002 RWIX
RT_RX_16_DAT 00100458 00000023 00000023 RWIX
RT_RX_17_PTR 00100480 00000002 00000002 RWIX
RT_RX_17_DAT 00100488 00000023 00000023 RWIX
RT_RX_18_PTR 001004b0 00000002 00000002 RWIX
RT_RX_18_DAT 001004b8 00000023 00000000 RWIX
RT_RX_19_PTR 001004e0 00000002 00000002 RWIX
RT_RX_19_DAT 001004e8 00000023 00000000 RWIX
RT_RX_23_PTR 001005a0 00000002 00000002 RWIX
RT_RX_23_DAT 001005a8 00000023 00000000 RWIX
RT_RX_26_PTR 00100630 00000002 00000002 RWIX
RT_RX_26_DAT 00100638 00000023 00000000 RWIX
RT_TX_17_PTR 001009f0 00000002 00000002 RWIX
RT_TX_17_DAT 001009f8 00000023 00000000 RWIX
RT_TX_19_PTR 00100a50 00000002 00000002 RWIX
RT_TX_19_DAT 00100a58 00000023 00000023 RWIX
RT_TX_22_PTR 00100ae0 00000002 00000002 RWIX
RT_TX_22_DAT 00100ae8 00000023 00000000 RWIX
RT_TX_25_PTR 00100b70 00000002 00000002 RWIX
RT_TX_25_DAT 00100b78 00000023 00000000 RWIX
***************************
RT_REGS : origin = 0x100000, length = 0x000020
RT_MSG_PTR_TBL : origin = 0x100100, length = 0x000080
RT_RX_16_PTR : origin = 0x100450, length = 0x000002
RT_RX_16_DAT : origin = 0x100458, length = 0x000023
RT_RX_17_PTR : origin = 0x100480, length = 0x000002
RT_RX_17_DAT : origin = 0x100488, length = 0x000023
RT_RX_18_PTR : origin = 0x1004B0, length = 0x000002
RT_RX_18_DAT : origin = 0x1004B8, length = 0x000023
RT_RX_19_PTR : origin = 0x1004E0, length = 0x000002
RT_RX_19_DAT : origin = 0x1004E8, length = 0x000023
RT_RX_23_PTR : origin = 0x1005A0, length = 0x000002
RT_RX_23_DAT : origin = 0x1005A8, length = 0x000023
RT_RX_26_PTR : origin = 0x100630, length = 0x000002
RT_RX_26_DAT : origin = 0x100638, length = 0x000023
RT_TX_17_PTR : origin = 0x1009F0, length = 0x000002
RT_TX_17_DAT : origin = 0x1009F8, length = 0x000023
RT_TX_19_PTR : origin = 0x100A50, length = 0x000002
RT_TX_19_DAT : origin = 0x100A58, length = 0x000023
RT_TX_22_PTR : origin = 0x100AE0, length = 0x000002
RT_TX_22_DAT : origin = 0x100AE8, length = 0x000023
RT_TX_25_PTR : origin = 0x100B70, length = 0x000002
RT_TX_25_DAT : origin = 0x100B78, length = 0x000023
BUS_MONITOR : origin = 0x101500, length = 0x00EB00
error: can't allocate RxSubAddr18DataTblFile, size 00000023 (page 1) in
RT_RX_18_DAT (avail: 00000023)
>> error: can't allocate RxSubAddr19DataTblFile, size 00000023 (page 1) in
RT_RX_19_DAT (avail: 00000023)
>> error: can't allocate RxSubAddr23DataTblFile, size 00000023 (page 1) in
RT_RX_23_DAT (avail: 00000023)
>> error: can't allocate RxSubAddr26DataTblFile, size 00000023 (page 1) in
RT_RX_26_DAT (avail: 00000023)
>> error: can't allocate TxSubAddr17DataTblFile, size 00000023 (page 1) in
RT_TX_17_DAT (avail: 00000023)
>> error: can't allocate TxSubAddr22DataTblFile, size 00000023 (page 1) in
RT_TX_22_DAT (avail: 00000023)
>> error: can't allocate TxSubAddr25DataTblFile, size 00000023 (page 1) in
RT_TX_25_DAT (avail: 00000023)
>> warning: entry point other than _c_int00 specified
>> error: errors in input - ./Debug/Example_2833xWatchdog.out not built
>> Compilation failure
Any ideas on why some addresses seem to work and others don’t would be appreciated.
Regards,
Brad