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/TMDXICE110: ICE examples don’t work

Part Number: TMDXICE110
Other Parts Discussed in Thread: AMIC110, SYSBIOS, AM3359

Tool/software: TI-RTOS

I started working with the AMIC110-ICE board. The simple examples with about no content and the profinet scripted project are compiling, but I have problems running the other examples.

• Why actually do I have to specify the evmAM3359 platform inside the AMIC110 examples every time? Is this the reason causing the examples described below not to work?

• I imported the semi-hosting example, built it, encountered 5 errors with the following output:

– “makefile:143: recipe for target 'semihost_ICE_AMIC110_CortexA.out' failed”

– “…ReentSupport.c:83: undefined reference to `ti/sysbios_rts_gnu_ReentSupport_checkIfCorrectLibrary`”

• I imported the log example and can run it. But when I try to actually run RTOS Analyzer ⇒ Printf and Error Logs, I encounter the error “Could not detect a UIA configuration”.

– When I open Runtime Object View and try to look into the LoggerBuf, I just see "java.lang.Exception: Target memory read failed at address…"

– I see this error with a lot of other viewable modules, too.

I assumed the examples to run out-of-the-box…

  • The RTOS team have been notified. They will respond here.
  • Frank,

    1. evm3359 platform defines the memory sections which agree with AMIC110. The problems you described are not caused by the platform used.

    2. Not sure which software/example you were referring to. But most likely you were using the latest GCC (v6.3.1) and SYS/BIOS (6.51+) version, and need update -L$(SYSBIOS)/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/fpu to -L$(SYSBIOS)/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/hard --specs=nano.specs, see and

    3. Do you have UIA configured in .cfg file and installed? see if this helps:

    Please specify your software version and example project if you still have issues.

    Regards, Garrett

  • The settings are correct, but I don’t understand why I specify drimon in the build settings and then additionally have to search for a libc.a/rdimon.a file?

    I tried to specifiy several variants of `bios_6_52_00_12/packages/gnu/targets/arm/libs/install-native/arm-none-eabi/lib/{hard,thumb/*}/{libc,librdimon}` in the “general” project settings, but I always get “cannot find -l:/opt/TI/P-SDK-RTOS/gcc-arm-none-eabi-6-2017-q1-update/arm-none-eabi/lib/hard/librdimon”.

    I don’t understand, why it’s necessary to resolve such errors when trying to run shipped examples…?

    In the meantime, I tried to load the PDK examples. Here also I got a lot of errors when filtering the build process like described in “Rebuilding the PDK”. Selecting first LIMIT_BOARDS="evmAM335x" and afterwards iceAMIC110 without further filters then worked somehow…?!

    However, I could rebuild the PDK and execute `pdkProjectCreate.sh AM335x iceAMIC110`, but still, I cannot find any examples. Neither by the old resource explorer, nor by manual import. The only examples I can always find are “starterware/tools/flash_writer”…?!

    I then tried to run “processor_sdk_rtos_am335x_4_02_00_09/demos/rtos_template_app/am335x/evmAM335x/A8/template_app/rtos_template_app_am335x_a8_evmAM335” on my AMIC110-ICE. That worked, but I couldn’t make SPI working. The project just includes the SPI_init() and not the rest of the SPI stuff. Now everytime I try to run a function which requires a SPI port (like BOARD_MCSPI_SLAVE_INSTANCE), it fails – which I debuged to depend due to the evmAM335x board_cfg not specifying that SPI settings.

    I then tried everything to port this example to the AMIC110 platform, so I modified the project settings appropriately (Compiler symbols: amic110, iceAMIC110, SOC_AM335x). That stil works. Then I changed the linker library from `${TI_PDK_INSTALL_DIR}/packages/ti/board/lib/evmAM335x/a8/release/` to `${TI_PDK_INSTALL_DIR}/packages/ti/board/lib/iceAMIC110/a8/release/`, but from this point on everything fails – though this is the correct board, in fact. I then get four errors without much description (“recipe for target 'all' failed” & “recipe for target '<project name>' failed”). Clicking on that opens the Makefile in which still references to “{,_}evmAM335x.{hex,out}” occur. Why is this still the case, though I changed all the settings?

    Can it be that hard, to get examples and especially SPI working on the AMIC110ICE? Your whole IDE, SDK, build scripts etc. show an incredible amount of errors…

  • Frank,

    You really don't need rebuild PDK at this point nor update any settings if you are building the examples with recommended component versions from Processor SDK.

    If you are trying to get a SPI example, you can refer to the one in pdk_am335x_1_0_9\packages\ti\drv\spi\example\mcspi_slavemode and build its CCS project - MCSPI_SlaveMode_MasterExample_iceAMIC110_armExampleProject  and MCSPI_SlaveMode_SlaveExample_iceAMIC110_armExampleProject with the command:

    C:\ti\pdk_am335x_1_0_9\packages>pdkProjectCreate.bat AM335x iceAMIC110 little spi all arm

    It seems you already have an UIA package installed, otherwise, you should see the message "!ERROR: Version 2.21.2.07 (or equivalent) of product-type 'com.ti.uia' is not currently installed!" when you run pdkProjectCreate.bat. The default uia_2_21_02_07 specified in pdkProjectCreate script unfortunately doesn't come with the Processor SDK 4.2 for AM335x (this is tracked in internal JIRA), and only available in PSDK for AM572x here:

    You can download the package but just install UIA for the latest 2.21.2.07.

    The final example CCS project will be generated under ti\pdk_am335x_1_0_9\packages\MyExampleProjects.

    Are you building the examples under Linux OS environment? I notice you are using pdkProjectCreate.sh instead of pdkProjectCreate.bat.

    I have attached the SPI example build log from Windows PC. Hopefully you can move forward.

    You need to rebuild PDK unless you need update or debug the drivers (not examples).

    C:\ti\pdk_am335x_1_0_9\packages>pdkProjectCreate.bat AM335x iceAMIC110 little spi all arm
    =========================================================================
    Configuration:
       SOC             :   AM335x
       BOARD           :   iceAMIC110
       ENDIAN          :   little
       MODULE          :   spi
       PROJECT_TYPE    :   all
       PROCESSOR       :   arm
       PDK_SHORT_NAME  :   C:\ti\PDK_AM~2\packages\
    =========================================================================
    Checking Configuration...
    Complete
    =========================================================================
       PDK_PARTNO         : AM335
       PDK_ECLIPSE_ID     : com.ti.pdk.am335x
       RTSC_PLATFORM_NAME : ti.platforms.evmAM3359
       RTSC_TARGET        : gnu.targets.arm.A8F
       CCS_DEVICE         : "Cortex A.AM3359.ICE_AM3359"
    *****************************************************************************
    Detecting all projects in PDK and importing them in the workspace C:\ti\PDK_AM~2\packages\\MyExampleProjects
    Detected Test Project: MCSPI_SlaveMode_MasterExample_iceAMIC110_armExampleProject
    
    --------------------------------------------------------------------------------
    Creating project 'MCSPI_SlaveMode_MasterExample_iceAMIC110_armExampleProject'...
    
    
    Done!
    Copying macro.ini
            1 file(s) copied.
    Detected Test Project: MCSPI_SlaveMode_SlaveExample_iceAMIC110_armExampleProject
    
    --------------------------------------------------------------------------------
    Creating project 'MCSPI_SlaveMode_SlaveExample_iceAMIC110_armExampleProject'...
    
    
    Done!
    Copying macro.ini
            1 file(s) copied.
    No projects detected
    Project generation complete
    *****************************************************************************

    Regards, Garrett

  • Hi Garrett, thanks for your help!

    Yes, I run Linux (Fedora specifically, if that’s of interest to you). You should try to get a flatpak version of CCS working, then you can unify your Linux efforts by the way! See flatpak.org & projectatomic.io.

    Sorry if my post sounded somewhat rude, but I was quite unhappy last week, because some of the SYS/BIOS ICE_AMIC110 generic examples work fine, while others just don’t. There still seem to be some misconfigurations inside, even though the AMIC110 now exists for a while.

    Regarding the PDK build, you should fix the bug, that
    `make LIMIT_BOARDS="iceAMIC110 [LIMIT_SOCS="AM335x" LIMIT_CORES="a8"]"`
    doesn’t work right after
    `make clean`.
    Currently, I need to run
    `make LIMIT_BOARDS="evmAM335x"`
    first, then the iceAMIC110-version works – so there obviously is some dependency issue.

    I could manage the PDK examples to be generated with your help and fixing some paths. In the project configuration there still is the compiler symbol “am3359” – does specifying “amic110” lead to complications, or does this make no difference? I already had some trouble in the same area when trying to run your profinet example: There I also had to fix some symbols in the settings for it to compile and run successfully on the AMIC110ICE (out-of-the-box it always hangs at `Board_init()`).

    I’ll look into resolving that UIA issue these days…
  • Hi Frank,

    Good to see you are making progress!

    Thanks for the websites you shared. Currently CCS is validated on a defined set of Linux distributions only. Typically this is the latest Ubuntu LTS, the previous Ubuntu LTS and a CentOS distribution (to represent RedHat), see here - processors.wiki.ti.com/.../Linux_Host_Support_CCSv7 , Hopefully CCS can be evolved and can have multiple Linux OS version supported.

    No problem. I totally can understand the frustration while dealing with some unexpected miscellaneous items which should not happen.

    I can reproduce the PDK rebuild issue with AMIC110 and have just submitted a bug JIRA for fix. The issue is probably introduced in the latest Processor SDK 4.2.

    It's possible that you might still see 'am3359' in compiler symbol set, which should be OK as AMIC110 is just a variant of AM335x.

    You can create another thread, post the error you observed for running Profinet and we can discuss there.

    Regards,
    Garrett
  • Hi Garrett,

    the problem with Linux is, that we can’t swap our distribution with every recommendation of the program we currently work with – as for the most part, we can just use what is allowed or default (which is Debian here at Siemens) – or in some cases (as mine), what we like the most and works best. ;) With Flatpaks you would be able to chose one of the “standardized” environments, which then is exactly the same (and sandboxed) on EVERY installation. It runs on nearly all distributions without further ado (except for installing the flatpak program) and threrefore would lessen your troubles. I also tried running CCS 7.3 in a Debian VM on my Fedora 27 host, as it worked on another Debian machine, but there I couldn’t get the debugger to work (Blackhawk USB560v2). But CCS 7.4 finally runs on Fedora! So that problem is gone for me.

    The AMIC110 mcspi_slavemode example by the way has some edma3 dependency issues when defining the DMA symbol in the compiler options.

    Another issue I have thoughout all AMIC110 stuff, is that I always have to deactivate the M3 core, as otherwise, I get some “hold in reset” error. But I don’t know if that is related to the AMIC110ICE-BTA (beta?) version I got. Since yesterday, I now have the regular version too, I’ll check that next week again with the new version.

    Best regards,
    Frank

  • Hi Frank,

    I agree and hope CCS can be merged into the "standardized" environment in the future. Glad to see you are no longer bothered by the CCS/OS issue.

    For DMA mode of peripherals like UART, EMMC, we typically provide a separate CCS project example, which contains corresponding compiler symbol, cfg file and dependent files. Fro SPI example, currently only the non DMA CCS project is provided. To enable DMA, in addition to the 'SPI_DMA_ENABLE' compiler symbol, you also need the followings in the .cfg file,

    /* Load the EDMA package */
    var drv                = xdc.loadPackage ("ti.sdo.edma3.drv");
    var rm                = xdc.loadPackage ("ti.sdo.edma3.rm");

    and add/link all the files under \ti\drv\spi\soc\am335x\ to the project.

    I am not sure if the 'hold in reset' issue related to the BH USB560v2 JTAG driver. I use BH USB 560-M JTAG in Windows and have no issue on the AMIC110ICE-BTA board. Just let us know if you still have the connection issue with your new board. It would be helpful if you could create a separate thread for new issues, thanks.

    Regards, Garrett