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.

TM4C1294,How can I tell if the bootstrap program(boot_emac_flash.bin) firmware package is working properly?

Other Parts Discussed in Thread: UNIFLASH

Hello,

     Our company bought it TM4C1294,How can I tell if the bootstrap program(boot_emac_flash.bin)  firmware package is working properly?

      I failed to upgrade the application remotely,I refer to your remote upgrade routine.It's normal on usuallyI don't know why?Whether it has something to do with the network?And I use UniFlash to burn in, the program is normal, but the remote upgrade accidentally abnormal.I want to know if the remote upgrade has broken the boot program, how to check?

  • Hi,

      I'm not clear with your problem description. Let me clarify a few things. The boot_emac_flash.bin is the bootloader. It will reside starting at 0x0. You can use either the CCS or Uniflash to load the code. The loading of the bootloader is done via the JTAG interface. After it starts running, it will bootload your application. The TivaWare contains an application (boot_demo_emac_flash.c) that is to be loaded at at 0x4000. Is the boot_demo_emac_flash.c (the application) that you try to load via the Ethernet interface? Can you clarify what is not working? Is it the boot_emac_flash (the bootloader) or the boot_demo_emac_flash (the application). You can use the LM flash programmer to load your application for Ethernet interface. See below example. You will need to enter your own IP address and MAC address of your device. 

    Please follow the below steps to run the example.

    1. Run enet_lwip example and record the IP address. The IP address will be displayed via the terminal window. The reason to first run this example is to simply acquire an IP address. The bootloader is meant to be very compact in size using the BOOTP protocol. However, the BOOTP is static in nature, unlike the DHCP which provides dynamic IP address to the client upon request. Normally your DHCP will lease an IP address to your client (the MCU) for a certain time frame, may be hours or a day. Right after you acquire the IP address by running the enet_lwip the IP address will still be valid for a while. This is the IP address you want to enter in the LM flash programmer. If you are using the launchpad then in the back of the board, there is a sticker that shows the MAC address. The LM flash programmer is acting as the BOOTP and TFTP server. It must have the association between the IP address and the MAC address pre-recorded in its system. Please note that you must have the correct IP address and MAC address entered in the LM flash programmer. Without them, the sever cannot accept the BOOTP request from the client. 
    2. Program the emac_boot_flash into the flash via the JTAG interface.
    3. Open the LM flash programmer and enter the IP address and MAC address from step 1 shown in the terminal widow
    4. Run the emac_boot_flash program
    5. Go to the LM flash programmer under Program tab, specify the boot_demo_emac_flash.bin and hit Program button

    Can you successfully run the example?

  • Hello,Offline 

              boot_emac_flash.bin is the bootloader . I use either the  Uniflash to load the code,It reside starting at 0x0.User applications are one of our projects,I loaded it to 0X4000 via uniflash.It's perfectly normal to get here

              but when we do the application upgrade, use the LM flash programmer to load application for Ethernet interface,accidentally, the program burned into the exception, the specific performance is the application does not work (the user LED did not flash.Network card light is not on, directly connected to the computer, the computer most of the time can not identify the network card device, a few seconds can, but the IP address is completely ping), I want to know 2 points, 1, what reason may lead to this problem (wrong network card selection?IP and MAC addresses wrong??

    2, how to know the program burned into the abnormal, boot_emac_flash.bin,Has it been broken?

    Abnormal this upgrade is not frequently, but different people upgrade may be abnormal operation, our equipment to hang in the air, can't often go to dismantling equipment, so want to know what reason is caused, our program is completely normal, abnormal equipment removed, use uniflash burn-in can return to normal.

  • Hello,Offline ,

    If the transmission distance is long, or the network environment is not good, and the LM Flash Programmer configuration is correct,Upgrades take longer,will the upgrade exception be generated?

  • Hi,

      You said you loaded the application to 0x4000 via uniflash. I think there may be a problem with this if you are not careful setting what memory region to erase the flash. 

      Look at the below screenshot.  Go to your Uniflash under "Settings & Utilities".  By default, the Uniflash will erase the entire flash before programming new data. The first time you load the boot_emac_flash.bin, it will first erase the flash and then program the bootloader at 0x0. This is all good. However, when you program the application, it will again erase the flash first. This means the bootloader at 0x0 got erased. In CCS, if you use the memory browser you can confirm that the 0x0 region is erased to all 0xFFFFFFFF but the application at 0x4000 is correctly programmed. 

      If you want to use the Uniflash to load your application to 0x4000 via JTAG, you need to make sure it does not erase the bootloader in the flash. There are two ways to do it. First, under the Erase Method, you can select "Necessary Pages Only". The bootloader at 0x0 is at a different page from the application starting at 0x4000. This way, it will only erase the application page and not the bootloader page. The second method is under Erase, choose "By Address range" instead of "Entire Flash". Provide the starting address (0x4000) and ending address if you know. 

      I will suggest you start with the first method to only erase the necessary pages only. This is easier.