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.

CCS 12.5 Issues Targeting C7x Device and Building C7x SYS-BIOS Project Fails

Other Parts Discussed in Thread: DRA829, TDA4VM, SYSBIOS, MATHLIB, AM5726

I have an existing C6x project and code base that I am attempting to migrate to a C7x device.

I am using the C6000-to-C7000 Migration User's Guide (SPRUIG5E.pdf).

I am running CCS12.5 installed on Windows 7 64-bit SP1.

The C7x device that I am currently attempting to target is the C71x present within the DRA829 on the J721EXSOMG01EVM.

I have created a "Project_C7x" with the following properties...

I have created a new/empty RTSC C7x Project with the following properties...

Project_C7x, Properties, General...

Configuration: Debug

Project-tab

Device

Family: C700

Variant and core: J721E_DRA829_TDA4VM, C7X_0

Connections: Managed

Project type and tool-chain

Compiler version: TI v4.0.0.STS (also tried TI v3.1.0.LTS with same failed results)

Output type: RTSC App (Exe)

Output format: eabi (ELF)

Device endianness: little

Linker command file: none

Runtime support library: <automatic>

Products-tab

Products

XDCtools [3.62.1.16 core]

SYS/BIOS [6.83.0.18]

XCDpath Package Repositories

$(BIOS_CG_ROOT)/packages

C:\Users\GenUser\myRepository\packages

XDCtools settings

Target: ti.targets.elf.C71 (this was my attempt to fill this field - may be incorrect)

Platform: myC7x

Build-profile: debug

I have created the RSTC Platform file named "myC7x" to be placed within C:\Users\GenUser\myRepository\packages

CCS 12.5 --> File/New/Other.../New RTSC Platform...

New Platform

Page 1 of 2 - Basic Information

Platform Package Details

Package Name: myC7x

Platform Package Repository: C:\Users\GenUser\myReposirtory\packages

Add Repository to Project Package Path (checked)

Device Details

Device Family: c7000

Device Name: TMS320C7100 (*** this is the ONLY device option present for the c7000 family)

Page 2 of 2 - Device Page

Device Details

Device Name: TMS320C7100

Device Family: c7000

Clock Speed (MHz): 1000

Device Memory

Name, Base, Length, Space, Access

L1PSRAM, 0x00E00000, 0x00008000, code, RWX

L2SRAM, 0x00800000, 0x00100000, code/data, RWX

L1DSRAM, 0x00F00000, 0x00008000, data, RW

Customize Memory - checked

External Memory

Name, Base, Length, Space, Access

DDR_CODE, 0x80000000, 0x00600000, code, RWX    (base address likely incorrect - NOT able to find correct C7x DDR address range for static targeting of code during build/link/locate step)

DDR_DATA, 0x80600000, 0x00800000, data, RW    (base address likely incorrect - NOT able to find correct C7x DDR address range for static targeting of data during build/link/locate step)

DDR_STACK, 0x80E00000, 0x00080000, data, RW    (base address likely incorrect - NOT able to find correct C7x DDR address range for static targeting of stack during build/link/locate step)

Memory Sections

Code Memory: DDR_CODE

Data Memory: DDR_DATA

Stack Memory: DDR_STACK

The project has a single source file main.c along with a RTSC configuration file "app_C7x_C71.cfg" adapted from my prior C6x project which uses SYS/BIOS directives to create static tasks, queues, mailboxes, etc.

Upon "Building Selected File(s)" main.c within this project it fails with the following CDT Build Console [Project_C7x] output...

**** Build of configuration Debug for project Project_C7x ****

"C:\\TI\\ccs1250\\ccs\\utils\\bin\\gmake" -k -j 4 main.obj -O

