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.

AM6422: PRU booting failure memory copy failed for da 0x200

Part Number: AM6422

Tool/software:

Hi,

i have a custom board with own yocto linux build. Right now i booting from sdcard. Looks good so far.

I trying porting pru1_0 code from am43 to am64. I can load and start different binary without any problem. /sys/class/remoteproc/remoteproc6/state print it is "running".

What i am observing is that the binary .out (elf-file) is more then double the size of am43 for the same code. Why? The final size of my binary is ~168KB. If i try to load and start the binary i am getting:

If i remove some code and the final binary i a lil bit smaller ~164K, i have not problem.

The map file looks ok:

******************************************************************************
                     PRU Linker Unix v2.3.3                    
******************************************************************************
>> Linked Wed Feb 12 16:56:59 2025

OUTPUT FILE NAME:   <gen/PRU1/PRU_Display_1.out>
ENTRY POINT SYMBOL: "_c_int00_noinit_noargs"  address: 00000000


MEMORY CONFIGURATION

         name            origin    length      used     unused   attr    fill
----------------------  --------  ---------  --------  --------  ----  --------
PAGE 0:
  PRU_IMEM              00000000   00003000  00000834  000027cc  RWIX

PAGE 1:
  PRU1_DMEM_1           00000000   00001000  00000277  00000d89  RWIX
  RTU1_DMEM_1           00001000   00000800  00000000  00000800  RWIX
  TX_PRU1_DMEM_1        00001800   00000800  00000000  00000800  RWIX
  PRU1_DMEM_0           00002000   00001000  00000000  00001000  RWIX
  RTU1_DMEM_0           00003000   00000800  00000000  00000800  RWIX
  TX_PRU1_DMEM_0        00003800   00000800  00000000  00000800  RWIX

PAGE 2:
  PRU_RTU_RAT1          00009000   00000854  00000000  00000854  RWIX
  PRU_SHAREDMEM         00010000   00010000  00000000  00010000  RWIX
  PRU_INTC              00020000   00001504  00001504  00000000  RWIX
  PRU1_CTRL             00024000   00000030  00000000  00000030  RWIX
  RSVD14                00024800   00000100  00000000  00000100  RWIX
  PRU_CFG               00026000   00000100  00000000  00000100  RWIX
  PRU_CFG_0x100         00026100   00000098  00000000  00000098  RWIX
  PA_STATS_QRAM         00027000   00001000  00000000  00001000  RWIX
  PRU_UART              00028000   00000038  00000000  00000038  RWIX
  TM_CFG_PRU1           0002a200   0000004c  00000000  0000004c  RWIX
  PA_STATS_CRAM         0002c000   00001000  00000000  00001000  RWIX
  PRU_IEP0              0002e000   00000100  00000000  00000100  RWIX
  PRU_IEP0_0x100        0002e100   0000021c  00000000  0000021c  RWIX
  PRU_IEP1              0002f000   00000100  00000000  00000100  RWIX
  PRU_IEP1_0x100        0002f100   0000021c  00000000  0000021c  RWIX
  PRU_ECAP              00030000   00000060  00000000  00000060  RWIX
  MII_RT                00032000   00000070  00000000  00000070  RWIX
  MII_MDIO              00032400   00000088  00000000  00000088  RWIX
  MII_G_RT              00033000   00000f44  00000000  00000f44  RWIX
  RSVD15                60000000   00000100  00000000  00000100  RWIX
  RSVD16                70000000   00000100  00000000  00000100  RWIX
  RSVD17                80000000   00000100  00000000  00000100  RWIX
  RSVD18                90000000   00000100  00000000  00000100  RWIX
  RSVD19                a0000000   00000100  00000000  00000100  RWIX
  RSVD20                b0000000   00000100  00000000  00000100  RWIX
  RSVD23                c0000000   00000100  00000000  00000100  RWIX
  RSVD29                d0000000   00010000  00000000  00010000  RWIX
  RSVD30                e0000000   00010000  00000000  00010000  RWIX
  RSVD31                f0000000   00010000  00000000  00010000  RWIX


SECTION ALLOCATION MAP

 output                                  attributes/
section   page    origin      length       input sections
--------  ----  ----------  ----------   ----------------
.text:_c_int00* 
*          0    00000000    0000001c     
                  00000000    0000001c     rtspruv3_le.lib : boot.c.obj (.text:_c_int00_noinit_noargs)

