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.

TMS320F28388S: Flash kernel for TMS320F28388S

Part Number: TMS320F28388S
Other Parts Discussed in Thread: C2000WARE

I am using part number  TMS320F28388S.

Does any of the kernel will work for single CPU version? 

CPU1-CPU2:
C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>c28x_dual>flash_kernel
CPU1-CM :
C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>c28x_cm>flash_kernel

Thanks

Prashant Patil

  • Hi Prashant,

    You can use below  example and select CPU1

    CPU1-CPU2:
    C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>c28x_dual>flash_kernel

    Regards

    Rajeshwary

  • Hi Rajeshwary,

    Thanks for your reply...

    I took same flash kernel code and added below line as mentioned in documents, 

    "${CG_TOOL_HEX}" "${BuildArtifactFileName}" -boot -gpio8 -a -o "${BuildArtifactFileBaseName}.txt"

    First autobaud lock to load kernel is successful but second autobaud lock i.e "autobaud to send function message" is stuck. Below are logs for more details,

    Tx: 6, Rx: 6, dwRead=1 count=21438
    Tx: 0, Rx: 0, dwRead=1 count=21439
    Tx: 25, Rx: 25, dwRead=1 count=21440
    Tx: 76, Rx: 76, dwRead=1 count=21441
    Tx: 0, Rx: 0, dwRead=1 count=21442
    Tx: 6f, Rx: 6f, dwRead=1 count=21443
    Tx: 0, Rx: 0, dwRead=1 count=21444
    Tx: 0, Rx: 0, dwRead=1 count=21445

    Bit rate /s of transfer was: 1167.216553Loading kernel successful!
    Done waiting for kernel boot...
    Attempting autobaud to send function message...

    What could be reason for stuck at autobaud lock ? 

  • Hi Prashant,

    Are you able to put breakpoints in the f2838x_codestartbranch_cpu1.asm file and see if the kernel is able to long branch to main? How is it branching to main? This could be a possible reason for why the device is stuck at autobaud lock, as after the kernel has loaded by the host programmer, control is transferred to the kernel application on the target. In sending the application message to the target it would not receive it if the kernel never branched to main.

    Another possible cause for autobaud lock is the baud rate for transfer. Do you have the baud rate set to the standard 9600?

    Thanks and regards,

    Charles

  • Hi  Charles,

    Breakpoints can be added easily if we are running firmware upgrade code from code composor studio since code is for linux, adding breakpoints is bit difficult.
    Buad rate is 9600 as suggested in documents.

    Adding few more details,

    We are having two processors TMS32028388S and TI Sitara processors.
    Linux is running on sitara processors and from this processors we are upgrading TMS320 over uart.
    I have cross compiled c2000ware_4_02_00_00 code for linux and trying to upgrade TMS32028388S over uart/SCI interface.


    case 1) TI sitara evaluation board ( e.g Beaglebone) and C2000 F28003x Control card
    i) Firmware upgrade application code (C2000ware source code ported to linux)
    ii) Flash kernel
    iii) Target Application file for F28003x
    With this combination, we verified that firmware application code and able to upgrade F28003x from sitara process.

    case 2) TI sitara evaluation board ( e.g Beaglebone) and TMS32028388S
    i) Firmware upgrade application code (C2000ware source code ported to linux) and same is validated in case 1.
    ii) Flash kernel for f2838x as given in above post
    iii) Target Application file for F28388S

    In case 2, we only changed flash kernel specific to our target board i.e TMS32028388S.
    we are able to load kernel but it stuck at second auto baud lock as mentioned above.

    Thanks

    Prashant Patil

  • I missed to mention that flash kernel code is as it is taken from below path as suggested by Rajeshwary,

       C2000Ware_x_x_xx_xx > driverlib >f2838x>examples>c28x_dual>flash_kernel

  • Hi Prashant,

    Some things to test for case 2, are you able to view the SCI autobaud between Sitara and F2838 using an oscilloscope? This way could see what packets are being sent. 

    Regards,
    Charles

  • Hi CHarles,

    Above issue is resolved after configuring clock frequency into flash kernel source code as per mounted crystal on custom board. 

    Now i am working on secure firmware upgrade.

    Could you please share more details on how to use secure memory to do firmware upgrade ? 

    How to check authenticity and integrity of firmware file ?

    How to load firmware on desired flash sector i.e other than default flash sector ?

  • Hi Prashant, 

    1) Will need to look at secure memory firmware upgrade process, will update you with details.

    2) You can check the integrity of the firmware file through running a checksum over data being sent. The host programmer is able to do this, but since you are not able to use it in this situation, you would still require checksum functionality to interface with the SCI TX/RX pins. There exists a checksum function in the flash_kernel_ex3_sci_get_function.c file which is used to communicate to the host the file contents are as intended. 

    3) You can change the Sections of the linker command file to load to a different flash bank (ex. Flash4 instead of Flash3)

    Thanks,

    Charles