Building file: "../app_C7x_C71.cfg"
Invoking: XDCtools
"C:/TI/ccs1250/xdctools_3_62_01_16_core/xs" --xdcpath="C:/TI/ccs1250/bios_6_83_00_18/packages;C:/Users/GenUser/myRepository/packages;" xdc.tools.configuro -o configPkg -t ti.targets.elf.C71 -p myC7x -r debug -c "C:/TI/ccs1250/ccs/tools/compiler/ti-cgt-c7000_4.0.0.STS" "../app_C7x_C71.cfg"
making package.mak (because of config.bld) ...
configuring app_C7x_C71.xe71 from package/cfg/app_C7x_C71_pe71.cfg ...
The TMS320C7100 device is not currently supported.
The following devices are supported for the C71 target:
C71
J7ES
J721E
subdir_rules.mk:19: recipe for target 'build-201859473-inproc' failed
js: "C:/TI/ccs1250/bios_6_83_00_18/packages/ti/sysbios/family/c7x/Settings.xs", line 145: Error: Unsupported device!
"C:/TI/ccs1250/bios_6_83_00_18/packages/ti/sysbios/family/c7x/Settings.xs", line 170
"C:/TI/ccs1250/bios_6_83_00_18/packages/ti/sysbios/family/Settings.xs", line 176
"C:/TI/ccs1250/bios_6_83_00_18/packages/ti/sysbios/family/Settings.xs", line 128
"C:/Project_C7x/pjt/app_C7x_C71.cfg", line 11
"./package/cfg/app_C7x_C71_pe71.cfg", line 181
gmake.exe: *** [package.mak:206: package/cfg/app_C7x_C71_pe71.xdl] Error 1
js: "C:/TI/ccs1250/xdctools_3_62_01_16_core/packages/xdc/tools/Cmdr.xs", line 52: Error: xdc.tools.configuro: configuration failed due to earlier errors (status = 2); 'linker.cmd' deleted.
gmake[1]: *** [build-201859473-inproc] Error 1
gmake: *** [build-201859473] Error 2
gmake: Target 'main.obj' not remade because of errors.
subdir_rules.mk:16: recipe for target 'build-201859473' failed

**** Build Finished ****

As you can see the build is complaining that the device TMS320C7100 is currently not supported and is suggesting alternate C71 target devices (C71, J7ES, J721E) each of which are NOT available for the device family c7000 during the creation of the RTSC Platform file "myC7x".

The specific C7x device targeted is NOT important at this point as I'm not at the point of targeting/loading the project onto a physical C7x device.  Nonetheless one is needed to resolve this build error.

My goal at the moment is to work through the C6000-to-C7000 Migration User's Guide (SPRUIG5E.pdf) resolving the plethora of changes needing to be worked out within our existing C6x code-base, infrastructure, data types, algorithms, instrinsics, etc.

Please refer to my earlier posting to the Code Composer Studio forum entitled ... CCS 12.5 "Install Device Support" Fails.

This earlier posting was my first attempt to resolve this C7x project build failure/issue thinking that C7x device support on my CCS 12.5 install was incomplete.

I have NOT been able to find the C7x DDR memory address map within any of the TRMs, e.g., DRA829, containing a C7x device.

I have been able to find DDR memory address map for the C66x device on the DRA829, but NOT the C71 device.

Knowing the DDR memory address map for the C7x is critical for the functional migration of my existing C6x project/code to a C7x device.

Questions/issues needing answers to:

What am I missing or doing wrong in targeting my simple Project_C7x to a C7x device?  How to resolve the RTSC build issue?

Is the RTSC Platform Target: ti.targets.elf.C71 being used within RTSC Platform file "myC7x" above, correct?  If not, what should be used instead?

