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.

TM4C1294NCPDT LM Flash Programmer **ERROR** Failed to establish Communication with the board

Other Parts Discussed in Thread: LMFLASHPROGRAMMER

Hi, 

As few threads already created I have an issue with the LM flash programmer and the boot serial.

I'm working on the TM4C1294XL-Launchpad, so with the 25MHz crystal, with CCS 6.1.3 and LM Flash Programmer Build 1613.

I programmed the TM4C with the example boot_serial, I changed the adresses APP_START_ADDRESS       0x00020000 and VTABLE_START_ADDRESS    0x00020000 to match with the application I want to bootload which starts at this adress. The application is the hello using UART BTW.

I configured the LM Flash Programmer like that and took my hello.bin

When I try to program I have the following message :

 

My Board is connected on the USB debug and I have all jumpers on JP4 and JP5 and JP1 has a jumper on ICDI only. 

I think I only missed something basic, I read much threads and documentation but didn't find any solution to my issue.

1/ Did someone already meet an issue like that ?

2/ Should I put a Program Adress Offset when using the BootLoader ?

Regards,

John

  • Hello John,

    Yes, you need to program the Program Address Offset when using the Boot Loader.
  • Hello Amit,

    Thank you for your answer, I did but there is still no changement, still get the same issue.

    Regards,
    John
  • Hello John

    Did you update the start address in the linker command file to 0x20000 for hello.bin?
  • Yes, I have : #define APP_BASE 0x00020000 on my hello_css.cmd

    I just saw I have 2 warning on my serial_boot project if it can help : 

    Plus, I have no other LEDs on at any moment when Bootloader is starting except power led, I don't know if it's normal.


    Regards,
    John

  • Some news here,

    I tried to program teh bootloader with the Ethernet connection, I enabled the uses of leds but nothing happends when I plug the ethernet cable (and of course the board doesn't answer) so I guess the issue isn't coming from the UART but from the way to build project or comething like that.

    I'm using the compiler TI 5.2.8 By the way.


    Regards,
    John

  • Hello John

    The compiler version is fine. Did you first try the boot_serial with the boot_demo1 binaries as given in TivaWare 2.1.3.156
  • Yes, I tried it but after post on this thread but the result is exactly the same unfortunately. 

    EDIT : I reseted computer and card, and this example is working now.

    Plus I now found the issue here. I don't know why but the adress doesn't match with 0x20000 for starting application. If  put all at 4000 it's working.

    Thank you for your answers and your time.


    Regards,
    John

  • Hello John,

    I tried the same on my side and it works as expected.

    1. Program the boot_serial.bin on a launchpad which is erased. Except for the COM Port number specific to your PC setup, all others should be identical as below.

    2. Now Program the boot_demo1.bin as shown in the image below

  • HI Amit,

    Thank you it's working with 0x4000 start adress, but with 0x20000 it's not, it was the issue here for the UART Bootloader.

    I'm now trying to load the ethernet bootloader but it's not seems start correctly so I can't load anything from the LF Flash Programmer.

    To do that I commented (in bl_config.h) the lines about UART and uncommented the following lines :

    #define ENET_ENABLE_UPDATE
    
    #define ENET_ENABLE_LEDS
    
    #define ENET_MAC_ADDR0          0x00
    
    #define ENET_MAC_ADDR1          0x1A
    
    #define ENET_MAC_ADDR2          0xB6
    
    #define ENET_MAC_ADDR3          0x02
    
    #define ENET_MAC_ADDR4          0xA9
    
    #define ENET_MAC_ADDR5          0x41
    
    #define ENET_BOOTP_SERVER       "stellaris"

    Plus in bl_emac.c I got 2 missing errors so I had theses lines :

    #define ROM_SysCtlClockFreqSet                                                
            ((uint32_t (*)(uint32_t ui32Config,                                   
                           uint32_t ui32SysClock))ROM_SYSCTLTABLE[48])
    
    #define ROM_GPIOPadConfigSet                                                  
            ((void (*)(uint32_t ui32Port,                                         
                       uint8_t ui8Pins,                                           
                       uint32_t ui32Strength,                                     
                       uint32_t ui32PadType))ROM_GPIOTABLE[5])

    But It's not working, I plugged the Ethernet port on our enterprise network as (it works with the enet_lwip example) but no led are on except power.

    I tried with the IP adress got from the enet_lwip and without it but nothing is working because it seems the BL isn't starting. I'm using this configuration :

    Did i forget to add something into the project ?

    Thank you about your time Amit, it's realy helpfull.

    Let me know if you prefer I create a new thread for that.

    Best regards,

    John

  • Hello John

    Do you want to resolve the UART bootloader first or the Etherent boot loader?
  • Hi Amit,

    I'm sorry if I was not clear, the UART bootloader is solved now. When I take the adress 0x4000 it's working. So now I'm trying hardly to make the Ethernet bootloader works but it seems I'm missing something on the project to make it works.

    Regards,
    John
  • Hello John

    Are the board and the PC on the same switch?
  • Hello Amit,

    Yes they are, and the network was working very well with the enet_lwip example so I guess the network will not be the cause of this issue.

    Regards,
    John
  • Hello John,

    I checked my project base and I see the following as the only options.

    #define ENET_ENABLE_UPDATE

    //*****************************************************************************
    //
    // Enables the use of the Ethernet status LED outputs to indicate traffic and
    // connection status.
    //
    // Depends on: ENET_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: None
    //
    //*****************************************************************************
    //#define ENET_ENABLE_LEDS

    //*****************************************************************************
    //
    // Specifies the hard coded MAC address for the Ethernet interface. There are
    // six individual values (ENET_MAC_ADDR0 through ENET_MAC_ADDR5) that provide
    // the six bytes of the MAC address, where ENET_MAC_ADDR0 though ENET_MAC_ADDR2
    // provide the organizationally unique identifier (OUI) and ENET_MAC_ADDR3
    // through ENET_MAC_ADDR5 provide the extension identifier. If these values
    // are not provided, the MAC address will be extracted from the user registers.
    //
    // Depends on: ENET_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: None
    //
    //*****************************************************************************
    //#define ENET_MAC_ADDR0 0x00
    //#define ENET_MAC_ADDR1 0x00
    //#define ENET_MAC_ADDR2 0x00
    //#define ENET_MAC_ADDR3 0x00
    //#define ENET_MAC_ADDR4 0x00
    //#define ENET_MAC_ADDR5 0x00

    //*****************************************************************************
    //
    // Specifies the name of the BOOTP server from which to request information.
    // The use of this specifier allows a board-specific BOOTP server to co-exist
    // on a network with the DHCP server that may be part of the network
    // infrastructure. The BOOTP server provided by Texas Instruments requires
    // that this be set to "stellaris".
    //
    // Depends on: ENET_ENABLE_UPDATE
    // Exclusive of: None
    // Requires: None
    //
    //*****************************************************************************
    #define ENET_BOOTP_SERVER "tiva"
  • Hello Amit, 

    Thank you about your answer. I tried this way but it seems it's always missing this : 

    Description Resource Path Location Type
    unresolved symbol SysCtlClockFreqSet, first referenced in ./boot_loader/bl_emac.obj boot_serial C/C++ Problem

    How did you fix that ? I tied to take the clock build from the RA0 version but it's not working, I guess because we are using RA1 on this kit. How did you fix your clock please ?

    Regards,

    John

  • Correction, with the clock : 

    #define ROM_SysCtlClockFreqSet \
    ((uint32_t (*)(uint32_t ui32Config, \
    uint32_t ui32SysClock))ROM_SYSCTLTABLE[48])


    which is for RA0 version at start is working here, I worked with wireshark and it finallly worked, we have to send the program at the good time from LM flash programmer to make it works.

    Regards,
    John

  • Hello Amit,

    I just have one last question : How to jump from bootloader to application ? When i succesfully load a program on the TM4C, it reset en start again to wait a bootload, never go on application. I tried with start address at 0x4000 and 0x800, each time I changed the .cmd file of the application project but it never started.

    Have I to write something to run the application or is there something I missed ?

    Best regards,
    John
  • Hello John

    On the TM4C129x all addresses have to be multiple of 0x4000 due to the sector size. 0x800 is "NOT VALID". The Boot loader checks the application space for a valid image based on the content of 0x4000 and 0x4004. If either one of them is not as expected, it will remain on the Boot Loader.

    In other words an Application Image is required.
  • Hello Amit,

    I'm sorry I didn't see my fault, I tried the 0x8000 not 0x800. The same application image is working with the UART and with the usb_stick_update, so my issue should come from the bootloader or the network I think.

    I checked with Wireshark what is going on on my network and the TM4C is always sending a boot request at 255.255.255.255 brodacast but all of the packets are coming from 0.0.0.0. It seems I'm unable to get an IP adress with UDP protocol. I have no accès at the network. Is this issue already knew ? I saw some topics on it but no one with the new realease.

    Note : With the enet_lwip example, the step where I'm waiting an IP address is very long, arround 2 minutes.

    Regards,

    John

  • Hello John

    The IP address must be allocated in the LMFlashProgrammer as an address that is recognized by the local switch in its look up table. As an example, run the ene_lwip application and get an IP address. Use the IP address for the boot and application programming in LMFlashProgrammer.
  • Hello Amit,

    Thank you about your answer.

    I'm trying to use an ip address fixed in the program but I don't find where to do that on it. I did some tries but nothing worked. Can you help me with that please if it's not to much ask ?

    Regards,
    John
  • Hello John,

    Is the IP address recognized by the switch/router. The method described earlier has always worked for me.
  • Hello Amit,

    Yes it is, I put a computer on it with this address fixed and all worked on it, network acces etc, now I removed this computer, it should be good isn't it ?

    Regards,

    John
  • Hello John,

    What do you mean by removing the computer?
  • I mean I turned it OFF and unplugged the RJ45 wire. Now the router should have free the IP for thr TM4C, the problem is I don't know how to bypass the IP adress automatic on the bootloader example. I would like to give an IP fixed on the software.

    Regards,

    John

  • Hello John73

    Giving a Fixed or Static IP address depends on how the network is configured. Most networks are Dynamic allocation unless you set up a closed network where every switch is configured for the IP Address Lookup table.
  • Thank you about your answer.

    So in case of a network with a dynamic allocation, isn't enought to have an IP included on the IP Address Lookup table. Am I correct ?
    Our network seems to be with a dynamic allocation with an IP Address Lookup table so if we use a static IP, it should works no ?

    Regards,
    John

  • Hello John

    I will be honest in saying that I am not a networking expert. From what I have learnt working on switches and routers are that it is possible to assign or reserve IP addresses, but require a lot of network management.
  • Hello Amit,

    Thank you about your answer.

    I will figure out how to manage the network side, my question was more about the boot_serial example, I don't find where to use a static IP on it. After that I think It should be ok. But maybe the example hasn't an architecture unable to take a static IP ?

    Regards,
    John
  • Hello John,

    The examples are to get users started. We expect users to be able to understand the requirements of their application and take up the examples conversion to an application specific product.
  • Hello Amit,

    I understand and I respect that, that's exactly what I have to do at the end, I just wanted to test the limits and the possibilities of the bootloader project before that. Anyway, thank you about your help and your time, it was really helpfull, I will try to investigate deeper even if it will probably take much time.

    Best regards,

    John
  • Hello John

    I did not mean to be rude/insensitive. With every interaction we also learn and try to fan out the information.