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.

Are there any alignment requirements with data/code placement in external memory on the 2833x? Linker issues?


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 

  • Brad,

    The v4.1.3 tools are over 5 years old.  Ask them to upgrade as far as they are comfortable.  Try to have them upgrade to v5.2.4.

    I'd like to see the linker command file, the map file, and the output of running ofd2000 on the object files which contain the input sections which fail to allocate.  For example, collect the output of running ofd2000 on whatever object file contains the section RxSubAddr18DataTblFile .

    Thanks and regards,

    -George

     

  • I saw the requested files via e-mail ... This looks like a bug in the linker.  However, it makes little sense to turn in a bug on such an old toolset without trying a newer toolset first.  There is a pretty good chance this issue has been fixed.  Please work with your customer on that.

    Thanks and regards,

    -George