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.

ISDK RTSC/XDCtools question

Other Parts Discussed in Thread: SYSBIOS

Hello Sitara Device Forum,

I have posted the following issue to the TI-RTOS forum before:

Benedikt said:

How do the codes generated from multiple .cfg files mix in an application build?

What will happen if the .cfg of a library includes some settings which are inconsistent to the settings in my app or another library used? Especially: Will I see some warning or error if, e.g., I choose different HAL implementations for the *Proxy components?

Context:

  • I am developing a SYS/BIOS-based application which uses "a lot of" third-party libraries (e.g., TI Industrial SDK components) and some home-made libraries. The application and some of the libraries build upon example projects from different vendors.
  • The application itself and several library projects each include an own .cfg file.
  • For the present app, I am using XDCtools 3.31.3.43_core, CCS 6.1.3, ISDK 2.1.2.1, SYS/BIOS 6.42.3.35

The support team in the TI-RTOS forum has adviced me to repost my question to this forum, so you find further detail and earlier discussion under

Maybe, the question rather affects the design of the ISDK projects than RTOS.

Thanks in advance for any further help,

Benedikt

Edit / PS:

Just a conclusion of the findings from the other forum thread:

  • Building the ISDK sub-library without its .cfg file does not work because a compiler option file generated from the cfg is missing (and maybe other files).
  • We discussed the question focussed on the cfg files needed for SYS/BIOS integration, namely
    Benedikt said:
    I found some app.cfg files in library source directories
    • sysbios_ind_sdk_2.1.1.2/sdk/board/app.cfg
    • sysbios_ind_sdk_2.1.1.2/sdk/os_drivers/sys_bios_driver_am335x.cfg / sysbios_ind_sdk_2.1.1.2/sdk/os_drivers/sys_bios_driver_am437x.cfg
    • some subdirectories of
      sysbios_ind_sdk_2.1.1.2/sdk/protocols

    • A proposition was that a single cfg file for the whole application should be used, which should support all features required, and which should be used for the application build and all library builds affected. But
      (a) this would break the idea of creating and using a library
      (b) it is not clear how the requirements to all subcomponents must be merged (taking the sum, the max,...). Any link to documentation is highly appreciated...

  • The ISDK team have been notified. They will respond here.
  • Hi Benedikt,

    thanks for pointing this out. Reading the other thread is of course is important here. I agree there could be an issue if you are mixing different versions of libs. As such there may be a way to make the IA-SDK deliverables more user friendly if we apply some of the recommendations from the RTOS team. However I think we have to discuss this internally first. For sure there may not be a short term solution.
    Best suggestion I have is to link sources of libs such as os_drivers directly into your project. Then they will be compiled using your main projects settings and dependencies. Also it will be easier to debug...

    For 'other vendors' libs I can't speak of course. They may follow what you define or apply their own method of assuring there are no dependency issues.

    As far as I remember there are RTOS examples where the .cfg is applied to multiple projects. But I can't remember details and need to push that back to our RTOS team.

    Anyway I will add your issue to our internal systems so that it gets applied to future versions of IA-SDK.

    Regards,
  • Thankyou - this sounds very good to me. I am looking forward to get an informed hint from the IA-SDK design team.

    Best regards,

    Benedikt
  • Hi Benedikt

    I have encountered issues when building a project with to use a library that was compiled with an older version of SYSBIOS, NDK or XDCTools.
    In this case the issues were resolved by refactoring the project and rebuilding the libraries using the latest versions that is recommended in the ISDK user guide.

    David
  • David Zaucha said:
    In this case the issues were resolved by refactoring the project and rebuilding the libraries using the latest versions that is recommended in the ISDK user guide.

    Hi David,

    Thankyou for pointing this out. I have been checking library versions before. In the present application, I must use ISDK 2.1.1.2 due to the requirements of another third-party library (delivered by a TI partner) - so this is my starting point. As I have told Frank Walzer few days ago, the library/toolchain versions of the CCS project configurations contained in the ISDK delivery 2.1.1.2 do not match the versions named in the ISDK Release Notes (and the toolchain versions used by the starterware/sdk projects do not match each other).

    But this is not the topic I wanted to address by this thread (and its predecessor in the TI-RTOS forum).

    With this thread, I am trying to figure out the requirements how to configure the cfg file(s) for ISDK/App/other libs, so I am not reporting a bug in XDCtools behaviour.

    Best regards,

    Benedikt

  • Hi Benedikt

    I apologize for the differences in tool chains. When encountering this we recommend rebuilding with the recommended tool chain versions in the USER guide/ release notes.

    I definitively support Frank's recommendations.

    Some ancillary information which may help in the interim.

    I have also encountered similar errors when building with the wrong CCS or gcc compiler version - I mention this for the broader e2e audience - since from your comments - I suspect you have this well in hand.

    When bringing a much older CCS project up to the current tool chain- it is often best to create a new cfg file with the current tool chain and update it with the relevant settings of the older project.

    The EtherCAT and Ethernet/IP examples draws upon the sysbios board_support in ..\.sdk\board and sys_bios_driver in ..\sdk\os_drivers libraries. A comparison of the .cfg files in each show a number of similarities and differences which may help.

    David
  • Hi David,

    David Zaucha said:
    When bringing a much older CCS project up to the current tool chain- it is often best to create a new cfg file with the current tool chain and update it with the relevant settings of the older project.

    The EtherCAT and Ethernet/IP examples draws upon the sysbios board_support in ..\.sdk\board and sys_bios_driver in ..\sdk\os_drivers libraries. A comparison of the .cfg files in each show a number of similarities and differences which may help.

    I also noticed such "similarities" between some of the example projects and the essential libraries board_support and sys_bios_driver. What I am searching for is a guideline

    • how to create the application cfg (or how to get it by merging existing cfg propositions, respectively)
    • which cfg to use for reusable libraries.

    I feel a bit confused by the fact that some of my libraries (such as the TI libraries sys_bios_driver and board_support) require a cfg file which might include application properties (although a library normally should not "know" features of the application it will be used by).

    For the moment, I don't focus on tool chain and SDK upgrades but I would like to use the "older" versions until the process to the cfg file has been defined.

    TIA for your efforts,

    Benedikt