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.

TMS320F28377D: How to use CPU1 and CPU2 of TMS320F28377D

Part Number: TMS320F28377D
Other Parts Discussed in Thread: C2000WARE

Tool/software:

Now, I'm considering using the TMS320F28377D and have two questions.

1) TMS320F28377D has CPU1 and CPU2. Do I need to create software for both?
    (Should I create a separate CCS project for each?)
   If I only use CPU1, is it possible that I don't need to create software for CPU2?

   If I don't need to create it, how should I set the registers for CPU2?
   If there are any documents or sample codes for register settings, please let me know.

   Also, if it is necessary to create it, please let me know if there are any sample codes for setting the registers for CPU2.

2) If I want to use both CPU1 and CPU2 and use separate external buses (address bus, data bus),
   (i.e., if I want CPU1 and CPU2 to control and access the bus independently and in parallel),
   is such a setting possible? How should I set it up?

   Please let me know if you have any sample code for such a case.
   Also, is the GFP 176-pin package enough pins? Is it necessary to use a BGA package?

Regards,

T. Mori

  • Hi T. Mori,

    Below are my answers to your questions:

    1) Yes, each core would need its own CCS project. This is because they both need different .out files to load to each core. To see how to actually connect/load both cores, see this guide: 6. Debugging multiple cores — C2000Tm Multicore Development Guide. The project for CPU2 is not required if you only want to use CPU1 in your application. In this case you wouldn't need to any special configurations for CPU2 from CPU1 since you aren't using it and all the peripherals will belong to CPU1 by default. We have examples for both cases in the C2000ware SDK that you can reference in the following paths:

    • Examples using only CPU1: [C2000ware install]/driverlib/f2837xd/examples/cpu1/
    • Examples using both CPU1 and CPU2 (notice these examples when imported pull in two projects):  [C2000ware install]/driverlib/f2837xd/examples/dual/

    2) We have a module on the device called EMIF (external memory interface) that provides an external interface. I will loop in the EMIF expert to comment on your question here. We also have a dedicated dual core EMIF example in the previously mentioned C2000ware path if you want to take a look.

    3) The package size needed depends on the needs of the application. I would suggest mapping out your application and seeing how many pins it uses and looking at the pinmuxing options from the Sysconfig tool.

    Best Regards,

    Delaney

  • Hi T. Mori,

    This device (F28377D) supports two EMIF modules (EMIF1 and EMIF2). EMIF1 is shared between the CPU1 and CPU2, whereas EMIF2 is dedicated to the CPU1. But if EMIF1 uses all the 32-bit data buses, the EMIF2 can not be used since EMIF2 data pins are muxed with EMIF1 MSB data pins.

    To access the EMIF1 memory, the CPU has to get the master ownership of the EMIF using the EMIF1MSEL register.

  • Hi Delaney

    Thank you for your reply!

    I understand. The problem has been solved.

    Regards,

    T. Mori