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.

How to run TivaC bootloader on ek-tm4c1294xl

Other Parts Discussed in Thread: EK-TM4C1294XL, TM4C1294NCPDT, LMFLASHPROGRAMMER

There is dk-tm4c129x/boot_emac_flash/boot_emac_flash.c example for using TivaC-bootloader github.com/.../tiva-c, 

but I am trying to get it done on EK-TM4C1294XL (Tm4c1294NCPDT) but.. cannot get it done. 

I am getting in between some warnings 

warning #10247-D: creating output section ".vtable" without a SECTIONS specification
warning #10247-D: creating output section ".cinit" without a SECTIONS specification
warning #10278-D: LOAD placement specified for section ".text:decompress:none:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_none.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization. Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:rtsv7M4_T_le_v4SPD16_eabi.lib<memcpy_t2.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization. Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:decompress:ZI:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_zero_init.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization. Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:decompress:rle24:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_rle.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization. Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_rle.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization. Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").

warning #10247-D: creating output section ".vtable" without a SECTIONS specification
warning #10247-D: creating output section ".cinit" without a SECTIONS specification
warning #10278-D: LOAD placement specified for section ".text:decompress:none:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_none.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization.  Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:rtsv7M4_T_le_v4SPD16_eabi.lib<memcpy_t2.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization.  Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:decompress:ZI:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_zero_init.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization.  Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:decompress:rle24:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_rle.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization.  Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").
warning #10278-D: LOAD placement specified for section ".text:rtsv7M4_T_le_v4SPD16_eabi.lib<copy_decompress_rle.obj>". This section contains decompression routines required for linker generated copy tables and C/C++ auto-initialization.  Must ensure that this section is copied to run address before the C/C++ boot code is executed or is placed with single allocation specifier (ex. "> MEMORY").

This is my bl_link_css.cmd

MEMORY
{
    FLASH (RX) : origin = 0x00000000, length = 0x00100000
    SRAM (RWX) : origin = 0x20000000, length = 0x00040000
}

/* Section allocation in memory */

SECTIONS
{
    GROUP
    {
        .intvecs
        .text
        .const
        .data
    } load = FLASH, run = 0x20000000, LOAD_START(init_load), RUN_START(init_run), SIZE(init_size)

    GROUP
    {
        .bss
        .stack
    } run = SRAM, RUN_START(bss_run), RUN_END(bss_end), SIZE(bss_size), RUN_END(__STACK_TOP)

}

It compiles... but I cannot get BL_HW_INIT_HOOK to work...

These are variables defined within bl_config.h

#define ENET_ENABLE_UPDATE
#define ENET_ENABLE_LEDS
#define ENET_BOOTP_SERVER       "129.168.0.100"
#define BL_HW_INIT_FN_HOOK      initUart

I am scanning network using Wireshark and I can clearly see that it makes requests, but initUart does not execure properly... 

This is my initUart

uint32_t g_ui32SysClock;
void initUart() {

	if(!g_ui32SysClock) g_ui32SysClock = SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ |
            SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
            SYSCTL_CFG_VCO_480), 120000000);

	SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
	SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);

	GPIOPinConfigure(GPIO_PA0_U0RX);
	GPIOPinConfigure(GPIO_PA1_U0TX);
	GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);

	UARTConfigSetExpClk(UART0_BASE, g_ui32SysClock, 115200,
			(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
			UART_CONFIG_PAR_NONE));

    UARTStdioConfig(0, 115200, g_ui32SysClock);
    UARTprintf("UART initalized."); }

Of course, when I am running initUart from regular project (when it is executed from regular main()) then everything works fine). 

So: when using startup_css.c and tm4c1294ncpdt.cmd it works

but when using bl_startup_css.s and bl_link_ccs.cmd it does not work

May I ask for some clues and/or help?

  • Hello Artur,

    I ma not sure what is there on github as that is not the official TI repository. When doing an EMAC based boot loader the first thing to note is that you must have a DHCP server for IP address allocation. Then the LMFlashProgrammer can use the IP address and MAC ID to download a program.

    The same can be done by reusing the dk-tm4c129x by commenting out the Graphics related code and calling the SWUpdate routine.

    Regards
    Amit