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.

TMDSCNCD28388D: serial_flash_programmer is not able to complete autobaud

Part Number: TMDSCNCD28388D

Tool/software:

When I follow the following instructions:

The output follows:

I have the Baseboard docking station with the TMDSCNCD28388D control card.

  • If I use the CCS, it gets past Autobaud:

    If I exit the program "0" (using CCS), it once again is stuck at Autobaud (if I immediately try to run it again) and stops here:

  • Hi Jim,

    I'll be able to get to your question within the next day or two.

    Thanks and regards,

    Charles

  • Charles,

         OK!  Thanks!

    Also, is there a CAN flash kernel for the f2838x? 

    Also... 

                    I was able to get the serial flash programmer to get past the Autobaud “pause” by changing USB cables.  I wanted to ask, however, whether I should build the application using the FLASH configuration for the build.  I used the RAM configuration for the flash kernel build.

    Our goal is to get this working with CAN.

    With the command line arguments I used, what operation(s) should I select to get the blinking light example flashed.  Should I flash in CM or CPU1?

  • Hi Jim,

    Yes, you should build the application using the FLASH build configuration.

    There currently is not a CAN Flash kernel available for the F2838x device, but for a related reference project(s) you can look to our CAN Flash Programming of C2000 Microcontrollers application note. Note: the CAN Flash kernel and host programmer does not take user input from the command line in current examples.

    When using the SCI version of the Flash Kernel and the related SCI Flash Host programmer, the flow order for seeing the Blinky example project on CPU1 is as follows:

    - Load SCI Flash Kernel

    - Perform 'DFU CPU1' operation

    - Perform 'Run CPU1' operation

    I advise to go with the CPU1 option first to test the blinky example.

    Thanks and regards,

    Charles

  • OK!  Thanks!  It appears to be working!

    So, I should be able to make modifications in the existing CAN reprogramming code to accommodate the f2828x?  And to clarify, there is no operator menu selections for the CAN programmer - once started, it continues to completion without any additional input from the operator?

       

  • Hi Jim,

    Great! Yes, you should be able to make modifications in the existing CAN flash kernel example and CAN host programmer for this device. Yes, currently there are no operator menu selections for the CAN programmer once started. 

    Thanks and regards,

    Charles

  • Charles,

    OK!  Thanks!

  • Charles,

     

                    I’m using the “flash_kernel_ex4_can_flash_kernel” example as a template for my f2838x variant. We’re only using CPU1 in our project but if “ex4” is using both CPU’s, I may revisit setting up the second CPU, as well.

                    I’m using “F2838x_C28x_FlashAPI.lib” instead of “FAPI_F28003x_EABI_v1.58.10.lib”, “flash_programming_f2838x_c28x.h” instead of “flash_programming_f28003x.h”, “f2838x_codestartbranch.asm” instead of “flash_kernel_ex3_codestartbranch.asm” and “2838x_flash_lnk_cpu1.cmd” instead of “28003x_generic_ram_lnk.cmd”.

                    I am able to build but I’m still reviewing the changes.  Any suggestions?

                    Should I move the modifications in “flash_kernel_ex3_codestartbranch.asm” to “f2838x_codestartbranch.asm”?

                    What linker file should I use for this?

  • Hi Jim,

    What modifications are different between the F28003x codestart branch asm file and the F2838x codestart branch asm file?

    After doing a comparison, they seem to be mostly similar except for wd_disable section when ExitBoot is considered:

    The linker file you should use for this should be a modification of the flash_programming_cpu1tocpu2_RAM_2838.cmd file.

    Thanks and regards,

    Charles

  • Charles,

    I reorganized the project a little by starting with flash_kernel_c28x_cm_ex1_c28x1 and porting portions of the flash_kernel_ex4_can_flash_kernel into it for the CAN flash kernel instead of the SCI flash kernel.

    I noticed that the static dataSize[dlc) array in the mcan.c library file is not initialized to the values at the top of the mcan.c file.

    Any suggestions?

  • Hi Jim,

    Do you mean the following dataSize:

    static uint32_t dataSize[16] = {0, 1, 2, 3, 4, 5, 6, 7,
    8, 12, 16, 20, 24, 32, 48, 64};

    It's seen as the same in both mcan.c files for F2838x and F28003x libraries. Can you provide an image for the values at the top of the mcan.c file?

    Thanks,

    Charles

  • Charles,

    Yes, that is the static array that is not initialized.  It looks like when it branches to main (LCR main) instead of LB _c_int00, the auto init sequence does not occur.  How is that dealt with in the flash_kernel_ex4_can_flash_kernel example for the F28003x?  I am running this in the CCS debugger, is that an issue?

  • Hi Jim,

    I don't see this variable being used for the project. The MCAN Flash kernel relies on the RX MSG to acquire data. 

    Thanks,

    Charles

  • Charles,

    If that's the case, great!  I'll continue debugging!  Also, we're using the drivers for Ixxat (USB to CAN/CAN FD).  I should be able to use those instead of the PCAN, correct?

  • Charles,

    I still see the issue with the uninitialized static array in MCAN_readMsg():



    MCAN_getDataSize is always 0.




  • Hi Jim,

    On the drivers I'm not sure, this project was only previously tested with previous devices using PEAK API drivers and the Peak PCAN USB adapter.

    If the data size is always 0, then it is likely that no frames are being encountered by the message RAM. Is the CAN kernel able to be loaded by the device using the modified CAN host programmer?

    Thanks and regards,

    Charles

  • Charles,

    To clarify...  dataSize[] is not getting initialized -> static uint32_t dataSize[16] = {0, 1, 2, 3, 4, 5, 6, 7,
    8, 12, 16, 20, 24, 32, 48, 64};

  • Jim,

    If you are still using the drivers for Ixxat (USB to CAN/CAN FD), you may want to try using the PEAK PCAN USB adapter if able. It's possible that the dataSize is not getting initialized due to no frames being received by the device.

    Thanks,

    Charles

  • Charles,

    I'm using CANAlyzer to send a test message.  It contains 8 bytes of random data.  I wanted to see the code working, however, when it calls MCAN_getDataSize(), the return(dataSize(dlc = 8): is '0' because each element of dataSize is '0' since it's not initialized.  I verified dlc = 8.

  • Jim,

    Can you display the contents of the RX buffer element in message RAM?

    Thanks,

    Charles

  • Charles,

    It may take me a while.  The development board is on a coworkers desk right now (we don't have all the custom boards in house, yet).

  • Hi Jim,

    Ok, look forward to your display.

    Thanks,

    Charles