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.

AM5728: PRU firmware load

Part Number: AM5728
Other Parts Discussed in Thread: SYSBIOS

Hi,

 

My customer is now trying to evaluate PRU-ICSS Dual EMAC on TMDXIDK5728 by using icss_dualemac_PRU0.bin and icss_dualemc_PRU1.bin in \ti\pdk_am57xx_1_0_15\packages\ti\drv\icss_emac\firmware\icss_dualemac\bin\am572x\a15_0\REV2.

 

Could you tell them how to load/write these binary files into what address in which memory ?

They want to use PRU2 ETH0 on TMDXIDK5728.

 

 

 

Actually, they’re using VxWorks. Therefore, the following processes are ported onto VxWorks as Ethernet driver.

- Loading/Writing operation for PRU firmware described above into IRAM and DRAM on PRU-ICSS.

- “pruss” and “icss_emac” under \ti\pdk_am57xx_1_0_15\packages\ti\drv.

 

However, it seems that packets are not sent out. It’s monitored by Wireshark. They could confirm that data from upper layer were written into the transmit queue.

After writing the firmware, they thought that the PRU firmware could be written successfully because the number of PCOUNTER in PRU_STATUS register is increased. Also, they could confirm the Link up when LAN cable was inserted.

 

Q1 : Could you tell them how to write the PRU-ICSS firmware of icss_dualemac_PRU0.bin and icss_dualemac_PRU1.bin ?

              They tried as follows, is this correct ?

 

              They thought that icss_dualemac_PRU0.bin was elf format, and found its section headers by Linux as follows;

 

icss_dualemac_PRU0.bin

   Section Headers :

     [ #] Name             Type         Address Off   Size ES Flg Lk Inf Al

     [ 0]                   NULL           00000000 000000 000000 00     0   0 0

     [ 1] PRU0_REV2_IMEM   PROGBITS       00000000 000034 002000 00 WA 0   0 4

     [ 2] PRU0_REV2_DMEM   PROGBITS       00000000 002034 002000 00 WA 0   0 1

     [ 3] PRU0_REV2_EXT     NOBITS         00000000 004034 001000 00 WA 0   0 1

     [ 4] .symtab           SYMTAB         00000000 004034 0014e0 10     5 333 0

     [ 5] .strtab           STRTAB         00000000 005514 001974 01   S 0   0 0

     [ 6] .shstrtab         STRTAB         00000000 006e88 000047 01   S 0   0 0

  

icss_dualemac_PRU1.bin

     Section Headers :

     [ #] Name             Type         Address Off   Size ES Flg Lk Inf Al

     [ 0]                   NULL           00000000 000000 000000 00     0   0 0

     [ 1] PRU1_REV2_IMEM   PROGBITS       00000000 000034 002000 00 WA 0   0 4

     [ 2] PRU1_REV2_DMEM   PROGBITS       00000000 002034 002000 00 WA 0   0 1

     [ 3] PRU1_REV2_EXT     NOBITS         00000000 004034 001000 00 WA 0   0 1

     [ 4] .symtab           SYMTAB         00000000 004034 001500 10     5 335 0

     [ 5] .strtab           STRTAB         00000000 005534 0019a4 01   S 0   0 0

     [ 6] .shstrtab         STRTAB         00000000 006ed8 000047 01   S 0   0 0

 

Based on the above lists, each firmware were written as follows;

Write PRU0_REV2_IMEM into PRU0 12KiB IRAM ( 0x2000 bytes of icss_dualemac_PRU0.bin is written from the address 0x34.)

Write PRU0_REV2_DMEM into Data 8KiB RAM0 ( 0x2000 bytes of icss_dualemac_PRU0.bin is written from the address 0x2034.)

Write PRU1_REV2_IMEM into PRU1 12KiB IRAM ( 0x2000 bytes of icss_dualemac_PRU1.bin is written from the address 0x34.)

Write PRU1_REV2_DMEM into Data 8KiB RAM1 ( 0x2000 bytes of icss_dualemac_PRU1.bin is written from the address 0x2034.)

 

 

Q2 : Is there any way to verify if PRU firmware could be written successfully and work it correctly ?

 

 

Thanks and regards,

Hideaki