What is the DDR memory address map for the C7x device?

  • Hi George,

    What SDK do you want to use this with, or what's the continued motivation?

    SYS/BIOS is no longer supported on TI SDKs irrespective of the processor target since 8.0 SDK. 

    regards

    Suman

  • Suman,

    My existing C6x project being ported to C7x uses SYS/BIOS which I thought was the same as TI-RTOS.

    I'm hopeful that the transition away from SYS/BIOS to the SDK TI-RTOS will be fairly straight forward.

    Regardless, for C7x I need to formally move to using TI-RTOS which is part of the SDK?

    Can you point me to documentation in converting from SYS/BIOS to SDK based TI-RTOS?

    I see available "ti-processor-sdk-rtos-j721e-evm-09_01_00_06" for download.

    I downloaded this SDK and extracted to the directory C:\TI

    I've added the path C:\TI to the CCS\Window\Preferences\Code Composer Studio\Products "Product discover path"

    Selected the "Search for products each time Code Composer Studio starts..."

    Restarted CCS and it found these additional products within the download...

    DSPLIB C66x

    MATHLIB C66x

    It did NOT find the "pdk_jacinto_09_01_00_22" nor any of the other products contained within the download folder.

    Is the download "ti-processor-sdk-rtos-j721e-evm-09_01_00_06.tar.gz" correct for SDK and TI-RTOS support for C7x?

    If not, what download do I need?

    What path should I be extracting the download to for CCS installation?

    I've also tried to pursue installing SDK via the CCS\Help\Install New Software... but I haven't had any success with that update mechanism.

    Any direction in getting the SDK/TI-RTOS for C7x project use with the DRA829 on the J721EXSOMG01EVM would be greatly appreciated.

    Thanks,

    -George

  • Hi George,

    My existing C6x project being ported to C7x uses SYS/BIOS which I thought was the same as TI-RTOS.

    Yes, SYS/BIOS and TI-RTOS are related, the latter is a broader term to include some BSP drivers, but the underlying RTOS is the same. The terms are somewhat synonymous.

    Regardless, for C7x I need to formally move to using TI-RTOS which is part of the SDK?

    The last SDK that supported TI-RTOS (or SYS/BIOS) is 7.3 SDK. FreeRTOS is the default RTOS supported from SDK 8.0 onwards.

    You cannot use the latest CCS to use with older SYS/BIOS, XDC etc. It is best to stick to the last SDK and/or the CCS version supported by that SDK if you want to stick to SYS/BIOS or TI-RTOS as the OS. Support for that is very limited though.

    Is the download "ti-processor-sdk-rtos-j721e-evm-09_01_00_06.tar.gz" correct for SDK and TI-RTOS support for C7x?

    This SDK only supports FreeRTOS (or SafeRTOS).

    regards

    Suman

  • Suman,

    What's the latest CCS supporting SDK 7.3?

    Is there SDK 7.3 support for C71x present within the DRA829 on the J721EXSOMG01EVM?

    Is there documentation in migrating project code from SYS/BIOS to FreeRTOS?

    Is RTSC support viable for C7x devices and latest CCS?

    If XDCtools no longer supported for C7x device SDKs, what is replacing it going forward?

  • Hi George,

    What's the latest CCS supporting SDK 7.3?

    The SDK 7.3 is officially supported on CCS Version 9.3, however, SDK 7.3 should still run on newer versions of CCS.

    Is there SDK 7.3 support for C71x present within the DRA829 on the J721EXSOMG01EVM?

    Yes, there is SDK 7.3 support for C71x.

    Is there documentation in migrating project code from SYS/BIOS to FreeRTOS?

    Please refer to this documentation and feel free to reach out if you have any follow up questions.

    Is RTSC support viable for C7x devices and latest CCS?

    I will speak to the team and get back to you on this.

    Regards,

    Neehar

  • Neehar,

    I hope your further inquiry into RTSC support for C7x will include associated XDCtools support for C7x device SDK?

    As stated earlier, my goal is to migrate an existing C6x SYS/BIOS project with its tool's ecosystem as follows to a C71x SYS/BIOS project on latest CCS.

    My existing C6x SYS/BIOS project environment and tools ecosystem...

    CCS 6.1.3

    Device Family: C6000, Variant: AM5726

    Compiler version: TI v8.2.0

    Output type/format: RTSC Application (Executable), eabi (ELF)

    Device endianness: little

    RTSC...

    XDCtools version 3.31.3.43_core

    SYS/BIOS version 6.45.1.29

    am57xx PDK version 1.0.3

    RTSC Platform Package(s) - DRA7XX/c6000, defining shared resource memory map, 1 for single core, and 2 for dual core config/build.

    RTSC Platform Configuration(s) - Unique config/build .cfg files - single/dual core build configs referencing associated RTSC Platform Package

    Leveraging SYS/BIOS (TI-RTOS) and the RTSC ecosystem forward for use within the new C7x project would be a big help.

    Now that you have confirmed that there is SDK 7.3 support for C71x devices and that it *should* be supported on newer CCS versions...

    My expectation is that this SDK 7.3 support for C71x devices means that there is likewise SYS/BIOS support for the C71x device present within DRA829 on the J721EXSOMG01EVM which was part of my earlier question.

    My expectation is that this SDK 7.3 support for C71x devices should be viable on the latest CCS 12.5, 12.6, etc. going forward.

    CCS 12.5 Help/Check for Updates says no updates found.

    CCS 12.5 Help/Install Device Support... does not work due to a CCS bug on Windows 7 (see my recent thread, CCS 12.5 "Install Device Support" Fails)

    CCS 12.5 Help/Install New Software... does not appear to provide a C7000 site to reference for updates.

    How does one download this SDK 7.3 onto CCS 12.5?

    I will pursue downloading SDK 7.3 manually onto CCS 12.5.

    Where on Windows (what path) should this download be placed for CCS 12.5 to recognize it?

    Thanks,

    -George

  • Neehar,

    I hope your further inquiry into RTSC support for C7x will include associated XDCtools support for C7x device SDK?

    As stated earlier, my goal is to migrate an existing C6x SYS/BIOS project with its tool's ecosystem as follows to a C71x SYS/BIOS project on latest CCS.

    My existing C6x SYS/BIOS project environment and tools ecosystem...

    CCS 6.1.3

    Device Family: C6000, Variant: AM5726

    Compiler version: TI v8.2.0

    Output type/format: RTSC Application (Executable), eabi (ELF)

    Device endianness: little

    RTSC...

    XDCtools version 3.31.3.43_core

    SYS/BIOS version 6.45.1.29

    am57xx PDK version 1.0.3

    RTSC Platform Package(s) - DRA7XX/c6000, defining shared resource memory map, 1 for single core, and 2 for dual core config/build.

    RTSC Platform Configuration(s) - Unique config/build .cfg files - single/dual core build configs referencing associated RTSC Platform Package

    Leveraging SYS/BIOS (TI-RTOS) and the RTSC ecosystem forward for use within the new C7x project would be a big help.

    Now that you have confirmed that there is SDK 7.3 support for C71x devices and that it *should* be supported on newer CCS versions...

    My expectation is that this SDK 7.3 support for C71x devices means that there is likewise SYS/BIOS support for the C71x device present within DRA829 on the J721EXSOMG01EVM which was part of my earlier question.

    My expectation is that this SDK 7.3 support for C71x devices should be viable on the latest CCS 12.5, 12.6, etc. going forward.

    CCS 12.5 Help/Check for Updates says no updates found.

    CCS 12.5 Help/Install Device Support... does not work due to a CCS bug on Windows 7 (see my recent thread, CCS 12.5 "Install Device Support" Fails)

    CCS 12.5 Help/Install New Software... does not appear to provide a C7000 site to reference for updates.

    How does one download this SDK 7.3 onto CCS 12.5?

    I will pursue downloading SDK 7.3 manually onto CCS 12.5.

    Where on Windows (what path) should this download be placed for CCS 12.5 to recognize it?

    Thanks,

    -George

  • Neehar,

    Sorry for the re-post of my earlier post.

    I don't know how that happened other than I was replying with additional information and when I selected "reply" E2E said there was a problem and that I wasn't logged in and evaporated my detailed update which took me well of an hour to craft Disappointed.  The lesson I've now learned is to copy contents of reply before pressing "Reply".

    Here's a brief summary of that lost reply without sharing the specifics of multiple combinatorial failure attempts to get it to work...

    I manually downloaded and installed SDK 7.3.

    Installed bios_6_83_02_07, pdk_jacinto_07_03_00_29, xdctools_3_61_04_40_core into C:\TI\ccs1250.

    Is path C:\TI\ccs1250 the best place to install products in lieu of newer CCS 12.6 (released 12Jan2024) to be targeted into C:\TI\ccs1260 leading one to have to duplicate or move these installed products to new path in order to use CCS 12.6?

    Updated Project_C7x to use these new products (see original post).

    Project_C7x is still failing as in my original post.

    The use of xdctools_3_61_04_40_core simply said "failed" without detailed output.

    I reverted Project_C7x back to use xdctools_3_62_01_16_core (CCS 12.5's installed product) which gives more detailed failure information (see original post).

    The TMS320C7100 device is not currently supported.
    The following devices are supported for the C71 target:
    C71
    J7ES
    J721E

    It is clear that this error is being caused by Project_C7x's inclusion of my custom RTSC Platform Package file "myC7x" (see original post details)

    During the creation of the RTSC Platform Package file "myC7x" the *ONLY* c7000 Family option for Device Name is TMS320C7100.

    The TMS320C7100 device is obviously NOT supported by the xdctools.

    How can I update or otherwise get RTSC Platform Package file wizard/creator to allow C7000 device targeting other than TMS320C7100, i.e., C71, J7ES, J721E, etc.?

    Help to address this RTSC Platform Package issue would be greatly appreciated.

    Thanks,

    -George

  • Neehar,

    Looking into the error being thrown by the newer CCS 12.5 installed xdctools_3_62_01_16_core I located the build support file that detected the error, i.e., TMS320C7100 not supported.

    That file was C:\TI\ti-processor-sdk-rtos-j721e-evm-07_03_00_07\bios_6_83_02_07\packages\ti\sysbios\family\c7x\Settings.xs

    AS A WORKAROUND HACK...

    I modified the settings table enhancing as follows to include TMS320C7100 being duplicated from C71 - noting C71, J7ES, J721E all being equivalent...

    Here's a snippet of that table modified showing the addition of TMS320C7100...


    var settings = {
    device: {
    /*
    * GEL: 20240118 - Added TMS320C7100 to address build issue
    */
    "TMS320C7100": {
    hwiDelegate : "ti.sysbios.family.c7x.Hwi",
    timerDelegate : "ti.sysbios.timers.dmtimer.Timer",
    clockTimerDelegate : "ti.sysbios.timers.dmtimer.Timer",
    timerSupportDelegate : "ti.sysbios.family.c64p.tci6488.TimerSupport",
    timestampDelegate : "ti.sysbios.family.c7x.TimestampProvider",
    taskSupportDelegate : "ti.sysbios.family.c7x.TaskSupport",
    intrinsicsSupportDelegate : "ti.sysbios.family.c7x.IntrinsicsSupport",
    cacheDelegate : "ti.sysbios.family.c7x.Cache",
    clockTickPeriod : 1000,
    targets : [ "ti.targets.elf.C71" ]
    },
    "C71": {
    hwiDelegate : "ti.sysbios.family.c7x.Hwi",
    timerDelegate : "ti.sysbios.timers.dmtimer.Timer",
    clockTimerDelegate : "ti.sysbios.timers.dmtimer.Timer",
    timerSupportDelegate : "ti.sysbios.family.c64p.tci6488.TimerSupport",
    timestampDelegate : "ti.sysbios.family.c7x.TimestampProvider",
    taskSupportDelegate : "ti.sysbios.family.c7x.TaskSupport",
    intrinsicsSupportDelegate : "ti.sysbios.family.c7x.IntrinsicsSupport",
    cacheDelegate : "ti.sysbios.family.c7x.Cache",
    clockTickPeriod : 1000,
    targets : [ "ti.targets.elf.C71" ]
    },

    Now, when I run the compile of main.c within Project_C7x using the newer "CCS 12.5 installed" xdctools_3_62_01_16_core and SDK 7.3's bios_6_83_02_07 results in ALL the auto-generated project related files being built SUCCESSFULLY.

    I know that this is NOT the correct path forward, but I was NOT able to figure out how to get the RTSC Platform Package wizard to allow me to select a C7000 device other than TMS320C7100.

    I still want a more robust TI recommended solution to the RTSC Platform Package wizard allowing the selection of a C7000 device supported by the SYS/BIOS and XDCtools ecosystem.

    At least in the meantime I can proceed to looking into my "application" centric build errors.

    I Look forward to a more formal TI fix.

    Thanks,

    -George

  • Hi George,

    Is RTSC support viable for C7x devices and latest CCS?

    RTSC and XDCtools are no longer supported on the latest CCS 12.5. They should still work with SDK 7.3 on CCS 9.3.

    How does one download this SDK 7.3 onto CCS 12.5?

    I believe the best option would be to stay with CCS 9.3 if you are using SDK 7.3 as that is the version the SDK has been tested and validated on. We no longer support SYS/BIOS on the latest versions of CCS, nor XDCtools. Reach out with any questions if you are seeing the same issues on CCS 9.3

    You may want to ensure your current C6x project is able to compile on the CCS 9.3 environment first, then migrate to C7x.

    However, as said before there is limited support SYS/BIOS so you may want to consider switching to FreeRTOS.

    Regards,

    Neehar

  • Neehar,

    I understand, but my last posting clearly shows that CCS 12.5 with SDK 7.3's SYS/BIOS 6.83.02.07 along with latest "CCS 12.5 installed" XDCtools 3.62.01.16 with a very "minor" hack to work around a limitation within RTSC Platform Package wizard results in SUCCESSFUL auto-generated Project_C7x support files.

    I would like to stay with latest CCS 12.5 and use last C7x SYS/BIOS within SDK 7.3's bios_6_83_02_07 and see if there's a potential resolution to RTSC Platform Package wizard.

    I do not understand your comment...

    RTSC and XDCtools are no longer supported on the latest CCS 12.5.

    I do NOT think that this is completely the case, because CCS 12.5 clearly allows the creation of custom RTSC Platform Package files (albeit C7000 device limited) and the project creation wizard likewise allows RTSC support using XDCtools.

    I would need to understand why your claim is accurate when the RTSC and XDCtools ecosystem ARE clearly available on CCS 12.5.

    Please elaborate on your CCS 12.5 claim about RTSC and XDCtools.

    My thought is that this RTSC Platform Package wizard C7000 device limitation would be present on CCS 9.3, but maybe not.

    I can go and install CCS 9.3 and see if the RTSC Platform Package wizard allows targeting C7000 devices other than TMS320C7100.

    Do you know if CCS 9.3's RTSC Platform Package wizard fixes the C7000 device limitation I'm witnessing on CCS 12.5?

    Staying with SYS/BIOS, at least for the near term, allows me to focus on and evaluate migrating our C6x image processing code to C7x.

    It is of paramount importance that we quickly understand what kind of performance improvements can be had.  We need to determine how effective the C7x will be in replacing multiple C6x devices.

    Going away from SYS/BIOS (TI-RTOS) to FreeRTOS and continuing to play around with CCS and alternate tool ecosystem evaluation will require a large effort delaying and distracting away from the very important C7x image processing evaluation effort.

    I look forward to your comments.

    Thanks,

    -George

  • Hi George,

    I'm looking at your original post, and had a few questions regarding your C66 to C7x migration given the information here and the calls between your team and ours. 

    1) What are you currently trying to migrate? Eventually, I know would be trying to migrate your entire codebase to no longer be dependent on C66, but are you starting off the migration with a simple custom function or library of C66 functions that you have? In other words, is it a stand alone program/function you have running on C66 that you want running on C7x?

    2) If the answer to the above question is yes, would starting the migration in a baremetal environment work for you?

    My goal at the moment is to work through the C6000-to-C7000 Migration User's Guide (SPRUIG5E.pdf) resolving the plethora of changes needing to be worked out within our existing C6x code-base, infrastructure, data types, algorithms, instrinsics, etc.

    If this still remains your current goal, working in the baremetal environment would be less setup right now if you are primarily focused on getting code transitioned from C66 to a vector programmable version to run on C7x. With this method you would boot your EVM in "No boot" mode and you could load the output binaries generated from the C7x compiler onto the C7x core. Our development team is currently using this method while developing libraries such as DSPLIB. I can provide the setup instructions for this if this is a path you are interested in. But this would mean that for now, you would not need to deal with SYSBIOS/TI-RTOS/FreeRTOS SDK related setup. 

    Best,

    Asha

  • Asha,

    Sorry for the delayed response.

    I would surely welcome getting information on TI's bare-metal setup environment/instructions targeting/loading output binaries onto EVM in "No Boot Mode".  This is something that would be very useful in doing limited/targeted "Blackbox" IP testing on various functions that we have.

    Please forward this bare-metal setup environment/instructions to load output binaries onto EVM in "No Boot Mode".

    As background, our existing Project_C6x is an application that manages a sophisticated IP architecture employing a significant image chain, i.e., Capture, Analysis, Render, and Output.

    I originally endeavored to carve out just the C6x image processing related functions from our existing Project_C6x and place them within a Project_C7x to just do the C7x software pipeline cycle timing analysis, but in doing so found that this was a monumental effort just to compare the C6x to C7x migrated IP with the end result being something that would be difficult to use for verification testing and ultimately not usable in product.

    Our existing Project_C6x, in addition to managing the image chain in real-time within a product, has been developed with the infrastructure and capability to play-back a digital image stimulus with associated control/param settings in simulation mode to evaluate the accuracy and performance of the IP being requested/performed.  By stripping this infrastructure functionality away, i.e., removing required processes and their communication/control via SYS/BIOS, ping/pong data movement in/out L2-SRAM, etc. just to get the C6x code to compile targeting the C7x would in the end not be very useful.

    So, I decided to NOT take that path, but rather embrace migrating the entire Project_C6x infrastructure (processes/comm via SYS/BIOS, DataMover via UDMA, etc.), image chain, and IP as it exists today working out any issues along the way.

    To date I have SUCCESSFULLY been able to build intact my entire old Project_C6x as a new Project_C7x using SYS/BIOS from SDK 7.3, RTSC, and XDCtools on CCS 12.6.

    This was all accomplished with fairly minor changes and adaptations.

    The C6x C/C++ IP code w/ and w/o intrinsics compiled on the C7000 compiler without any necessary re-work.

    After reading the C6000-to-C7000 Migration User's Guide (SPRUIG5E.PDF) I was expecting to at least make some changes to our code before it would compile, but I was pleasantly surprised that was not to be the case.  I basically included c7x.h and c6x_migration.h globally and viola all's well during C7000 compilation.

    There were some hurdles needing to be surmounted along the way...

    -RTSC Platform Package wizard not allowing me to select a supported C71 device, but only TMS320C7100 - see earlier workaround.

    -Lack of CSL support for TSC 64-bit free running timer, i.e. CSL_tscEnable, CSL_tscRead not within library ti.csl.ae71 - workaround was to reference C7x timer register __TSC directly - this is used at run-time within our image-chain to capture cycles used for various IP steps.

    -Replacing currently unsupported/missing C7x IMGLIB calls within our image chain - awaiting formal delivery of needed C7x IMGLIB calls from TI.

    -Revamping DataMover from EDMA3 on C6x to UDMA on C7x - a work in progress.

    -Reworking COMM to other SOC CPU's A72, etc., devices on DRA829 - a work in progress - deferred until specific C7x device selection

    As a result, we can now look at the compiler .asm output to compare/contrast software pipeline loops and predicted cycles between C6x and C7x.

    After loading Project_C7x onto J721E_DRA829_TDA4VM's C71X_0, we can embark on actually running a simulation and getting real C7x cycle times for each of the software pipeline loops for comparison with same on prior C66x DSP.

    Currently, I'm having issues loading to EVM C71X_0 w/ "No Boot Mode".

    I can load to EVM C71X_0 w/ "SD Boot Mode", but the time to load my Project_C7x.out onto the EVM is taking many hours using the on-board XDS110 Debug Probe.

    Please refer to my recent posting for those details... 

    J21EXSOMG01EVM: CCS 12.6 - JTAG Failure Connecting to SOC Cores via EVM On-Board XDS110 Debug Probe Using No Boot Mode 

    The decision regarding staying with SYS/BIOS vs moving to FreeRTOS is one that doesn't have to be made in the near term.  Quite honestly, I'm not all that interested in moving to a new RTOS without significant benefits or reasons.  I'm comfortable with SYS/BIOS as it has served me well for many years.  Staying with SDK 7.3's SYS/BIOS offering may be a very viable option.

    The most important determination needing to be made quickly is whether the C7x device can live up to its billing to significantly outperform the C66x by simply doing a compile of C6x IP C/C++ code w/ and w/o intrinsics and ultimately whether it can replace a multitude of C66x DSPs without the need for significant coding/specialization in targeting the C7x.

    I hope this helps with understanding my thought process regarding evaluating the migration effort and viability of moving from C6x to C7x.

    Thanks,

    -George

  • Hi George,

    Thank you for your detailed response! I've addressed various points below:

    Please forward this bare-metal setup environment/instructions to load output binaries onto EVM in "No Boot Mode".

    For a build environment, we are largely independent from CCS aside from using it to load the binaries. We are using CMake for a cross platform build system generator. For an Ubuntu platform we are using GNU Make + C7x Compiler (for target) or GCC (for host emulation). For Windows, we use Ninja + C7x Compiler (for target) and Visual Studio + MS Visual Studio Code Tools (for host emulation). Essentially we are compiling from command line and providing the C7x compiler with our C/C++ files along with a linker file (and not setting up things such as data movement). The output binary can then be loaded via CCS with the EVM in No Boot Mode to the specific C7x core (instructions in the SDK).

    To date I have SUCCESSFULLY been able to build intact my entire old Project_C6x as a new Project_C7x using SYS/BIOS from SDK 7.3, RTSC, and XDCtools on CCS 12.6.

    Sounds good! Is your initial question in this thread resolved? We will continue support debugging your recent CCS issues in the thread you mentioned. 

    The most important determination needing to be made quickly is whether the C7x device can live up to its billing to significantly outperform the C66x by simply doing a compile of C6x IP C/C++ code w/ and w/o intrinsics and ultimately whether it can replace a multitude of C66x DSPs without the need for significant coding/specialization in targeting the C7x.

    Could you clarify what C66 and C7x comparison you are trying to do? Are you going to compare your C66 project with the C7x project you have been able to compile using your existing C66 project code with the inclusion of the c7x.h and c6x_migration.h header files? If so, do note that including the migration header file will not take advantage of the vector processing capabilities of C7x which leads to some of the major performance improvements over C66.

    Best,

    Asha

  • Asha,

    Thanks for bare-metal setup environment and instructions.

    My original issue to get my C6x project migrated to Project_C7 with SYS/BIOS, RTSC, and XDCtools on C7x has been basically resolved with the following caveats.

    I have been able use the following recipe to successfully build this Project_C7x equivalent targeting the C71X_0 on J721E...

    CCS 12.5, 12.6 on Windows 7 64-bit SP1

    XDCtools ... CCS 12.5 installed xdctools_3_62_01_16_core

    RTSC Platform Package to create "myC7x" platform package targeting C7000, TMS320C7100

    Workaround modification required to C:\TI\ti-processor-sdk-rtos-j721e-evm-07_03_00_07\bios_6_83_02_07\packages\ti\sysbios\family\c7x\Settings.xs

    Modified the settings table enhancing to include TMS320C7100 being duplicated from C71 - noting C71, J7ES, J721E all being equivalent...

    SDK 7.3 ... bios_6_83_02_07, pdk_jacinto_07_03_00_29

    Open questions to TI that have yet to answered...

    1. Needar's statement that ... "RTSC and XDCtools are no longer supported on the latest CCS 12.5".

    I do NOT think that this is completely the case, because CCS 12.5 clearly allows the creation of custom RTSC Platform Package files (albeit C7000 device limited) and the project creation wizard likewise allows RTSC support using XDCtools.

    I would like to understand why this claim is accurate when the RTSC and XDCtools ecosystem ARE clearly available on CCS 12.5/12.6.

    Please elaborate on this CCS 12.5 claim about RTSC and XDCtools not supported.

    2. The only RTSC Platform Package target for C7000 is the TMS320C7100 device which is obviously NOT supported by the xdctools provided.

    I would like to remove the "workaround" I've made to C:\TI\ti-processor-sdk-rtos-j721e-evm-07_03_00_07\bios_6_83_02_07\packages\ti\sysbios\family\c7x\Settings.xs

    How can I update or otherwise get the CCS RTSC Platform Package file wizard/creator to allow C7000 device targeting other than TMS320C7100, i.e., C71, J7ES, J721E, etc.?

    After having answers to these open questions to TI, we can "resolve" this thread and track my other mentioned "No Boot Mode" EVM issue on other thread.

    Regarding...

    Could you clarify what C66 and C7x comparison you are trying to do? Are you going to compare your C66 project with the C7x project you have been able to compile using your existing C66 project code with the inclusion of the c7x.h and c6x_migration.h header files? If so, do note that including the migration header file will not take advantage of the vector processing capabilities of C7x which leads to some of the major performance improvements over C66.

    Reply...

    Yes, my intent is indeed to compare how well the C7x C7000 compiler performs on our existing native C6x image processing code without any changes whatsoever to our C/C++ code w/ and w/o C6x intrinsics.  Does it software pipeline all the same loops? Does it software pipeline additional loops? What's the unroll factor?  What's the cycles/loop?  That is the purpose of including the c7x.h and c6x_migration.h header files.  We need to do this exercise to get a baseline result of migrating our C6x code line onto the C7x.  Our expectation is that the C7x should out-perform the C6x without any C7x specializations.

    We need to assess how well the C7x can support and run our existing C6x codebase without modifications.  Again, our hope, no expectation, is that the C7x should perform better.  Is it better and by how much?  Is it worse?  We need to know this before proceeding.

    Our C6x image processing codebase is quite extensive being on the order of ~100 man-years of development effort over the last two decades.

    The investment to re-write and re-factor this C6x codebase (even a subset) to support the full vector processing of the C7x would be a non-trivial amount of work and expense.  Moving forward to this next phase of a specialized C7x vector processing implementation would need to be weighed against other non-TI DSP processor options being investigated.

    Thanks,

    -George

  • Hi George,

    Let me clarify regarding the support.

    SYS/BIOS 6.83.00.18 and XDC 3.61.02.27 were the last releases on SYS/BIOS and XDC products respectively, and these were released in 2020 Aug/Jun respectively.

    https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/

    These were validated with a minimum of CCS 10.1, with the latest CCS version available at the time of their release being CCS 10.4 or CCS 10.3.1 respectively. 

    https://www.ti.com/tool/download/CCSTUDIO

    The SYS/BIOS and XDC products have reached EOL, and there are no teams within TI developing or validating these against the absolute latest CCS versions that are all released since on newer Ubuntu machines. 

    The last Jacinto Processor SDK release that used SYS/BIOS was 7.3 (release in Apr 2021) which is more than two years ago, and there has been no development within the Jacinto Processors that uses SYS/BIOS since then. The only RTOS that is supported with the latest SDKs is FreeRTOS primarily, and its safety variant SafeRTOS.

    I am glad to see that you were able to get these working with the latest CCS. I would say you got lucky there, since these tools do have some meta-data plugins etc that might need to change to work with the latest Eclipse plug-ins etc (as can be seen by minimum CCS versions with some of the older SYS/BIOS releases).

    regards

    Suman