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.

Using M3 on DRA62x

Other Parts Discussed in Thread: CCSTUDIO

Hi,

I'm using the Jacinto5 DRA62x and am trying to get some code on the CortexM3 running.

I have a tutorial from TI regarding this, but the description covers only how to activate the core in the Cortex-A8 code and then copy the M3-code to the core using a JTAG debugger. This works perfectly, but i don't understand how i can start the code for the M3 directly from the A8. I also use the integrated DSP (C674x), which i can start without problems (writing the start adress of the dsp code to a specified register) I searched for a similiar register for the M3 in the specifications, but couldn't find anything. Is there a startup register for the M3 or is there another way of getting the code running?

Regards,

Roland

  • Hi Roland,

    What is the SDK you are using?

    I am using EZSDK 5.05.02.00 and the M3-code is provided as binary files (firmware) (black boxes) which are loaded from the Cortex-A8 CPU.

    Best regards,
    Pavel

  • Hi Pavel,

    I'm not using EZSDK at all. I just use CCStudio 5.4 to compile the code for the M3. The output is a binary file. My problem is that i don't know where to load this binary (if there exists a predefined location for the M3 code) or where to find the responsible register (if there exists a register which i can tell where the code can be found).

    Regards, Roland

  • Roland,

    Regarding CCStudio, I was working with GEL and .out files, no binary files. Let me check with the CCStudio team, for the procedure for loading binary files.

    Best regards,
    Pavel

  • Roland,

    We have some more questions.

    Roland Rothe said:
    I'm using the Jacinto5 DRA62x

    This is the DM814x/AM387x forum, and I am not sure how much these two devices are relevant, DM814x and DRA62x. Who guide you to post DRA62x questions in this forum?

    Roland Rothe said:
    I have a tutorial from TI regarding this, but the description covers only how to activate the core in the Cortex-A8 code and then copy the M3-code to the core using a JTAG debugger.

    What is this tutorial, can you provide a link to it? Are you coping the M3-code to the core using a JTAG, under the CCStudio?

    Roland Rothe said:
    This works perfectly, but i don't understand how i can start the code for the M3 directly from the A8.

    Do you mean that you need to start the M3 without CCStudio?

    Roland Rothe said:
    writing the start adress of the dsp code to a specified register

    Do you mean the DSPBOOTADDR[31:10] BOOTADDR  register/bits?

    Best regards,
    Pavel


  • Hi Pavel,

    Pavel Botev said:
    This is the DM814x/AM387x forum, and I am not sure how much these two devices are relevant, DM814x and DRA62x. Who guide you to post DRA62x questions in this forum?

    I couldn't find a specific forum for my device, and as far as i know, the DM814x should be compatible to the DRA62x (J5Eco -> DM811x). At least this is stated in the tutorial i have.

    Pavel Botev said:
    What is this tutorial, can you provide a link to it? Are you coping the M3-code to the core using a JTAG, under the CCStudio?

    Exactly. And this works fine. I just don't know how to do this when i'm running the target without CCStudio/JTAG. I attached the tutorial for you.

    Pavel Botev said:
    Do you mean the DSPBOOTADDR[31:10] BOOTADDR  register/bits?

    Yes.

    Best regards,

    Roland

    J5Eco App Note - M3 access.pdf
  • Roland,

    Roland Rothe said:
    Exactly. And this works fine. I just don't know how to do this when i'm running the target without CCStudio/JTAG.

    When running the target without CCStudio/JTAG, what is the software you are using? What is the OS you are using?

    I am using Linux based EZSDK with PSP, and the M3 binary files are loaded through a firmware loader utility.

    firmware_loader $HDVICP2_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvicp.xem3 start

    firmware_loader $HDVPSS_ID /usr/share/ti/ti-media-controller-utils/dm814x_hdvpss.xem3 start

    BR
    Pavel

  • Hello Pavel and Roland,

    Our team have the similar problem regarding to boot the M3 from A8 without using JTAG, for J5eco EVM board.  We'd like to boot the M3_ISS from the A8 directly, before A8 launches LINUX for the sake of real time requirement.  

    We are using EZSDK as well, and was told by local TI FAE that we just need to insert something like slaveloader into u-boot code somewhere and everything will just be fine per their said experience.  For some weird reason, they keep their source code, AND EVEN BINARY, as top secret.  I am believing that TI as a whole global giant would have some talent FEAs who have a better understanding of how to build a better and opener ecosystem.  I wonder if Pavel could start to educate us in this particular case? Greatly appreciate it!

    Best regards,

    George 

  • Pavel,

    Pavel Botev said:
    When running the target without CCStudio/JTAG, what is the software you are using? What is the OS you are using?

    I am using SYS/BIOS 6.34.2.18, but i want to run the M3 Software before the startup of the OS, directly after the startup of the A8, just like George wrote.

    Best regards,

    Roland

  • Hi George,

    George Pan said:
    We'd like to boot the M3_ISS from the A8 directly, before A8 launches LINUX for the sake of real time requirement.

    George Pan said:
    We are using EZSDK as well, and was told by local TI FAE that we just need to insert something like slaveloader into u-boot code somewhere and everything will just be fine per their said experience.

    Do you mean that you need to start the M3 from the u-boot, before linux start-up? As my DM814x EZSDK starts the M3 after linux start-up.

    Regarding slaveloader/firmware_loader you can check the below wiki pages:

    http://processors.wiki.ti.com/index.php/EZSDK_Firmware_Loader_vs_Slaveloader_FAQ

    http://processors.wiki.ti.com/index.php/EZ_SDK_FAQ#What_is_the_difference_between_slave_loader_and_firmware_loader.3F

    http://processors.wiki.ti.com/index.php/TI81XX_PSP_VIDEO_CAPTURE_Driver_User_Guide

    Load VPSS M3 Firmware

    ./slaveloader startup VPSS-M3 ti816x_hdvpss.xem3

    Note that in the DM814x EZSDK, I have M3 HDVICP (dm814x_hdvicp.xem3)
    and M3 HDVPSS (dm814x_hdvpss.xem3) binary files, no M3 ISS binary file.

    BR
    Pavel

  • Roland,

    Roland Rothe said:
    I am using SYS/BIOS 6.34.2.18, but i want to run the M3 Software before the startup of the OS, directly after the startup of the A8

    Let me check with the BIOS team, if possible and how to do.

    Regards,
    Pavel

  • Pavel: 

    "Do you mean that you need to start the M3 from the u-boot, before linux start-up? "

    Yes.

    "Note that in the DM814x EZSDK, I have M3 HDVICP (dm814x_hdvicp.xem3)

    and M3 HDVPSS (dm814x_hdvpss.xem3) binary files, no M3 ISS binary file."

    Sorry to make you confuse.  Yes, we are more concerned of HDVPSS, not ISS.  Your input is valuable.  I appreciate it.  We will try it out.  

    Best regards,

    George

      
  • Hi Roland 

    Roland Rothe said:

    I also use the integrated DSP (C674x), which i can start without problems (writing the start adress of the dsp code to a specified register) I searched for a similiar register for the M3 in the specifications, but couldn't find anything. Is there a startup register for the M3 or is there another way of getting the code running?

    Now I'm working on J5Eco EVM(TI811X)  and I  need  to boot DSP from A8.  As you say, it is easy to do this by writing the start adress of the dsp code to a specified register. I would appreciate it if you could give some advice on how to solve this problem.

    Best regards,

    Hu

  • Roland,

    Roland Rothe said:
    I am using SYS/BIOS 6.34.2.18, but i want to run the M3 Software before the startup of the OS, directly after the startup of the A8

    This is the feedback from our BIOS team:

    This is a special use-case typically not supported by Linux. In SysLink, you could use the NoBoot option to attach to a running slave processor and map all necessary memory regions yourself. But the real issues are with Linux.

    It would require u-boot to load and run the M3 before it loaded the Linux kernel (uimage). The issues relate to peripheral ownership. In the nominal case, Linux boots first and takes ownership of all peripherals. When SysLink load the M3, it requests the necessary peripherals from Linux. If the M3 was loaded first, then somehow the Linux kernel must know at boot time which peripherals are already in use by the M3. Otherwise, Linux would reset all peripherals which would disable the code running on the M3.

    I will try to find more info for you. I will post here when I have something more.

    Best regards,
    Pavel

  • George,

    Regarding the EZSDK/PSP, our PSP team is currently doing something similar for Cortex-A15 based devices, but the approach should be similar here:

    Yes, we are putting a stripped version of the XEM3 image (hdvpss.xem3) into one of the partitions in the flash and then U-boot is able to load the image into RAM.  Then, the ELF loader (added to U-boot) is taking over from there and is reading all of the sections out of the ELF image and putting them where they go for the Cortex-M3 to use, as expected.  Then U-boot could continue booting linux, as usual, from that point in time.

    This feature is still under test. If I could find more info, I will post here.

    Best regards,
    Pavel

  • George,

    I found that there is a patch available for the J5Eco, but it is not for public release. Please provide me the name and contact of your local TI FAE. I will provide the patch through the FAE.

    BR
    Pavel