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.

PROCESSOR-SDK-AM65X: Source code for PG2 version of icss_dualmac firmware

Part Number: PROCESSOR-SDK-AM65X

Dear TI team,

we're currently facing issues with the PRU icss_dualmac firmware (or maybe the driver, or how we use the driver) that comes with the processor SDK RTOS 06.03. While trying to debug this we noticed that the sources in packages/ti/drv/emac/firmware/icss_dualmac/src apparently match the firmware "binaries" from packages/ti/drv/emac/firmware/icss_dualmac/bin, but that we're unable to build the binaries from bin_pg2.

I've also checked the new 07.00 SDK, and that seems to be unable to rebuild bin_pg2, too.

Is the source code for the PG2.0 firmware available somewhere? Do you plan to release that source code?

Regards,

Dominic

  • Hi,

    Can you share ?

    1. Build steps

    2. Build log

    Regards

    Vineet

  • AM65x - build icss_dualmac firmware.txt
       E:\IBV\PROJEKTE\[...]\WORKSPACE\ti\pdk_am65xx_1_0_7\packages\ti\drv\emac\firmware\icss_dualmac\src>make clean
       cmd /c "rmdir /Q /S ..\bin"
    
       E:\IBV\PROJEKTE\[...]\WORKSPACE\ti\pdk_am65xx_1_0_7\packages\ti\drv\emac\firmware\icss_dualmac\src>make
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/xdctools_3_55_02_22_core/gmake mkversion
       gmake[1]: Entering directory 'E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/src'
       gmake[1]: Nothing to be done for 'mkversion'.
       gmake[1]: Leaving directory 'E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/src'
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/xdctools_3_55_02_22_core/gmake BLDT=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin all_bins
       gmake[1]: Entering directory 'E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/src'
       mkdir -p E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  -al --preproc_with_compile -eo.opru  \
               -DRGMII -DMAC  -DSLICE0 -DPRU0 -fr=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0 \
               -fs=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0 --preproc_dependency="rxl2_txl2.d" rxl2_txl2.asm
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  --define=RGMII -z --stack_size=0 --heap_size=0 --reread_libs --warn_sections \
               --entry_point=Start E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.opru pru.cmd \
               -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.out -m E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.map \
               --xml_link_info="E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2_linkInfo.xml"
       <Linking>
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/hexpru --array --array:name_prefix=PDSPcode --array:page0_type_size=32 \
                                             --exclude=.resource_table \
                                             E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.out -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0_bin.h
       Translating to Array format...
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.out" .text:Start ==> .text:Start
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii0/rxl2_txl2.out" .version_string ==> .version_string
       mkdir -p E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  -al --preproc_with_compile -eo.opru  \
               -DRGMII -DMAC  -DSLICE1 -DPRU1 -fr=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1 \
               -fs=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1 --preproc_dependency="rxl2_txl2.d" rxl2_txl2.asm
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  --define=RGMII -z --stack_size=0 --heap_size=0 --reread_libs --warn_sections \
               --entry_point=Start E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.opru pru.cmd \
               -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.out -m E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.map \
               --xml_link_info="E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2_linkInfo.xml"
       <Linking>
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/hexpru --array --array:name_prefix=PDSP3code --array:page0_type_size=32 \
                                             --exclude=.resource_table \
                                             E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.out -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1_bin.h
       Translating to Array format...
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.out" .text:Start ==> .text:Start
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rxl2_txl2_rgmii1/rxl2_txl2.out" .version_string ==> .version_string
       mkdir -p E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  -al --preproc_with_compile -eo.opru  \
               -ss \
               -DRGMII -DMAC  -DSLICE0 -DRTU0 -DDO_PSI_ABORT -fr=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0 \
               -fs=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0 --preproc_dependency="rtu_v2.d" rtu_v2.asm
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  --define=RGMII -z --stack_size=0 --heap_size=0 --reread_libs --warn_sections \
               --entry_point=Start E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.opru pru.cmd \
               -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.out -m E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.map \
               --xml_link_info="E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2_linkInfo.xml"
       <Linking>
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/hexpru --array --array:name_prefix=PDSP2code --array:page0_type_size=32 \
                                             --exclude=.resource_table \
                                             E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.out -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0_bin.h
       Translating to Array format...
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.out" .text:Start ==> .text:Start
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test0/rtu_v2.out" .version_string ==> .version_string
       mkdir -p E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  -al --preproc_with_compile -eo.opru  \
               -ss \
               -DRGMII -DMAC  -DSLICE1 -DRTU1 -DDO_PSI_ABORT -fr=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1 \
               -fs=E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1 --preproc_dependency="rtu_v2.d" rtu_v2.asm
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/clpru --endian=little -v4 -g --diag_wrap=off --diag_warning=225 --display_error_number --hardware_mac=on --code_address_listing_unit=word  --define=RGMII -z --stack_size=0 --heap_size=0 --reread_libs --warn_sections \
               --entry_point=Start E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.opru pru.cmd \
               -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.out -m E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.map \
               --xml_link_info="E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2_linkInfo.xml"
       <Linking>
       E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/ti-cgt-pru_2.3.2/bin/hexpru --array --array:name_prefix=PDSP4code --array:page0_type_size=32 \
                                             --exclude=.resource_table \
                                             E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.out -o E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1_bin.h
       Translating to Array format...
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.out" .text:Start ==> .text:Start
          "E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/bin/rtu_test1/rtu_v2.out" .version_string ==> .version_string
       gmake[1]: Leaving directory 'E:/IBV/PROJEKTE/[...]/WORKSPACE/ti/pdk_am65xx_1_0_7/packages/ti/drv/emac/firmware/icss_dualmac/src'
    
       E:\IBV\PROJEKTE\[...]\WORKSPACE\ti\pdk_am65xx_1_0_7\packages\ti\drv\emac\firmware\icss_dualmac\src>
    Hello Vineet,

    my steps to build the firmware are:

    - Have processor SDK RTOS 06.03 installed somewhere

    - Open a cmd prompt, go to pdk_am65xx_1_0_7\packages\, run pdksetupenv.bat

    - Got do ti\drv\emac\firmware\icss_dualmac\src folder

    - run make clean

    - run make

    I've attached the build output. The files match the ones that came with the binary installer. If I perform the same steps on Linux, the resulting binaries are mostly the same, except for the version string at the end of the file.

    All that said, I'm not sure what good this will do. There just is no makefile that would create the bin_pg2/ files. The makefile in the src folder only create the bin/ files.

    Regards,

    Dominic

  • Hi Dominic,

    I can confirm that just giving a make command inside packages/ti/driv/emac/firmware/icss_dualmac/src doesn't build the firmware and the specific instructions seem to be missing.

    We will follow up on this and fix it.

    Meanwhile you can use the following steps to build on Linux (equivalent command on Windows)

    1. Go to pdk_am65xx_1_0_7\packages and run source pdksetupenv.sh

    2. Download and install https://www.ti.com/tool/download/PRU-CGT-2-3

    3. Run export CL_PRU_INSTALL_PATH=/home/vineet/ti/ti-cgt-pru_2.3.3

    4. Go to pdk_am65xx_1_0_7\packages\ti\drv\emac and run make all DISABLE_RECURSE_DEPS=no (will build any PDK dependencies even if using debug build)

    This will build firmware as well.

    Regards

    Vineet

  • Hello Vineet,

    thanks for your feedback, but I'm not sure what you're trying to tell me.

    Vineet Roy said:
    I can confirm that just giving a make command inside packages/ti/driv/emac/firmware/icss_dualmac/src doesn't build the firmware and the specific instructions seem to be missing.

    My issue is not that building "the firmware" fails, my issue is that building the PG 2.0 firmware fails. I'm able to build the firmware in emac/firmware/icss_dualmac/bin/ just fine, as you can see in the build log I attached to my previous post.

    The problem is that there is just no makefile that would build the files under emac/firmware/icss_dualmac/bin_pg2/.

    I'm still running the make command you suggested, and that tried to build the icss_dualmac/bin/, but doesn't attempt to build the bin_pg/ files. Did you succeed in re-building the files under bin_pg2?

    Regards,

    Dominic

    Edit:

    The build just finished, and it did rebuild the firmware under bin/, but not the firmware under bin_pg2. Like I said this doesn't come as a surprise, since there just is no makefile (most likely no sources) that would build the PG2.0 firmware.

  • It would be great if you could give us some feedback on this issue.

    - The released SDK comes with firmware (binaries hexified and formated as C headers) for PG1.0 and PG2.0

    - The released SDK contains sources and makefiles that are able to build the firmware for PG1.0, but not for PG 2.0

    - Where is the source for PG 2.0 firmware?

    Regards,

    Dominic

  • Sorry for the delay, I have asked the experts.

    Regards

    Vineet

  • Hi,

    Can you reach out to the TI representative via email ? PG 2.0 firmware sources are not public at this point.

    Regards

    Vineet