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.

TMS320F28376S: Error while Flash the code through RS422 in TMS320F28376S controller

Part Number: TMS320F28376S
Other Parts Discussed in Thread: C2000WARE

Kernel loaded Successfully in our customized board but after selecting ERASE or DFU we find NACK errors those screenshots    are attached below. Here we are using Alternate boot mode pins those are GPIO28 and GPIO29.  please help us as soon as possible.

  • Hi,

    Once the kernel downloads to the device, are you able to load the symbols for the kernel in CCS and see what the current state of the device is?

    Thanks and regards,

    Charles

  • Hi,

    we are Unable to give the Commands for Kernel through CCS. If you Know how to do this please give me the procedure, and tell us what do you meant by symbols for the Kernel. we understood like symbols for the Kernel means Commands giving  through serial flash programmer.exe.  

  • Hi,

    1) Using the Serial Flash Host Programmer, send the flash kernel to the device using appropriate GPIOs for SCI (as done previously)

    2) Open CCS and connect to the device target CPU1 

    3) To load the symbols for the kernel, in CCS toolbar click the 'Load' icon and select the 'Load Symbols' folder following the kernel being successfully loaded to the device. 

    4) Is the kernel waiting for the next command from the user?

    Note, when loading the symbols for a project, this is not the same as sending a kernel command. Kernel commands are listed in the Operations list of the Serial Flash Host Programmer (ex. 1 - DFU1, 2 - Erase, 3 - Verify). The symbols for an application project are needed for debugging purposes.

    Thanks and regards,

    Charles

  • Hi,

    We tried has you mentioned in above message.After load the Symbol(ex:blinky.out) reset the controller  then there is no GPIO toggling,is there any alternate method to validate the issue.

  • Hello,

    Instead of loading the symbols for blinky.out, can you load the symbols of the flash kernel (ex: f2837xs_sci_flash_kernel.out)? The reason we are asking to load the symbols is to see the current status of the device before the NACK error occurs. The expected behavior is that after the kernel is loaded onto the device, execution is paused, and the symbols are loaded, we should see the device waiting for input for the next command. If that is not shown when you load the symbols of the flash kernel, there is likely an error in the loading of the kernel. 

    Kind regards,

    Skyler

  • Hi,

    we have tried as you mentioned above.First we have loaded the flash kernel through Serial flash Programmer it show the command options like (DFU,Erase,RUN....).

    After that we loaded the Load symbols through CCS tool after that we gave command from serial flash programmer and by Running the code from CCS tool we got to Know that kernel was stucked at the Auto Baud lock condition and the serial flash programmer Stucked at Calling F021 Send Packet.

  • Hello,

    Which GPIOs are being configured by the kernel? In F2837xS_sci_flash_kernel.c (in C2000Ware), line 141 specifies GPIO28 and 29 by passing the SCI_BOOT_ALTERNATE parameter to SCI_GetFunction(). Has this been modified in your kernel project? If the GPIOs are being configured as expected, have you tried other baud rates? Which baud rate are you using?

    Kind regards,

    Skyler

  • Hi,

    We are using SCI_BOOT_ALTERNATE boot mode only that and all working and i was checked in debug mode,

    And we are used different Baud Rates also  (like 2400,4800,9600,115200) But same behavior we are seen in above screenshots attached in starting of this conversation.

  • Hi,

    we are thinking that once the kernel was downloaded to the controller ,for re-downloading the kernel we have to reset the controller,but in our case without any reset kernel was downloaded multiple times.Is it correct?

  • Hello,

    Yes, you should reset the controller before downloading the kernel to the device. Does the the device still get stuck in autoBaudLock() if you reset before loading the kernel?

    Kind regards,

    Skyler

  • Hi,

    Yes, even though we reset the controller before loading the Kernel the device is working like how we mentioned in the screenshots above and in CCS debugger device is still getting stuck in the autoBaudLock() of the kernel.

    Actually in our case without giving reset also, kernel was downloading successfully multiple times. Is there any problem in anything from our side?

    Please Suggest us as soon as possible.

  • Hello,

    I'm not sure if the behavior you're describing with multiple successful kernel downloads indicates an issue, but I will look into it.

    In the meantime, can you try loading the kernel via JTAG and CCS to see if the behavior with autoBaudLock() persists? You can use serial_flash_programmer_appln.exe to only send your application image to the device. 

    Kind regards,

    Skyler

  • Hi,

    how to give command to serial_flash_programmer_appln.exe.

    I did not found any information regarding how to give command to this .exe we are assuming that the command will be like 

    "serial_flash_programmer_appln.exe -d f2837xS -a <image_file> -b <baud rate> -p <COM_port>".Is it correct?

  • Hi,

    yes,we are tried loading the kernel via JTAG and ccs, autoBaudLock() function working fine.After loading the kernel code is waiting at while(SciaRegs.SCIFFCT.bit.ABD!=1);, so we gave command 0x41(ASCII of a) from our own exe then AutoBaudLock got successful.

    Thank you.

  • Hello,

    Section 5.4.4 of this document shows the usage of serial_flash_programmer_appln.exe. Now that the auto baud function succeeds when the kernel is loaded via CCS, are you still seeing the NACK errors when you send a command?

    Kind regards,

    Skyler

  • Hello,

    Can you verify the autoBaud character being sent between the host programmer and device when loading the kernel with the original method (serial_flash_programmer.exe)? Based on the output of the screenshots, the autoBaud conditions have already been met so the host programmer prompts the user for input. Can you verify the transmission/reception of 'A' during the autoBaudLock() function? If this succeeds, then the issues with autoBaud you saw when loading the symbols may be due to the debug flow, not the actual kernel/application flow.

    To further debug this issue, you could set a break point at the SCI_GetPacket() function and compare the data received by the device against the data being sent by the host programmer.

    Kind regards,

    Skyler

  • Hi,

    Thank you for your support.