.text      0    0000001c    00000818     
                  0000001c    0000036c     main.object (.text:DisplayLoop)
                  00000388    000000f0     spi.object (.text:SpiTxRx)
                  00000478    000000a8     spi.object (.text:SpiSetup)
                  00000520    000000a0     main.object (.text:SignalEvent)
                  000005c0    00000064     main.object (.text:CheckForRunStopTelegram)
                  00000624    0000005c     main.object (.text:SetDefaultTeleV2)
                  00000680    0000005c     main.object (.text:SetTextTeleV2)
                  000006dc    00000054     spi.object (.text:SpiReset)
                  00000730    00000048     main.object (.text:CheckForDefaultTelegram)
                  00000778    00000048     main.object (.text:main)
                  000007c0    00000034     rtspruv3_le.lib : memcpy.asm.obj (.text)
                  000007f4    00000030     crcfcts.object (.text:UtilCRC8)
                  00000824    00000008     rtspruv3_le.lib : exit.c.obj (.text:abort)
                  0000082c    00000008                     : exit.c.obj (.text:loader_exit)

.stack     1    00000108    00000100     UNINITIALIZED
                  00000108    00000004     rtspruv3_le.lib : boot.c.obj (.stack)
                  0000010c    000000fc     --HOLE--

.data      1    00000208    0000006f     
                  00000208    00000058     main.object (.data:sReadBuf)
                  00000260    00000017     main.object (.data)

.cinit     1    00000000    00000000     UNINITIALIZED

.rodata    1    00000000    00000108     
                  00000000    00000100     crcfcts.object (.rodata:.string:abyCRC8Tab)
                  00000100    00000008     main.object (.rodata:.string)

.creg.PRU_INTC.noload.near 
*          2    00020000    00000000     NOLOAD SECTION

.creg.PRU_INTC.near 
*          2    00020000    00000000     UNINITIALIZED

.creg.PRU_INTC.noload.far 
*          2    00020000    00001504     NOLOAD SECTION
                  00020000    00001504     main.object (.creg.PRU_INTC.noload.far)

.creg.PRU_INTC.far 
*          2    00021504    00000000     UNINITIALIZED

MODULE SUMMARY

       Module           code   ro data   rw data
       ------           ----   -------   -------
    gen/PRU1/
       main.object      1464   8         5491   
       spi.object       492    0         0      
       crcfcts.object   48     256       0      
    +--+----------------+------+---------+---------+
       Total:           2004   264       5491   
                                                
    /home/chris/ti/ti-processor-sdk-linux-rt-am64xx-evm-10.00.07.04/linux-devkit/sysroots/x86_64-arago-linux/usr/share/ti/cgt-pru//lib/rtspruv3_le.lib
       memcpy.asm.obj   52     0         0      
       boot.c.obj       28     0         0      
       exit.c.obj       16     0         0      
    +--+----------------+------+---------+---------+
       Total:           96     0         0      
                                                
       Stack:           0      0         256    
    +--+----------------+------+---------+---------+
       Grand Total:     2100   264       5747   


SEGMENT ATTRIBUTES

    id tag      seg value
    -- ---      --- -----
     0 PHA_PAGE 1   1    
     1 PHA_PAGE 2   1    
     2 PHA_PAGE 3   1    


GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name 

