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.

TMS320F28069M: Using CAN bootloader in Daisy-chain configuration

Part Number: TMS320F28069M


Dear Support:

I have 3 C2000 CPUs (F28069M) and want to have each of them configured in a daisy-chained configuration such that my CAN host processor can download code using the F28069M bootloader configured for CAN.  So I have 2 questions:

1.)  Apparently CAN bootloader is enabled via the GetMode (Mode 3) configuration but requires one to write a specific value of 7 to OTP memory.  Is this correct and if so, how do I write this value of 7 to OTP memory location @ 0x3D7BFE?

2.)  How will this work such that my host processor will be able to access the specific C2000 CPU in order to download the desired image to the desired F28069M using the bootloader configured for the CAN mode of operation?  Is there any documentation on if and how this would work?  Please advise.

Thanks,
Tim

  • 1.)  Apparently CAN bootloader is enabled via the GetMode (Mode 3) configuration but requires one to write a specific value of 7 to OTP memory.  Is this correct and if so, how do I write this value of 7 to OTP memory location @ 0x3D7BFE?
    Your understanding is correct. Please refer to e2e.ti.com/.../480387 & e2e.ti.com/.../2532888
     
    2.)  How will this work such that my host processor will be able to access the specific C2000 CPU in order to download the desired image to the desired F28069M using the bootloader configured for the CAN mode of operation?  Is there any documentation on if and how this would work?  Please advise.
    The boot-ROM configures a STD ID of 0x1. It is not possible to address a specific node. You need to create a custom loader in OTP.
  • Hey Hareesh:

    Thanks for your replay and the forum references - that was helpful. After reading them though, I'm still a little confused. I'm not a big fan of writing to OTP - really don't feel like screwing up my launchpads and having to order new ones. So is there a way of using the standard boot modes of either SCI and/or FLASH depending on the GPIO settings, and then when running the program and getting a notification that the host wants to boot from CAN, have the F28069M CPU branch to somewhere in OTP memory and run the CAN bootloader? Hence issuing this on command vs using GPIO pins. If so, it's not clear how you would do this. Can you provide some more detail or provide a reference where this is explained fully how to do this? I've been reading a lot of stuff, but can't find a clear path on how one would go about doing this. Please advise.

    Thanks,
    Tim
  • Dear Support:

    Also it's not clear to me if and how having 3 C2000 devices connected over CAN would work when using the CAN bootloader.  Don't the individual devices need a ID in order to know that the incoming packets are for it?  If so, how would you individually address each of the C2000's via CAN if an ID has not been assigned?  Am I missing something here?  Please advise.

    Thanks,
    Tim

  • So is there a way of using the standard boot modes of either SCI and/or FLASH depending on the GPIO settings, and then when running the program and getting a notification that the host wants to boot from CAN, have the F28069M CPU branch to somewhere in OTP memory and run the CAN bootloader? Hence issuing this on command vs using GPIO pins. If so, it's not clear how you would do this. Can you provide some more detail or provide a reference where this is explained fully how to do this?

    You could always boot to Flash. Your application could look for a CAN frame with a unique data-pattern. If this pattern is received, it indicates that flash update is warranted and the application could jump to the CAN bootloader in boot-ROM. Else, normal application execution is chosen.

    Also it's not clear to me if and how having 3 C2000 devices connected over CAN would work when using the CAN bootloader. Don't the individual devices need a ID in order to know that the incoming packets are for it? If so, how would you individually address each of the C2000's via CAN if an ID has not been assigned? Am I missing something here?

    The CAN bootloader in boot-ROM assigns a STD-ID of 0x1. This is applicable to every node on the network. So, the host needs to transmit the frames with an ID of 0x1, which will be received by all the nodes. In the current setup, it is not possible to transmit something to a specific node, since all nodes have the same ID. If this is unacceptable to the application, a custom CAN bootloader needs to be programmed in the OTP.
  • Hey Hareesh:

    Thanks for your response - sorry for the late response, been traveling this week.  And thanks for making that clear.

    Tim