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.

TMS320F280039C: DCAN Bootloading

Part Number: TMS320F280039C
Other Parts Discussed in Thread: SYSBIOS, C2000WARE

Tool/software:

Hi,

I am having trouble bootloading my TMS280039C Lanchpad via DCAN. I am following all the steps described in Application Note SPRAD51A without success. I am using flash_kernel_ex5_dcan_flash_kernel as the Kernal, and led_ex1_blinky.

Some device feedback:

1. My PCAN-USB Pro flashes green until the the dcan_flash_programmer (I am running via Visual Studio) says bootloading is complete.

2. Once bootloading is "complete" the micro does not jump to Flash or to RAM. 

3. If before I try bootloading, upload a blinky program via the XDS100, the LED would not blink anymore after bootloading.

In short. The software shows in command line the bootloading is complete, but I have no success.

Any assistance would be appreciated!

Regards

Ezra

  • Hi Ezra,

    After bootloading is complete, can you pause the execution via CCS and then load the symbols associated with the kernel or application? This can be done in the following steps:

    Load -> Load Symbols -> Select the .out file associated with the kernel or application

    This will allow you to see where the device is stuck. It could be stuck in the kernel (it would show a RAM address in the debug window), or stuck somewhere in the application (it would show a flash address in the debug window).

    Kind regards,

    Skyler

  • Hi Skylar, thanks for getting back to me.

    So I started debugging both the flash Kernal and the Visual Studio programmer.

    1. I have verified that the PCAN transmits @ 100kb with a seperate CAN analyzer.

    2. I have verified with a separate CAN analyzer that flash_kernal_ex5 can receive messages @100kb.

    3. But when I connect the PCAN to my Launchpad, it is stuck at

    I have removed this piece of code to see if I can get any further, but then it remains stuck in this while loop. It never receives a CAN message.

    So I have verified my cable connections. I have verified both the launchpad and the PCAN comms. Does this sound familiar?

  • Update: I have updated the Kernal code CAN RX message. I no can receive data without issue.

    That said, the Kernal jumps to EStop when trying to execute this function:

  • Hi Ezra,

    The kernel is executing in RAM and the HCLK frequency is 120MHz , correct?

    Kind regards,

    Skyler

  • Hi Skylar, yes the Kernal is executing in RAM. I'll double check that the HCLK frequency is correct.

  • Hi Ezra,

    Okay, let me know when you have verified this information.

    Kind regards,

    Skyler

  • Hi Skyler, I'm not ignoring the thread. 

    I'll only be able to jump on the bootloader by 23/10 - then I'll get back to you.

  • Hi Ezra,

    No worries.

    -Skyler

  • Hi Skylar

    Confirmed. The HCLK frequency is running at 120MHz.

    I am starting to suspect that there might be an error with the .cmd file I am using.

    I am using the 28003x_generic_ram_lnk.cmd file. Would cause a problem?

  • Ok, I have made some progress:

    1. I defined _FLASH so that these lines could be called:

    2. I updated my linker file. I am going to paste it below. Maybe you could have a look at it?

    3. I am getting past the FAPI_initializeAPI & Fapi_setActiveFlashBank functions.

    4. I am receiving data and writing it to the flash, but it is as if there is a desparity between my linker file and what my .txt flag file is expecting.

    Here is my the linker file I am using:

    /*
    //###########################################################################
    //
    // FILE: f28003x_flash_api_lnk.cmd
    //
    // TITLE: Flash API linker cmd file for f28003x device
    //
    //###########################################################################
    */

    MEMORY
    {
    BEGIN : origin = 0x00080000, length = 0x00000002
    BOOT_RSVD : origin = 0x00000002, length = 0x00000126

    RAMM0 : origin = 0x00000128, length = 0x000002D8
    RAMM1 : origin = 0x00000400, length = 0x00000380 /* on-chip RAM block M1 */
    BOOT_RSVD_SYSBIOS: origin = 0x00000780, length = 0x00000080

    /* RAMLS0 : origin = 0x00008000, length = 0x00000800
    RAMLS1 : origin = 0x00008800, length = 0x00000800
    RAMLS2 : origin = 0x00009000, length = 0x00000800
    RAMLS3 : origin = 0x00009800, length = 0x00000800 */
    RAMLS03 : origin = 0x00008000, length = 0x00002000
    RAMLS4 : origin = 0x0000A000, length = 0x00000800
    RAMLS5 : origin = 0x0000A800, length = 0x00000800
    RAMLS6 : origin = 0x0000B000, length = 0x00000800
    RAMLS7 : origin = 0x0000B800, length = 0x00000800

    /* Combining all the LS RAMs */
    //RAMLS : origin = 0x00008000, length = 0x00004000

    RAMGS0 : origin = 0x0000C000, length = 0x00001000
    RAMGS1 : origin = 0x0000D000, length = 0x00001000
    RAMGS2 : origin = 0x0000E000, length = 0x00001000
    RAMGS3 : origin = 0x0000F000, length = 0x00001000

    BOOTROM : origin = 0x003F8000, length = 0x00007FC0
    SECURE_ROM : origin = 0x003F2000, length = 0x00006000


    RESET : origin = 0x003FFFC0, length = 0x00000002

    /* Flash sectors */
    /* BANK 0 */
    FLASH_BANK0_SEC0 : origin = 0x080002, length = 0x000FFE
    FLASH_BANK0_SEC1 : origin = 0x081000, length = 0x001000
    FLASH_BANK0_SEC2 : origin = 0x082000, length = 0x001000
    FLASH_BANK0_SEC3 : origin = 0x083000, length = 0x001000
    FLASH_BANK0_SEC4 : origin = 0x084000, length = 0x001000
    FLASH_BANK0_SEC5 : origin = 0x085000, length = 0x001000
    FLASH_BANK0_SEC6 : origin = 0x086000, length = 0x001000
    FLASH_BANK0_SEC7 : origin = 0x087000, length = 0x001000
    FLASH_BANK0_SEC8 : origin = 0x088000, length = 0x001000
    FLASH_BANK0_SEC9 : origin = 0x089000, length = 0x001000
    FLASH_BANK0_SEC10 : origin = 0x08A000, length = 0x001000
    FLASH_BANK0_SEC11 : origin = 0x08B000, length = 0x001000
    FLASH_BANK0_SEC12 : origin = 0x08C000, length = 0x001000
    FLASH_BANK0_SEC13 : origin = 0x08D000, length = 0x001000
    FLASH_BANK0_SEC14 : origin = 0x08E000, length = 0x001000
    FLASH_BANK0_SEC15 : origin = 0x08F000, length = 0x001000

    /* BANK 1 */
    FLASH_BANK1_SEC0 : origin = 0x090000, length = 0x001000
    FLASH_BANK1_SEC1 : origin = 0x091000, length = 0x001000
    FLASH_BANK1_SEC2 : origin = 0x092000, length = 0x001000
    FLASH_BANK1_SEC3 : origin = 0x093000, length = 0x001000
    FLASH_BANK1_SEC4 : origin = 0x094000, length = 0x001000
    FLASH_BANK1_SEC5 : origin = 0x095000, length = 0x001000
    FLASH_BANK1_SEC6 : origin = 0x096000, length = 0x001000
    FLASH_BANK1_SEC7 : origin = 0x097000, length = 0x001000
    FLASH_BANK1_SEC8 : origin = 0x098000, length = 0x001000
    FLASH_BANK1_SEC9 : origin = 0x099000, length = 0x001000
    FLASH_BANK1_SEC10 : origin = 0x09A000, length = 0x001000
    FLASH_BANK1_SEC11 : origin = 0x09B000, length = 0x001000
    FLASH_BANK1_SEC12 : origin = 0x09C000, length = 0x001000
    FLASH_BANK1_SEC13 : origin = 0x09D000, length = 0x001000
    FLASH_BANK1_SEC14 : origin = 0x09E000, length = 0x001000
    FLASH_BANK1_SEC15 : origin = 0x09F000, length = 0x001000

    /* BANK 2 */
    FLASH_BANK2_SEC0 : origin = 0x0A0000, length = 0x001000
    FLASH_BANK2_SEC1 : origin = 0x0A1000, length = 0x001000
    FLASH_BANK2_SEC2 : origin = 0x0A2000, length = 0x001000
    FLASH_BANK2_SEC3 : origin = 0x0A3000, length = 0x001000
    FLASH_BANK2_SEC4 : origin = 0x0A4000, length = 0x001000
    FLASH_BANK2_SEC5 : origin = 0x0A5000, length = 0x001000
    FLASH_BANK2_SEC6 : origin = 0x0A6000, length = 0x001000
    FLASH_BANK2_SEC7 : origin = 0x0A7000, length = 0x001000
    FLASH_BANK2_SEC8 : origin = 0x0A8000, length = 0x001000
    FLASH_BANK2_SEC9 : origin = 0x0A9000, length = 0x001000
    FLASH_BANK2_SEC10 : origin = 0x0AA000, length = 0x001000
    FLASH_BANK2_SEC11 : origin = 0x0AB000, length = 0x001000
    FLASH_BANK2_SEC12 : origin = 0x0AC000, length = 0x001000
    FLASH_BANK2_SEC13 : origin = 0x0AD000, length = 0x001000
    FLASH_BANK2_SEC14 : origin = 0x0AE000, length = 0x001000
    FLASH_BANK2_SEC15 : origin = 0x0AF000, length = 0x001000

    }


    SECTIONS
    {
    codestart : > BEGIN, ALIGN(8)
    .text : >> FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 | FLASH_BANK0_SEC4, ALIGN(8)
    .cinit : > FLASH_BANK0_SEC4, ALIGN(8)
    .switch : > FLASH_BANK0_SEC1, ALIGN(8)
    .reset : > RESET, TYPE = DSECT /* not used, */

    .stack : > RAMM1

    #if defined(__TI_EABI__)
    .init_array : > FLASH_BANK0_SEC1, ALIGN(8)
    .bss : > RAMLS5
    .bss:output : > RAMLS03
    .bss:cio : > RAMLS03
    .data : > RAMLS5
    .sysmem : > RAMLS5
    .const : > FLASH_BANK0_SEC4, ALIGN(8)
    #else
    .pinit : > FLASH_BANK0_SEC1, ALIGN(8)
    .ebss : > RAMLS5
    .esysmem : > RAMLS5
    .cio : > RAMLS03
    .econst : > FLASH_BANK0_SEC4, ALIGN(8)
    #endif

    ramgs0 : > RAMGS0
    ramgs1 : > RAMGS0

    /* Allocate IQ math areas: */
    IQmath : > FLASH_BANK0_SEC1, ALIGN(8)
    IQmathTables : > FLASH_BANK0_SEC2, ALIGN(8)

    GROUP
    {
    .TI.ramfunc
    { -l FAPI_F28003x_EABI_v1.58.10.lib}

    } LOAD = FLASH_BANK0_SEC1,
    RUN = RAMLS03,
    LOAD_START(RamfuncsLoadStart),
    LOAD_SIZE(RamfuncsLoadSize),
    LOAD_END(RamfuncsLoadEnd),
    RUN_START(RamfuncsRunStart),
    RUN_SIZE(RamfuncsRunSize),
    RUN_END(RamfuncsRunEnd),
    ALIGN(8)

    DataBufferSection : > RAMM1, ALIGN(8)
    }
    /*
    //###########################################################################
    // End of file.
    //###########################################################################
    */

  • Hi Ezra,

    I am receiving data and writing it to the flash, but it is as if there is a desparity between my linker file and what my .txt flag file is expecting.

    Can you explain this with more detail? I don't quite understand what you mean here.

    Kind regards,

    Skyler

  • Skylar

    I have been able to bootload the micro if I upload and debug the kernal via CCS. I do not have success when uploading the kernal & firmware file via the supplied Visual Studio code.

    I am conviced that it is due to my linker file I use in the Kernal

    1. Will you please have a look at my linker file? I have attached it below.

    2. I am using the exact setup described in SPRAD51A, but the flash_kernal_ex5_dcan_flash_kernal example project does not work out of the box. I had to make a whole bunch of changes to get it working via CCS. Is the TI dev team aware that this example is not working/not sufficient?

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    /*
    //###########################################################################
    //
    // FILE: f28003x_flash_api_lnk.cmd
    //
    // TITLE: Flash API linker cmd file for f28003x device
    //
    //###########################################################################
    */
    MEMORY
    {
    BEGIN : origin = 0x00080000, length = 0x00000002
    BOOT_RSVD : origin = 0x00000002, length = 0x00000126
    RAMM0 : origin = 0x00000128, length = 0x000002D8
    RAMM1 : origin = 0x00000400, length = 0x00000380 /* on-chip RAM block M1 */
    BOOT_RSVD_SYSBIOS: origin = 0x00000780, length = 0x00000080
    /* RAMLS0 : origin = 0x00008000, length = 0x00000800
    RAMLS1 : origin = 0x00008800, length = 0x00000800
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    EDIT: After I have uploaded the Kernal without CCS, 5 seconds will expire (delay before bootloading) and the it will jump to the existing program that was loaded to flash previously.

    Regards

    Ezra

  • Ezra,

    Skyler is currently out of office and will return on Monday.

    Best,

    Alex

  • Hi Ezra,

    Is there a specific reason you're using the f28003x_flash_api_lnk.cmd file instead of the 28003x_generic_ram_lnk.cmd file included with the project by default?

    I will take a look at the example to see if I can reproduce any errors you're seeing when running it after a fresh import to CCS.

    Kind regards,

    Skyler

  • Hi Skylar, yes there is a reason:

    According to SPRUJ27C page 7, Flash_initModule() must be called. To allow that I had to define _FLASH in the Kernal's device.h.

    This in turn enabled the following function 

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    #ifdef _FLASH
    #ifndef CMDTOOL
    //
    // Copy time critical code and flash setup code to RAM. This includes the
    // following functions: InitFlash();
    //
    // The RamfuncsLoadStart, RamfuncsLoadSize, and RamfuncsRunStart symbols
    // are created by the linker. Refer to the device .cmd file.
    //
    memcpy(&RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize);
    #endif
    //
    // Call Flash Initialization to setup flash waitstates. This function must
    // reside in RAM.
    //
    Flash_initModule(FLASH0CTRL_BASE, FLASH0ECC_BASE, DEVICE_FLASH_WAITSTATES);
    #endif
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    &RamfuncsRunStart, &RamfuncsLoadStart, (size_t)&RamfuncsLoadSize has to be defined in the linker file, which f28003x_flash_api_lnk.cmd does not have included. I am not very well versed in linker files. I saw the f28003x_ram_api_lnk.cmd included the definitions of these variables - see below:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    .TI.ramfunc : LOAD = FLASH_BANK0_SEC1,
    RUN = RAMLS0,
    LOAD_START(RamfuncsLoadStart),
    LOAD_SIZE(RamfuncsLoadSize),
    LOAD_END(RamfuncsLoadEnd),
    RUN_START(RamfuncsRunStart),
    RUN_SIZE(RamfuncsRunSize),
    RUN_END(RamfuncsRunEnd),
    ALIGN(8)
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    I then kind of built my own linker file by combining the two.

    Can TI provide me with a standard .cmd file that actually works with the example?  This will help eliminate whether the issue is with me or in the linker.

    Regard

    Ezra

  • Hi Ezra,

    Try using the 28003x_generic_ram_lnk.cmd file and just manually inserting Flash_initModule() in your main function. These projects were tested with the linker file included by default (28003x_generic_ram_lnk.cmd).

    Kind regards,

    Skyler

  • Thanks Skyler.

    I have tried a clean import and did what you suggest. It does not work. I am convinced the vanilla example does not work. Have you tried a clean build with success? I am running C2000Ware_5_02_00_00. Can you confirm that this version's example is working.

    Is there something that I must change in the LED_blinky example's linker file?

  • Hi Ezra,

    You are correct, I apologize for my mistake. Please make the following changes:

    DCAN_Boot.c

    Line 64 should be 

    Fullscreen
    1
    #include "bootloader_can_timing.h"
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    bootloader_can_timing.h

    Lines 49-51 should be

    Fullscreen
    1
    2
    3
    #define CAN_CALC_BITRATE 1000000U
    #define CAN_CALC_CANCLK 20000000U
    #define CAN_CALC_BITTIME 20U
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    device.h

    Uncomment line 295 and comment out line 294

    Fullscreen
    1
    2
    //#define USE_PLL_SRC_XTAL
    #define USE_PLL_SRC_INTOSC
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Additionally, if using the Launchpad, make sure _LAUNCHXL_F280039C is in your predefined symbols.

    Make sure you change bytes 3 and 4 of your kernel .txt file to C0 7A. I've attached txt files that I used on my setup and work as expected.

    flash_kernel_ex5_dcan_flash_kernel.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ·
    AA 08 C0 7A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00
    00 00 00 00 40 00 68 98
    04 00 00 00 28 01 01 19 C3 56 FF FF 06 00
    18 00 00 00 2C 01 01 00 01 00 00 00 0F 00 1E 00 F0 FF 97 9A 00 00 C5 96
    00 00 D2 9A 00 00 00 00 00 00 16 00 00 00 2C 01 00 00 00 A8 00 00 38 01
    00 00 30 A8 00 00
    32 01 00 00 46 A8 2F 00 68 00 6F 00 6D 00 65 00 2F 00 75 00 62 00 6E 00
    75 00 73 00 65 00 72 00 2F 00 74 00 69 00 2F 00 72 00 65 00 70 00 6F 00
    73 00 2F 00 63 00 32 00 30 00 30 00 30 00 77 00 61 00 72 00 65 00 5F 00
    72 00 65 00 6C 00 65 00 61 00 73 00 65 00 2F 00 64 00 72 00 69 00 76 00
    65 00 72 00 6C 00 69 00 62 00 2F 00 66 00 32 00 38 00 30 00 30 00 33 00
    78 00 2F 00 64 00 72 00 69 00 76 00 65 00 72 00 6C 00 69 00 62 00 2F 00
    64 00 63 00 63 00 2E 00 68 00 00 00 00 00 2F 00 68 00 6F 00 6D 00 65 00
    2F 00 75 00 62 00 6E 00 75 00 73 00 65 00 72 00 2F 00 74 00 69 00 2F 00
    72 00 65 00 70 00 6F 00 73 00 2F 00 63 00 32 00 30 00 30 00 30 00 77 00
    61 00 72 00 65 00 5F 00 72 00 65 00 6C 00 65 00 61 00 73 00 65 00 2F 00
    64 00 72 00 69 00 76 00 65 00 72 00 6C 00 69 00 62 00 2F 00 66 00 32 00
    38 00 30 00 30 00 33 00 78 00 2F 00 64 00 72 00 69 00 76 00 65 00 72 00
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    6874.led_ex1_blinky.txt
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ·
    AA 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 00 00 00 02 00
    08 00 00 00 48 00 0E 2F
    2E 01 08 00 00 10 04 FE 43 7C 42 1E 48 76 7A 2E 00 52 06 60 08 8F 4E 40
    3F 02 48 76 2B 2F 48 06 48 76 8A 2E 00 52 06 60 08 8F 4E 40 40 02 48 76
    2B 2F 43 92 0F 52 06 69 08 8F 4E 40 41 02 48 76 2B 2F 42 06 00 D4 03 D5
    48 76 49 10 01 D4 03 D5 42 06 48 76 49 10 02 D4 03 D5 42 06 48 76 49 10
    01 D4 42 06 48 76 99 10 42 06 48 76 B6 10 42 06 48 76 CE 10 43 5C 42 06
    48 76 75 10 42 06 48 76 E6 10 42 06 48 76 FD 10 48 06 48 76 14 11 07 F6
    00 77 69 FF 84 FE 06 00 04 FE 44 7D 43 7C 42 1E 48 76 7A 2E 00 52 07 60
    20 FF 31 01 08 8F 00 40 48 76 2B 2F 22 76 44 27 AA 2B 03 56 43 01 A9 16
    3B 56 5A FF 03 56 43 01 A9 2D 03 9A 66 FF 5E FF A9 88 20 02 42 07 A9 8A
    C4 06 A6 89 AB CA AA CB A7 1E 20 02 42 07 A9 8A C4 C3 1A 76 84 FE 06 00
    04 FE 43 7C 42 1E 48 76 7A 2E 00 52 07 60 20 FF 01 01 08 8F 00 40 48 76
    2B 2F 43 92 0F 52 07 69 20 FF 06 01 08 8F 00 40 48 76 2B 2F 22 76 42 8A
    01 29 03 56 43 08 C4 A3 AB 18 FF F0 AA CB AB CA C4 1E 1A 76 84 FE 06 00
    04 FE 43 7C 42 1E 48 76 7A 2E 00 52 07 60 20 FF 57 01 08 8F 00 40 48 76
    2B 2F 22 76 24 02 42 07 A9 8A C4 06 A9 18 FE FF 43 AF A6 1E 24 02 42 07
    A9 8A C4 C2 1A 76 84 FE 06 00 02 FE 42 1E 48 76 7A 2E 00 52 07 60 20 FF
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    DCAN_Boot.c was including a header file driverlib which configures the DCAN bitrate at 100kbps, but the host programmer/kernel expects the bitrate to be 1Mbps. Thus, the #include directive needs to be updated and the header file needs to be updated to reflect this increase in bitrate. 

    The only changes I needed to make to the led_ex1_blinky project was to set the Launchpad flash build config.

    Kind regards,

    Skyler

  • Hi Skylar

    Thanks for the info.

    I have tried both your .txt files using the supplied bootloading .exe software file, and could not bootload successfully.

    I have also tried implementing your changes and then using your .exe software file, without success.

    I suppose the only other variable would be the dcan_flash_programmer.exe software. Are there any changes that I should implement here? I have also opened the project in visual studio. I did not notice anything wrong...

    Regards 

  • Hi Ezra,

    Interesting, I've been able to load the two text files I sent without any issue. I used the dcan_flash_programmer.exe from C2000Ware 5.03 without any modifications. Where is the device getting stuck now? In the bootROM (kernel load) or in the kernel (application load)?

    Kind regards,

    Skyler

  • Hi Skyler

    I have also just now tried C2000Ware 5.03. It gives me the same result.

    With the configuration you gave me, I do not receive any data from the software via CAN.

    Regards

    Ezra

  • Hi Ezra, 

    I will look into this in detail tomorrow and will get back to you as soon as I have an update.

    Best,

    Matt

  • Thanks Matt.

  • Hi Ezra, 

    Apologies for the delay, I'm still trying to find a solution, but I'm wondering where in the DCAN bootloader you are stuck? 

    Best,

    Matt

  • Hi Matt, I appreciate your effort.

    Here are two scenarios:

    1. When upload both the Kernal and LED_blinky.txt that Skylar supplied through the dcan_flash_programmer that TI supplies, the PCAN-USB Pro's CAN1 status LED flickers green all the way through to the end. But The micro does not jump to the new uploaded firmware. After I manualy power cycle the micro (booting from flash this time round), it seems like the led_blinky has not been uploaded.

    2. When I upload the Kernal (with the changes that Skylar suggested) through CCS, and then upload led_blinky via the dcan_flash programmer (undefining kernal upload, and changing tx to 1Mb/s), it is always stuck in read_message(). I never receive a can message. But when I change the clock back to external, and the CAN speed to 100Kb, then I do receive can messages on the Kernal, but it never ends up flashing the micro.

    Am I making sense? Let me know if I should explain it better and take a bunch of screenshots/videos.

    Regards

    Ezra

  • Hi Ezra,

    Thank you for the clarification. We were able to replicate the issue and continue to debug next week.

    Best,

    Matt

  • Hi Ezra, 

    We were able to find a potential solution.

    According to the F28003x Flash Parameters in the device datasheet, the flash sector erase time increases each cycle the flash is erased. 

    The DCAN kernel is developed to erase the flash sectors as it programs. To account for this erase delay, there is a sleep timer built in between CAN frames transmitted in the flash programmer executable. We suspect that the erase time of your device has exceeded this delay

    Can you try dcan_flash_programmer_delay_increase.exe and let us know if this resolves your issue. We've increased the sleep timer 10x in this version to isolate the issue.

    Best,

    Matt

  • Hi Matt

    This along with Skylar's changes to the Kernal sorted me out.

    I appreciate your guys's patience and assistance!

    Regards

    Ezra