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.

RTOS/AMIC110: DDR-less EtherCAT Slave demo

Part Number: AMIC110
Other Parts Discussed in Thread: SYSBIOS, TLK105L, TLK105

Tool/software: TI-RTOS

Hi Champs:

Please read the attached SOP that we have made for AMIC110 + C2000 ethercat demo.

Now, we have some problems:

   A. If the customer is using the "DDR less", how to flash the image onto SPI flash?

   B. Do we have any document to guide us how to write the image onto SPI flash thru USB/UART/Ethernet ?

   please note: we are talking about this based on AMIC110

BR Rio

TI_AMIC110_C2000_Ethercat_Demo_SOP_By_TI_Rio.pdf

BR Rio

  • The RTOS team have been notified. They will respond here.
  • Hi Rio, please see below links which can help you to correctly flash AMIC110 EtherCAT DDR less application,

    Booting via McSPI

    AMIC110 EtherCAT DDR less flash partition

    A recommended JTAG is XDS200 

    As a note, you need to flash the EtherCAT application (App), the bootloader (bootloader_boot_mcspi_noDDR_a8host_release_ti.bin), tiesc_eeprom, ecat_host_interface, ecat_frame_handler. In total 5 files need to be flashed using the spi_flasher_writer tool

    hope this helps,

    Paula

  • Hi .

    Where is the place I need to execute this cmd for building bootloader for AMIC110?

      

    gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yes
    gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=release -s KW_BUILD=no BUILD_ICSS_DDRLESS_BOOT=yes

    BR Rio
  • If I go to starterware, it will show this error.

    C:\TI\pdk_am335x_1_0_10\packages\ti\starterware>gmake bootloader BUILDCFG=boot BOOTMODE=mcspi PLATFORM=amic110-ddrless PROFILE=debug -s KW_BUILD=no BUILD_ICSS_D
    DRLESS_BOOT=yes SOC=am335x soc
    C:/TI/pdk_am335x_1_0_10/packages/ti/starterware/build/makerules/common.mk:238: C:/TI/pdk_am335x_1_0_10/packages/ti/starterware/build/makerules/rules_.mk: No suc
    h file or directory
    gmake[1]: *** No rule to make target `C:/TI/pdk_am335x_1_0_10/packages/ti/starterware/build/makerules/rules_.mk'. Stop.
    gmake: *** [bootloader] Error 2
  • Hi .
    This bootloader make process is working well on PDK_1_0_9, however, 1_0_10 will not work.
    Please help to fix it.

    BR Rio
  • Hi Rio, I will check internally. A question, did bootloader from PDK 1.0.9 work for you?

    thank you,
    Paula
  • Hi .

     1.0.9 boot loader is built okay now.

     But, I'm compiling this project:

     And I have those errors, please guide me how to solve.

    Description Resource Path Location Type
    ecat_ti_esc_spi_slave_AMIC11x_arm.out section `.bss' will not fit in region `SRAM_HI0' ecat_ti_esc_spi_slave_AMIC11x_arm C/C++ Problem
    gmake: *** [all] Error 2 ecat_ti_esc_spi_slave_AMIC11x_arm C/C++ Problem
    gmake[1]: *** [ecat_ti_esc_spi_slave_AMIC11x_arm.out] Error 1 ecat_ti_esc_spi_slave_AMIC11x_arm C/C++ Problem
    recipe for target 'all' failed makefile /ecat_ti_esc_spi_slave_AMIC11x_arm/AMIC11x_release line 169 C/C++ Problem
    recipe for target 'ecat_ti_esc_spi_slave_AMIC11x_arm.out' failed makefile /ecat_ti_esc_spi_slave_AMIC11x_arm/AMIC11x_release line 173 C/C++ Problem
    region `SRAM_HI0' overflowed by 2252 bytes ecat_ti_esc_spi_slave_AMIC11x_arm C/C++ Problem
    section .c_int00 VMA [402f5400,402f54b3] overlaps section .bss VMA [402f0400,402f5ccb] ecat_ti_esc_spi_slave_AMIC11x_arm C/C++ Problem
    undefined reference to `ti_sysbios_rts_gnu_ReentSupport_checkIfCorrectLibrary' ecat_ti_esc_spi_slave_AMIC11x_arm line 83, external location: C:\TI\bios_6_52_00_12\packages\ti\sysbios\rts\gnu\ReentSupport.c C/C++ Problem

  • Hi :
    #1. I have modified this file : amic11x_onchip_mem_app.xdt
    #2. And I excluded this file to build: AM335x.lds
    #3. Now, I have the following error, please help.
    #4. My environment is as this:

    ::Set AM335x PDK Version
    set "AM335x_PDK_VERSION=1.0.9"

    ::Set AM437x PDK Version
    set "AM437x_PDK_VERSION=1.0.8"

    :: Set XDC Tools Version which is to be used while creating the project
    set "XDC_TOOLS_VERSION=3.31.00.24_core"

    :: Set SYSBIOS Version which is to be used while creating the project
    set "SYS_BIOS_VERSION=6.52.00.12"

    :: Set NDK Version which is to be used while creating the project
    set "NDK_VERSION=2.26.00.8"
    BR Rio

    arm-none-eabi/lib/fpu" -Wl,--defsym,STACKSIZE=0x1C000 -Wl,--defsym,HEAPSIZE=0x400 -Wl,--start-group -o"ecat_ti_esc_spi_slave_AMIC11x_arm.out" "./GPIO_soc.o" "./board_dp83822.o" "./board_gpioLed.o" "./board_i2cLed.o" "./board_mcspi.o" "./board_misc.o" "./board_phy.o" "./board_platform.o" "./board_spi.o" "./board_tlk105.o" "./board_tlkphy.o" "./delay_us.o" "./iceAMIC110.o" "./pruicss_soc.o" "./tiesc_fw_cir_buff.o" "./tiesc_soc.o" "./tiesc_spi_slave.o" "./tiescbsp.o" "./tieschw.o" "./tiescphy_tlk105l.o" "./tiescutils_spi_slave.o" "./osal/ClockP_tirtos.o" "./osal/EventP_tirtos.o" "./osal/MailboxP_tirtos.o" "./osal/MiscP_tirtos.o" "./osal/OSP_tirtos.o" "./osal/SwiP_tirtos.o" "./osal/TaskP_tirtos.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lrdimon -lgcc -lc -Wl,--end-group
    makefile:173: recipe for target 'ecat_ti_esc_spi_slave_AMIC11x_arm.out' failed
    C:\Users\a0219345\AppData\Local\Temp\ccBh9LF4.ltrans0.ltrans.o: In function `SPISlave_statusTask':
    <artificial>:(.text.SPISlave_statusTask+0xd7c): undefined reference to `spi_bsp_slave_write_byte'
    <artificial>:(.text.SPISlave_statusTask+0xde4): undefined reference to `spi_bsp_slave_write_byte'
    <artificial>:(.text.SPISlave_statusTask+0xe24): undefined reference to `spi_bsp_slave_write_byte'
    C:\TI\PRU-ICSS-EtherCAT_Slave_01.00.05.00\protocols\ethercat_slave\ecat_appl\src\sysbios\sysbios.aa8fg(gnu_ReentSupport.o): In function `ti_sysbios_rts_gnu_ReentSupport_Module_startup__E':
    C:/TI/bios_6_52_00_12/packages/ti/sysbios/rts/gnu/ReentSupport.c:83: undefined reference to `ti_sysbios_rts_gnu_ReentSupport_checkIfCorrectLibrary'
    collect2.exe: error: ld returned 1 exit status
    gmake[1]: *** [ecat_ti_esc_spi_slave_AMIC11x_arm.out] Error 1
    makefile:169: recipe for target 'all' failed
    gmake: *** [all] Error 2

    **** Build Finished ****
  • Hi Rio, I will check the error and come back to you. About previous issue reported for building PDK 1.0.10 bootloader, I learnt this is a known issue. We are tracking it by JIRA. Also, please see below E2E for more details and a workaround:

    e2e.ti.com/.../656996

    thank you,
    Paula
  • Hi Rio, I just want to confirm you applied the required PSDK patch, as mentioned here: EtherCAT patch Thump mode binaries

    Also for your reference TI Design: DDR-less EtherCAT slave on AMIC110

    thank you,

    Paula

  • Hi .

      I have some questions:

       #1. Why the GNU compiler version will affect the Link error?

       #2. Do I must use the GNU 4.9 compiler?

       #3. I'm using the CCS7.4 and force it to use the GNU 4.8 compiler which  is bundled in the CCS6.1.

             Now, I have the following Link error.

             Please help.

    BR Rio

    'Building target: "ecat_ti_esc_spi_slave_AMIC11x_arm.out"'
    'Invoking: GNU Linker'
    "C:/TI/ccsv611/ccsv6/tools/compiler/gcc-arm-none-eabi-4_8-2014q3/bin/arm-none-eabi-gcc.exe" -mtune=cortex-a8 -marm -DSOC_AM335x -DiceAMIC11x -DAM335X_FAMILY_BUILD -DTIESC_SPI_SLAVE_MODE -DNO_UART_MSG_APP -DDISABLE_UART_PRINT -DAMIC11X_ONCHIP_MEM_MODE -Damic110 -Os -ffunction-sections -fdata-sections -gstrict-dwarf -Wall -mno-unaligned-access -flto -fuse-linker-plugin -mfloat-abi=hard -Wl,-Map,"ecat_ti_esc_spi_slave_AMIC11x_arm.map" -nostartfiles -nodefaultlibs -static -Wl,--gc-sections -L"C:/TI/bios_6_52_00_12/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu" -Wl,--defsym,STACKSIZE=0x1C000 -Wl,--defsym,HEAPSIZE=0x400 -Wl,--start-group -o"ecat_ti_esc_spi_slave_AMIC11x_arm.out" "./GPIO_soc.o" "./board_dp83822.o" "./board_gpioLed.o" "./board_i2cLed.o" "./board_mcspi.o" "./board_misc.o" "./board_phy.o" "./board_platform.o" "./board_spi.o" "./board_tlk105.o" "./board_tlkphy.o" "./delay_us.o" "./iceAMIC110.o" "./pruicss_soc.o" "./tiesc_fw_cir_buff.o" "./tiesc_soc.o" "./tiesc_spi_slave.o" "./tiescbsp.o" "./tieschw.o" "./tiescphy_tlk105l.o" "./tiescutils_spi_slave.o" "./osal/ClockP_tirtos.o" "./osal/EventP_tirtos.o" "./osal/MailboxP_tirtos.o" "./osal/MiscP_tirtos.o" "./osal/OSP_tirtos.o" "./osal/SwiP_tirtos.o" "./osal/TaskP_tirtos.o" -Wl,-T"configPkg/linker.cmd" -Wl,--start-group -lrdimon -lgcc -lc -Wl,--end-group
    makefile:173: recipe for target 'ecat_ti_esc_spi_slave_AMIC11x_arm.out' failed
    C:\TI\PRU-ICSS-EtherCAT_Slave_01.00.05.00\protocols\ethercat_slave\ecat_appl\src\sysbios\sysbios.aa8fg(gnu_ReentSupport.o): In function `ti_sysbios_rts_gnu_ReentSupport_Module_startup__E':
    C:/TI/bios_6_52_00_12/packages/ti/sysbios/rts/gnu/ReentSupport.c:83: undefined reference to `ti_sysbios_rts_gnu_ReentSupport_checkIfCorrectLibrary'
    collect2.exe: error: ld returned 1 exit status
    gmake[1]: *** [ecat_ti_esc_spi_slave_AMIC11x_arm.out] Error 1
    makefile:169: recipe for target 'all' failed
    gmake: *** [all] Error 2

    **** Build Finished ****

  • Hi .


    I modify this file: reentsupport.c.
    Comment out this line, then, issue is gone.
    if (ReentSupport_enableReentSupport) {
    //ti_sysbios_rts_gnu_ReentSupport_checkIfCorrectLibrary();
    }

    please tell me if any side effect will affect my demo.

    BR Rio
  • Hi Rio, just to confirm, you are using PRU-ICSS EtherCAT slave v 1.0.5, right?. If so, please see below some comments to your questions:

    Q1: ARM gcc toolchain update from 4.9.3 to 6.3.1 has an impact on projects created previous to PSDK 4.2. For more details please check EtherCAT Migration guide to PSDK4.2  . Main difference is that codegen tools was switched from newlib to newlib-nano

    Q2: Yes please. From PRU-ICSS EtherCAT slave 1.0.5 system requirements we have PSDK 4.1 was used for developing and testing this version of EtherCAT. As a good practice, please use tools versions from PSDK4.1 PDK environment script (pdksetupenv.bat) when building your project.

    Q3: From   <PDK_1.0.8_Install>\packages\pdksetupenv.bat I see BIOS_VERSION=6_46_05_55, from your log I see SYSBIOS version you are using is 6.52.00.12. This could be the issue. Please align with PSDK4.1 (PDK 1.0.8) tools and rebuild

    thank you,

    Paula

  • Hi Paula.

    Thank you very much.

    #1. Please ask the RnD to have a more friendly in the next version. To study those too much documents and compare those differences will be annoying to the user.

    #2. Besides, there is no clear instruction to guide the  user how to download the image onto SPI Flash.

          Please describe it clearly.

    BR Rio

  • Hi Rio, yes, we know.. we will work on a how-to-video so we can reduce possible mistakes and make this demo most user friendly.

    thanks for your feedback,
    Paula
  • I’m totally confused, which one is the correct MLO (Boot loader for the DDR-Less demo)?

     

    Is this one? (This one is the one you posted on the wiki: https://e2e.ti.com/support/arm/sitara_arm/f/791/p/651803/2515440#pi316653=5)

    C:\TI\pdk_am335x_1_0_9\packages\ti\starterware\binary\bootloader\bin\amic110-ddrless\gcc\bootloader_boot_mcspi_noDDR_a8host_release_ti.bin

     

    If I’m using RTOS 4.1 / PDK 1.8, Do I need to apply the patch you mention below? (See the posted on the E2E link as the above).

    I’m totally confused, which one is the correct MLO (Boot loader for the DDR-Less demo)?

     

    Is this one? (This one is the one you posted on the wiki: https://e2e.ti.com/support/arm/sitara_arm/f/791/p/651803/2515440#pi316653=5)

    C:\TI\pdk_am335x_1_0_9\packages\ti\starterware\binary\bootloader\bin\amic110-ddrless\gcc\bootloader_boot_mcspi_noDDR_a8host_release_ti.bin

     

    If I’m using RTOS 4.1 / PDK 1.8, Do I need to apply the patch you mention below? (the posted on the above E2E).

     ----------------------------------------------------------------------------------------------------------------------------------------------

    I know this is confusing - The PRSDK_4_2_migration.patch is to rebase the EtherCAT from PRSDK 4.1 to PRSDK 4.2, but it doesn't address the MLO issue. You don't have to rebase to PRSDK 4.2 for EtherCAT app.

    The patch in the git.ti.com/.../fb449773510e62f06232c80e564577ae2268bfe6 is specific to MLO issue. You can download the files and merge to your PRSDK starterware folder (3 files change: sbl_am335x_platform.c, component.mk, platform.mk)

     ---------------------------------------------------------------------------------------------------------------------------------------------- 

    If not, why I cannot see anything on the UART console?

     ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    I know this is confusing - The PRSDK_4_2_migration.patch is to rebase the EtherCAT from PRSDK 4.1 to PRSDK 4.2, but it doesn't address the MLO issue. You don't have to rebase to PRSDK 4.2 for EtherCAT app.

    The patch in the git.ti.com/.../fb449773510e62f06232c80e564577ae2268bfe6 is specific to MLO issue. You can download the files and merge to your PRSDK starterware folder (3 files change: sbl_am335x_platform.c, component.mk, platform.mk)

     

    If not, why I cannot see anything on the UART console?