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: The bootloader about 28377D

Part Number: TMS320F28377D

The bootloader of cpu2 in the 28377d is under the control of the CPU1, This figure show the flow after the cpu2 has reset by cpu1.   In the stand alone mode the bootmode is controled by Zx-BOOTCTRL register, there are two BOOTCTRL register in the DCSM module ,one is Z1-BOOTCTRL register, another is Z2_BOOTCTRL.

My issue is in the bootloader of cpu2 which register desired the bootmode of cpu2 ?

regards

shook

  • Hi Shook,

    Z1-BOOTCTRL and Z2-BOOTCTRL exist on both the CPU (CPU1 and CPU2). Each CPU has two security Zone hence there are two BOOTCTRL register. You can use either of them to control the BOOT setting but if you use Z2_BOOTCTRL register Ist then you'll have one more chance to change it (if needed) by programming Z1_BOOTCTRL.

    Regards,

    Vivek Singh

  • HI! vivek singh

    thank you for your answer , i know the idear

    there is another question, as the figure show,if cpu2 boot from flash, it can goto it's own application program itself. why there must have these codes.

    #ifdef _STANDALONE
    #ifdef _FLASH
    //
    // Send boot command to allow the CPU2 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    #else
    //
    // Send boot command to allow the CPU2 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
    #endif
    #endif

    Another question. As the figure show if cpu2 boot from flash, cpu2 can goto it's own application program itself. But why there must have these code in the CPU1?

    #ifdef _STANDALONE
    #ifdef _FLASH
    //
    // Send boot command to allow the CPU2 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);
    #else
    //
    // Send boot command to allow the CPU2 application to begin execution
    //
    IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_RAM);
    #endif
    #endif

    regards

    shook

  • Hi Shook,

    By default CPU2 does not boot to flash. User need to program the BOOTCTRL register on CPU2 to enable this. Examples code are given for reference only with assumption that most user will use IPC method to BOOT CPU2.

    Regards,

    Vivek Singh

  • HI,Vivek Singh
    The default boot mode is depend on the value of zx_bootctrlotp_key and the zx_bootctrlotp_bmode. The value of these two register is same as the cpu1 and cpu2,why cpu1 is boot to flash by default, but cpu2 is not? thank you
    Regards
    shook
  • HI,Vivek Singh
    Another question I have used the code “IPCBootCPU2(C1C2_BROM_BOOTMODE_BOOT_FROM_FLASH);”in the CPU1‘s projiect. But the cpu2 can't run after the power up. why?
    regards
    shook
  • The first question, i have the answer, The zx_bootctrlotp_key default value is not 0X5A, so the default mode of cpu2 is not boot from flash, is right?
    But another question i have no answer.
  • oh,sorry,The another question is my fault, my program of cpu2 has a little bug, cpu2 can run ok. thank you!
  • Glad to know it's working fine.
  • Also on other question about CPU2 boot from flash, yes the since on default device KEY value will be 0xFF and it's not valid hence CPU2 does not boot to flash. The reason for doing this way is, CPU2 being slave processor, it need to wait for CPU1 application code to finish device initialization (for example pinmux setup, GSx RAM ownership control, peripheral ownership control etc).