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: serial programming of custom board designed using tm4c1294ncpdt

Part Number: TM4C1294NCPDT

respected sir, dear freinds

i am going to develop my own custom board using tm4c1294ncpdt . i am using uart0 for programming controller. but i dont know how to put micro controller in to programming mode using hardware. which pins should i pull up or pull down to put controller into programming mode. So if possible give me schematic or circuit diagram for programming(uart0) purpose. Also share the detail information about programming/boot loading tm4c1294ncpdt using serial uart0 and LM FLASH programmer.

thank you

  • Hi Digvijay,
    Please refer to the TivaWare boot_serial (the boot loader) and the boot_demo1.bin (the application) examples. The boot_serial must be first loaded to the flash via JTAG interface. Once it is running it will download the boot_demo1.bin via LM flash programmer. You can specify which pin to activate the bootloading.
  • digvijay khambe said:
    Also share the detail information about programming/boot loading...

    That's a "Command" is it not?     Never wise when requesting "forum" (voluntary) assistance...

    As "sharing" is deemed important - might poster  Vijay  "share" the efforts he's made - in his own behalf - lessening the demands upon "hapless/ordered"  helper crüe.

  • Hi charles
    Thanks for previous reply. I get that i can specify any pin for boot loading. But real question is how to do it??. From datasheet i can understand that i have to modify FMPREn and FMPPEn registers. But i am not able to figure out that, how to modify these registers using GPIO. So please can you shed some light on this.

    thank you.
  • Hi digvijay,

     Are you looking for the flash-based bootloader or ROM based bootloader?

     If you are looking for a flash-based bootloader for which the boot_cserial example is created for then you can use the bl_config.h to specify which pin you want to use to force firmware update. Please go through the bl_config.h file. Below is a snippet of the bl_config.h

    //*****************************************************************************
    //
    // Enables the pin-based forced update check.  When enabled, the boot loader
    // will go into update mode instead of calling the application if a pin is read
    // at a particular polarity, forcing an update operation.  In either case, the
    // application is still able to return control to the boot loader in order to
    // start an update.  For applications which need to perform more complex
    // checking than is possible using a single GPIO, a hook function may be
    // provided using BL_CHECK_UPDATE_FN_HOOK instead.
    //
    // Depends on: None
    // Exclusive of: None
    // Requires: FORCED_UPDATE_PERIPH, FORCED_UPDATE_PORT, FORCED_UPDATE_PIN,
    //           FORCED_UPDATE_POLARITY
    //
    //*****************************************************************************
    //#define ENABLE_UPDATE_CHECK
    
    //*****************************************************************************
    //
    // The GPIO module to enable in order to check for a forced update.  This will
    // be one of the SYSCTL_RCGC2_GPIOx values, where "x" is replaced with the port
    // name (such as B).  The value of "x" should match the value of "x" for
    // FORCED_UPDATE_PORT.
    //
    // Depends on: ENABLE_UPDATE_CHECK
    // Exclusive of: None
    // Requries: None
    //
    //*****************************************************************************
    //#define FORCED_UPDATE_PERIPH    SYSCTL_RCGC2_GPIOB
    
    //*****************************************************************************
    //
    // The GPIO port to check for a forced update.  This will be one of the
    // GPIO_PORTx_BASE values, where "x" is replaced with the port name (such as
    // B).  The value of "x" should match the value of "x" for
    // FORCED_UPDATE_PERIPH.
    //
    // Depends on: ENABLE_UPDATE_CHECK
    // Exclusive of: None
    // Requries: None
    //
    //*****************************************************************************
    //#define FORCED_UPDATE_PORT      GPIO_PORTB_BASE
    
    //*****************************************************************************
    //
    // The pin to check for a forced update.  This is a value between 0 and 7.
    //
    // Depends on: ENABLE_UPDATE_CHECK
    // Exclusive of: None
    // Requries: None
    //
    //*****************************************************************************
    //#define FORCED_UPDATE_PIN       4
    
    //*****************************************************************************
    //
    // The polarity of the GPIO pin that results in a forced update.  This value
    // should be 0 if the pin should be low and 1 if the pin should be high.
    //
    // Depends on: ENABLE_UPDATE_CHECK
    // Exclusive of: None
    // Requries: None
    //
    //*****************************************************************************
    //#define FORCED_UPDATE_POLARITY  0
    
    //*****************************************************************************
    //
    // This enables a weak pull-up or pull-down for the GPIO pin used in a forced
    // update.  Only one of FORCED_UPDATE_WPU or FORCED_UPDATE_WPD should be
    // defined, or neither if a weak pull-up or pull-down is not required.
    //
    // Depends on: ENABLE_UPDATE_CHECK
    // Exclusive of: None
    // Requries: None
    //
    //*****************************************************************************
    //#define FORCED_UPDATE_WPU
    //#define FORCED_UPDATE_WPD
    

  • Thank you Charles . That solved my problem.