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.

SYS/BIOS and IPC

Other Parts Discussed in Thread: TMS320F28375D, CONTROLSUITE

Hello.

I'm working on a project with TMS320F28375D running SYS/BIOS on CPU1. I have a Clock instance toggling the heartbeat LED at a 500ms rate.

To start using the CPU2, I've configured a second LED to be controlled by CPU2 and added an IPCSET instruction inside the Clock instance that toggles the first LED to inform the CPU2 that it should toggle the second LED also.

The CPU2 is able to control the second LED, but the toggling rate on BOTH cores becomes 10x slower. Doesn't matter if the CPU2 is running or not, as soon as I add the line: 

IpcRegs.IPCSET.bit.IPC3 = 1;

on the Clock instance, even the first LED under CPU1's control becomes 10x slower, whether the CPU2 is running or not.

Best regards,

Hugo Cunha.

  • Do you have any output to the CCS console?

    Call you attach the clock function code? Please attach and not cut and paste.

    Todd
  • Hi Todd.

    The project is a little bit extensive, so I'm sending you just the main.c file. If I uncomment the line where I set the IPC30 flag, that clock function will run aprox. 10 times slower.

    I have PWM channels running @ 50kHz triggering ADC conversions. I found out that if I reduce the PWM frequency, the system runs well with the IPC30 set instruction.

    I looks like the like the (small) CPU free time that I have left is not enough to set that flag.

    Best regards,

    Hugo Cunha.

    2570.main.c

  • Hi Hugo,

    So is the issue resolved? I hate to say this, but I'm surprised that the IpcRegs.IPCSET.bit.IPC30 = 1; would take that much time. I'm not familiar with the IPC registers on C2837x though.

    Todd
  • Hi Todd.

    I've done a few more tests and in fact, it isn't a problem with the IPC registers. I've made different tests, load CPU1 and CPU2 .out files a start both processors, load both files and start CPU1 only and just load CPU1 file and run it. The last try worked.
    This tells me that maybe something is wrong with the linker files.

    CPU1 is running SYS-BIOS so it has:
    TMS320F28375D.cmd (which is automatically added when I create a project)
    F2837xD_Headers_BIOS_cpu1.cmd (from ControlSuite)

    CPU2 is running barebone FW just polling the IPC flag and toggling an LED, and it has:
    TMS320F28375D.cmd (the same from CPU1 project)
    F2837xD_Headers_nonBIOS_cpu2.cmd (from ControlSuite)

    Can you help me with it?


    Best regards,
    Hugo.

  • How are you loading...CCS? What are the gel files doing? Are they setting anything? Can you please make a simple project that demonstrates the problem with instructions on how to produce the problem?

    Todd