SPMA083 January   2022 TM4C129CNCPDT , TM4C129CNCPDT , TM4C129CNCZAD , TM4C129CNCZAD , TM4C129DNCPDT , TM4C129DNCPDT , TM4C129DNCZAD , TM4C129DNCZAD , TM4C129EKCPDT , TM4C129EKCPDT , TM4C129ENCPDT , TM4C129ENCPDT , TM4C129ENCZAD , TM4C129ENCZAD , TM4C129LNCZAD , TM4C129LNCZAD , TM4C129XKCZAD , TM4C129XKCZAD , TM4C129XNCZAD , TM4C129XNCZAD

 

  1.   Trademarks
  2. 1Implementation
    1. 1.1 Flash Boot Loader Project
      1. 1.1.1 Changes to the Example Project boot_serial
        1. 1.1.1.1 Changes to bl_config.h
        2. 1.1.1.2 New Functions Added
          1. 1.1.1.2.1 MyCheckUpdateFunc
          2. 1.1.1.2.2 MyReinitFunc
          3. 1.1.1.2.3 MyEndFunc
          4. 1.1.1.2.4 MyDecryptionFunc
    2. 1.2 Image Creation Project
    3. 1.3 Key Image Project
    4. 1.4 EK-TM4C129EXL Example Application Project
    5. 1.5 DK-TM4C129X Example Application Project
    6. 1.6 RAM-Based EEPROM Erase Project
  3. 2Example Walk Through
    1. 2.1 Build Environment
    2. 2.2 Importing the Examples into Code Composer Studio
    3. 2.3 Setting Keys and Variables
      1. 2.3.1 Keys
      2. 2.3.2 Initialization Vector
      3. 2.3.3 Application Start Address and Flash Size
        1. 2.3.3.1 APP_BASE
        2. 2.3.3.2 APP_END
        3. 2.3.3.3 RAM_BASE
    4. 2.4 Running the shared_key_image_encrypt Tool
    5. 2.5 Running the Shared Key Serial Boot Loader
      1. 2.5.1 Programming the Boot Loader
        1. 2.5.1.1 Erasing Existing Code and Keys
          1. 2.5.1.1.1 Erasing Flash and EEPROM With Code Composer Studio
          2. 2.5.1.1.2 Erasing Flash and EEPROM by Using the Unlock Procedure
        2. 2.5.1.2 Using the ROM Boot Loader to Program the Shared Key Boot Loader
      2. 2.5.2 Using the Shared Key Boot Loader to Program the Application Code
    6. 2.6 Returning to the Boot Loader
  4. 3Summary
MyCheckUpdateFunc

This routine is called at the beginning of the boot loader and determines if the boot loader should run the application code, or wait for a new image. It checks the following five conditions:

  • If the code is running on a device that does not support the AES hardware encryption, the boot loader will not execute an application program.
  • If the device does not have valid keys stored in the EEPROM, the application program will not be executed. Instead, the boot loader enters a state where it waits for an unencrypted image of the keys to be uploaded.
  • MyCheckUpdateFunc will call the user-defined function CheckGPIOPin. If this function returns true, the boot loader will not execute the application program, rather it will wait to upload a new encrypted application image. In the example boot loader program, it checks if the EK-TM4C129EXL LaunchPad SW2 button is being held low.
  • MyCheckUpdateFunc checks if a software reset occurred and if a RAM-based predetermined value is set signifying the boot loader was called by the application. If these are true, the boot loader waits to upload a new encrypted application image.
  • MyCheckUpdateFunc computes an AES-CBCMAC hash on the application code area and compares the result to the last 16 bytes of the application image. If the images match, the boot loader executes the application code. If the images do not match, it waits to upload a new encrypted application image.