page  address   name                          
----  -------   ----                          
0     0000082c  C$$EXIT                       
2     00020000  CT_INTC                       
0     000006dc  SpiReset                      
0     00000478  SpiSetup                      
0     00000388  SpiTxRx                       
0     000007f4  UtilCRC8                      
abs   00033000  __PRU_CREG_BASE_MII_G_RT      
abs   00032400  __PRU_CREG_BASE_MII_MDIO      
abs   00032000  __PRU_CREG_BASE_MII_RT        
abs   0002c000  __PRU_CREG_BASE_PA_STATS_CRAM 
abs   00027000  __PRU_CREG_BASE_PA_STATS_QRAM 
abs   00024000  __PRU_CREG_BASE_PRU1_CTRL     
abs   00002000  __PRU_CREG_BASE_PRU1_DMEM_0   
abs   00000000  __PRU_CREG_BASE_PRU1_DMEM_1   
abs   00026000  __PRU_CREG_BASE_PRU_CFG       
abs   00026100  __PRU_CREG_BASE_PRU_CFG_0x100 
abs   00030000  __PRU_CREG_BASE_PRU_ECAP      
abs   0002e000  __PRU_CREG_BASE_PRU_IEP0      
abs   0002e100  __PRU_CREG_BASE_PRU_IEP0_0x100
abs   0002f000  __PRU_CREG_BASE_PRU_IEP1      
abs   0002f100  __PRU_CREG_BASE_PRU_IEP1_0x100
abs   00020000  __PRU_CREG_BASE_PRU_INTC      
abs   00009000  __PRU_CREG_BASE_PRU_RTU_RAT1  
abs   00010000  __PRU_CREG_BASE_PRU_SHAREDMEM 
abs   00028000  __PRU_CREG_BASE_PRU_UART      
abs   00024800  __PRU_CREG_BASE_RSVD14        
abs   60000000  __PRU_CREG_BASE_RSVD15        
abs   70000000  __PRU_CREG_BASE_RSVD16        
abs   80000000  __PRU_CREG_BASE_RSVD17        
abs   90000000  __PRU_CREG_BASE_RSVD18        
abs   a0000000  __PRU_CREG_BASE_RSVD19        
abs   b0000000  __PRU_CREG_BASE_RSVD20        
abs   c0000000  __PRU_CREG_BASE_RSVD23        
abs   d0000000  __PRU_CREG_BASE_RSVD29        
abs   e0000000  __PRU_CREG_BASE_RSVD30        
abs   f0000000  __PRU_CREG_BASE_RSVD31        
abs   0002a200  __PRU_CREG_BASE_TM_CFG_PRU1   
abs   00000009  __PRU_CREG_MII_G_RT           
abs   00000015  __PRU_CREG_MII_MDIO           
abs   0000001b  __PRU_CREG_MII_RT             
abs   0000000d  __PRU_CREG_PA_STATS_CRAM      
abs   0000000c  __PRU_CREG_PA_STATS_QRAM      
abs   0000000b  __PRU_CREG_PRU1_CTRL          
abs   00000019  __PRU_CREG_PRU1_DMEM_0        
abs   00000018  __PRU_CREG_PRU1_DMEM_1        
abs   00000004  __PRU_CREG_PRU_CFG            
abs   00000005  __PRU_CREG_PRU_CFG_0x100      
abs   00000003  __PRU_CREG_PRU_ECAP           
abs   0000001a  __PRU_CREG_PRU_IEP0           
abs   00000008  __PRU_CREG_PRU_IEP0_0x100     
abs   00000001  __PRU_CREG_PRU_IEP1           
abs   00000002  __PRU_CREG_PRU_IEP1_0x100     
abs   00000000  __PRU_CREG_PRU_INTC           
abs   00000016  __PRU_CREG_PRU_RTU_RAT1       
abs   0000001c  __PRU_CREG_PRU_SHAREDMEM      
abs   00000007  __PRU_CREG_PRU_UART           
abs   0000000e  __PRU_CREG_RSVD14             
abs   0000000f  __PRU_CREG_RSVD15             
abs   00000010  __PRU_CREG_RSVD16             
abs   00000011  __PRU_CREG_RSVD17             
abs   00000012  __PRU_CREG_RSVD18             
abs   00000013  __PRU_CREG_RSVD19             
abs   00000014  __PRU_CREG_RSVD20             
abs   00000017  __PRU_CREG_RSVD23             
abs   0000001d  __PRU_CREG_RSVD29             
abs   0000001e  __PRU_CREG_RSVD30             
abs   0000001f  __PRU_CREG_RSVD31             
abs   0000000a  __PRU_CREG_TM_CFG_PRU1        
1     00000208  __TI_STACK_END                
abs   00000100  __TI_STACK_SIZE               
abs   ffffffff  __c_args__                    
0     00000000  _c_int00_noinit_noargs        
1     00000108  _stack                        
0     00000824  abort                         
0     00000778  main                          
0     000007c0  memcpy                        


GLOBAL SYMBOLS: SORTED BY Symbol Address 

