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/DRA71XEVM: DRA7XX PSDK RTOS Setup and Getting started

Part Number: DRA71XEVM

Tool/software: TI-RTOS

Hi,

I am using Jacinto J6 board from Spectrum Digital www.spectrumdigital.com/jacinto-6-tda2x-cpu-board

I would like to write bare metal codes on IPU1 and IPU2, i read that i can make use of PSDK RTOS for this and use early boot late attach for starting M4 cores before Linux OS get fully booted.

The PSDK RTOS (www.ti.com/.../swlicexportcontrol.tsp

get installed sucessfully but the CCS installtion fails CCS7.4.0.00015_web_linux-x64.tar.gz 

I couldnt find an RTOS getting started guide with example codes to access peripherals, IPC etc. Do we have a guide or wiki link for that?

  • Hi Ganesh,

    Please refer to the SDK download page: http://software-dl.ti.com/infotainment/esd/jacinto6/processor-sdk-rtos-automotive/latest/index_FDS.html.  In this, there is a link to both the Getting Started Guide and Software Developer Guide.  There are links for building peripheral examples.

    Is there something in particular you are looking for? If you tell me more about the application you are trying to develop, I may be able to give some more specific guidance.

    Thanks,
    Stephen

  • Hi Stephen,

    I would like M4 core to control CAN Communication, and GPIO and send status to Linux on A15 Core, i dont have a debugger. On windows and Linux the CCS installation fails like this 

    Screenshot - 

    The last part of eclipse.metadata.log

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

    eclipse.buildId=4.5.1.M20150904-0015
    java.version=1.8.0_112
    java.vendor=Oracle Corporation
    BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_US
    Framework arguments: -application org.eclipse.equinox.p2.director -repository software-dl.ti.com/.../eclipserepo -installIU org.eclipse.platform.ide,org.eclipse.help.feature.group,org.eclipse.equinox.p2.discovery.feature.feature.group,org.eclipse.equinox.p2.user.ui.feature.group,org.eclipse.cdt.feature.group,org.eclipse.cdt.debug.ui.memory.feature.group,org.eclipse.tm.terminal.feature.feature.group,org.eclipse.epp.mpc.feature.group,org.eclipse.egit.feature.group,org.eclipse.cdt.build.crossgcc.feature.group,org.eclipse.rse.feature.group,org.eclipse.cdt.launch.remote.feature.group,org.eclipse.gef.feature.group,gnu.io.rxtx.feature.group,org.eclipse.gmf.runtime.thirdparty.feature.group -destination c:/ti/ccsv7/eclipse/ -profile epp.package.cpp -profileProperties org.eclipse.update.install.features=true -bundlepool c:/ti/ccsv7/eclipse/ -p2.os win32 -p2.ws win32 -p2.arch x86 -roaming
    Command-line arguments: -application org.eclipse.equinox.p2.director -repository software-dl.ti.com/.../eclipserepo -installIU org.eclipse.platform.ide,org.eclipse.help.feature.group,org.eclipse.equinox.p2.discovery.feature.feature.group,org.eclipse.equinox.p2.user.ui.feature.group,org.eclipse.cdt.feature.group,org.eclipse.cdt.debug.ui.memory.feature.group,org.eclipse.tm.terminal.feature.feature.group,org.eclipse.epp.mpc.feature.group,org.eclipse.egit.feature.group,org.eclipse.cdt.build.crossgcc.feature.group,org.eclipse.rse.feature.group,org.eclipse.cdt.launch.remote.feature.group,org.eclipse.gef.feature.group,gnu.io.rxtx.feature.group,org.eclipse.gmf.runtime.thirdparty.feature.group -destination c:/ti/ccsv7/eclipse/ -profile epp.package.cpp -profileProperties org.eclipse.update.install.features=true -bundlepool c:/ti/ccsv7/eclipse/ -p2.os win32 -p2.ws win32 -p2.arch x86 -roaming

    !ENTRY org.eclipse.equinox.p2.engine 4 4 2018-10-18 13:01:54.200
    !MESSAGE An error occurred while collecting items to be installed
    !SUBENTRY 1 org.eclipse.equinox.p2.engine 4 0 2018-10-18 13:01:54.200
    !MESSAGE session context was:(profile=epp.package.cpp, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, action=).
    !SUBENTRY 1 org.eclipse.equinox.p2.transport.ecf 4 1002 2018-10-18 13:01:54.200
    !MESSAGE Unable to read repository at software-dl.ti.com/.../org.eclipse.platform.ide.executable.win32.win32.x86_4.6.0.I20160606-1100.
    !STACK 0
    java.io.IOException: Server returned HTTP response code: 503 for URL: downloads.ti.com/.../org.eclipse.platform.ide.executable.win32.win32.x86_4.6.0.I20160606-1100
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1876)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1474)
    at org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.getDecompressedStream(UrlConnectionRetrieveFileTransfer.java:552)
    at org.eclipse.ecf.provider.filetransfer.retrieve.UrlConnectionRetrieveFileTransfer.openStreams(UrlConnectionRetrieveFileTransfer.java:322)
    at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:885)
    at org.eclipse.ecf.provider.filetransfer.retrieve.AbstractRetrieveFileTransfer.sendRetrieveRequest(AbstractRetrieveFileTransfer.java:576)
    at org.eclipse.ecf.provider.filetransfer.retrieve.MultiProtocolRetrieveAdapter.sendRetrieveRequest(MultiProtocolRetrieveAdapter.java:106)
    at org.eclipse.equinox.internal.p2.transport.ecf.FileReader.sendRetrieveRequest(FileReader.java:422)
    at org.eclipse.equinox.internal.p2.transport.ecf.FileReader.readInto(FileReader.java:355)
    at org.eclipse.equinox.internal.p2.transport.ecf.RepositoryTransport.download(RepositoryTransport.java:101)
    at org.eclipse.equinox.internal.p2.transport.ecf.RepositoryTransport.download(RepositoryTransport.java:156)
    at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:669)
    at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.downloadArtifact(SimpleArtifactRepository.java:591)
    at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:723)
    at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.getArtifact(MirrorRequest.java:319)
    at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transferSingle(MirrorRequest.java:288)
    at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.transfer(MirrorRequest.java:223)
    at org.eclipse.equinox.internal.p2.artifact.repository.MirrorRequest.perform(MirrorRequest.java:153)
    at org.eclipse.equinox.internal.p2.artifact.repository.simple.SimpleArtifactRepository.getArtifact(SimpleArtifactRepository.java:707)
    at org.eclipse.equinox.internal.p2.artifact.repository.simple.DownloadJob.run(DownloadJob.java:63)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)

  • Hi Ganesh,

    There is a GPIO driver.  Due to EVM limitation, it's unit test can't run out-of-box, but it can be referenced and used for your application needs.  Also, you can refer to the FATFS example which uses the GPIO driver to detect whether the MMCSD card is inserted - this does run on the EVM.

    For CAN we have a CSL implementation with a basic a DCAN loopback example.  The CSL functions can be used to build your application based on your requirements.

    Regarding the CCS issue, I would recommend you post to the CCS forum: https://e2e.ti.com/support/tools/ccs/.

    Thanks,
    Stephen

  • Hi Stephen,

    I copied csl_uart_test_app_ipu1_0_release.xem4 to /lib/firmware and system linked to dra7-ipu1-fw.xem4. So when the OS boots does the UART messages comes on Linux debug Terminal? when i tried the uart's xem4 i couldn't find trace0 on remoteproc0.
    Does the package have any example which uses csl library to access any hardware peripheral through IPU1,IPU2 or DSP core and sends message to linux user space.
    Similarly i tried with csl_dcan_loopback_app_ipu1_0_release.xem4 but couldn't find trace0 on remoteproc0.
    How can i access any hardware peripheral through IPU1,IPU2 or DSP core and sends message to linux user space.
  • Hi Ganesh,

    The PDK examples are designed to be loaded and run either in a standalone environment through CCS, or via the RTOS SBL.  There are additional steps required to bring this up fully in the Linux environment for the usage you are requiring.  As the CSL examples run in a baremetal context, you will first need to convert this to a SYS/BIOS application.  Nothing special required at first, just enough to get the scheduler running and make sure we can start integrating more modules.

    Then you will have to integrate IPC for providing the trace hooks to print in Linux remoteproc.  I will have to loop in a few other experts to provide guidance on that.

    Also, If you are intending to port to run under Linux, you will need to remove IPU access to UART console.  If both IPU and another core (i.e. A15 running Linux) are both accessing the same hardware resource like a UART port then there will be issues due to conflicting accesses.  The messages will have to be provided via the IPC trace

    Thanks,
    Stephen

  • Hi Stephen,

    I created a ccs project for cortexM and copied the contents of messageq_single example to it and changed the configuration of the project, its building fine and is generating binary.out. On the project linker settings i specified the project filename to xem4 so it generated binary.xem4.
    The below image shows the CCS new project configuration
    pasteboard.co/HJWjnCBp.png
    In CCS config there is only cortex M no specification for IPU1 and IPU2. i copied the xem4 binary to lib/firmware but i think it didn't work because in remoteproc0 the option trace0 was not available.
  • Hi Ganesh,

    You don't need to specify the IPU1 or IPU2 when creating the project. That will be specified in your configuration files for your IPC application. You can check the IPC example configuration files for messageq_single (see rpmsg_transport.cfg, IpcCommon_vayu.cfg.xs, IpuAmmu_vayu.cfg and Ipu1Smp.cfg), or the ex02_messageq test app (instructions for that here processors.wiki.ti.com/.../Examples if it is not included in your SDK).

    Are you able to load/run the messageq_single example when built with IPC package (not through CCS project you created)?

    To see if loading was successful, you can check the dmesg logs for remoteproc for any errors, and also the state of the remote core using remoteproc debugfs.

    Thanks,
    Angela