page  address   name                          
----  -------   ----                          
0     00000000  _c_int00_noinit_noargs        
0     00000388  SpiTxRx                       
0     00000478  SpiSetup                      
0     000006dc  SpiReset                      
0     00000778  main                          
0     000007c0  memcpy                        
0     000007f4  UtilCRC8                      
0     00000824  abort                         
0     0000082c  C$$EXIT                       
1     00000108  _stack                        
1     00000208  __TI_STACK_END                
2     00020000  CT_INTC                       
abs   00000000  __PRU_CREG_BASE_PRU1_DMEM_1   
abs   00000000  __PRU_CREG_PRU_INTC           
abs   00000001  __PRU_CREG_PRU_IEP1           
abs   00000002  __PRU_CREG_PRU_IEP1_0x100     
abs   00000003  __PRU_CREG_PRU_ECAP           
abs   00000004  __PRU_CREG_PRU_CFG            
abs   00000005  __PRU_CREG_PRU_CFG_0x100      
abs   00000007  __PRU_CREG_PRU_UART           
abs   00000008  __PRU_CREG_PRU_IEP0_0x100     
abs   00000009  __PRU_CREG_MII_G_RT           
abs   0000000a  __PRU_CREG_TM_CFG_PRU1        
abs   0000000b  __PRU_CREG_PRU1_CTRL          
abs   0000000c  __PRU_CREG_PA_STATS_QRAM      
abs   0000000d  __PRU_CREG_PA_STATS_CRAM      
abs   0000000e  __PRU_CREG_RSVD14             
abs   0000000f  __PRU_CREG_RSVD15             
abs   00000010  __PRU_CREG_RSVD16             
abs   00000011  __PRU_CREG_RSVD17             
abs   00000012  __PRU_CREG_RSVD18             
abs   00000013  __PRU_CREG_RSVD19             
abs   00000014  __PRU_CREG_RSVD20             
abs   00000015  __PRU_CREG_MII_MDIO           
abs   00000016  __PRU_CREG_PRU_RTU_RAT1       
abs   00000017  __PRU_CREG_RSVD23             
abs   00000018  __PRU_CREG_PRU1_DMEM_1        
abs   00000019  __PRU_CREG_PRU1_DMEM_0        
abs   0000001a  __PRU_CREG_PRU_IEP0           
abs   0000001b  __PRU_CREG_MII_RT             
abs   0000001c  __PRU_CREG_PRU_SHAREDMEM      
abs   0000001d  __PRU_CREG_RSVD29             
abs   0000001e  __PRU_CREG_RSVD30             
abs   0000001f  __PRU_CREG_RSVD31             
abs   00000100  __TI_STACK_SIZE               
abs   00002000  __PRU_CREG_BASE_PRU1_DMEM_0   
abs   00009000  __PRU_CREG_BASE_PRU_RTU_RAT1  
abs   00010000  __PRU_CREG_BASE_PRU_SHAREDMEM 
abs   00020000  __PRU_CREG_BASE_PRU_INTC      
abs   00024000  __PRU_CREG_BASE_PRU1_CTRL     
abs   00024800  __PRU_CREG_BASE_RSVD14        
abs   00026000  __PRU_CREG_BASE_PRU_CFG       
abs   00026100  __PRU_CREG_BASE_PRU_CFG_0x100 
abs   00027000  __PRU_CREG_BASE_PA_STATS_QRAM 
abs   00028000  __PRU_CREG_BASE_PRU_UART      
abs   0002a200  __PRU_CREG_BASE_TM_CFG_PRU1   
abs   0002c000  __PRU_CREG_BASE_PA_STATS_CRAM 
abs   0002e000  __PRU_CREG_BASE_PRU_IEP0      
abs   0002e100  __PRU_CREG_BASE_PRU_IEP0_0x100
abs   0002f000  __PRU_CREG_BASE_PRU_IEP1      
abs   0002f100  __PRU_CREG_BASE_PRU_IEP1_0x100
abs   00030000  __PRU_CREG_BASE_PRU_ECAP      
abs   00032000  __PRU_CREG_BASE_MII_RT        
abs   00032400  __PRU_CREG_BASE_MII_MDIO      
abs   00033000  __PRU_CREG_BASE_MII_G_RT      
abs   60000000  __PRU_CREG_BASE_RSVD15        
abs   70000000  __PRU_CREG_BASE_RSVD16        
abs   80000000  __PRU_CREG_BASE_RSVD17        
abs   90000000  __PRU_CREG_BASE_RSVD18        
abs   a0000000  __PRU_CREG_BASE_RSVD19        
abs   b0000000  __PRU_CREG_BASE_RSVD20        
abs   c0000000  __PRU_CREG_BASE_RSVD23        
abs   d0000000  __PRU_CREG_BASE_RSVD29        
abs   e0000000  __PRU_CREG_BASE_RSVD30        
abs   f0000000  __PRU_CREG_BASE_RSVD31        
abs   ffffffff  __c_args__                    

[76 symbols]

Could you please help me to analyze?

Thanks a lot

Chris