SWRA466D February   2015  – August 2021 CC1310 , CC1310 , CC1352R , CC1352R , CC2538 , CC2538 , CC2620 , CC2620 , CC2630 , CC2630 , CC2640 , CC2640 , CC2640R2F , CC2640R2F , CC2640R2F-Q1 , CC2640R2F-Q1 , CC2642R , CC2642R , CC2642R-Q1 , CC2642R-Q1 , CC2650 , CC2650 , CC2650MODA , CC2650MODA , CC2652R , CC2652R , CC2652R7 , CC2652R7 , CC2652RB , CC2652RB , CC2652RSIP , CC2652RSIP

 

  1.   Trademarks
  2. 1Introduction
  3. 2ROM Bootloader
    1. 2.1 Configuring the Bootloader
      1. 2.1.1 CC2538
      2. 2.1.2 CC26x0
    2. 2.2 CC26x2
    3. 2.3 Communication Protocol
      1. 2.3.1 ACK/NACK
    4. 2.4 Interface Configuration
      1. 2.4.1 Hardware Pins
      2. 2.4.2 UART Configuration
      3. 2.4.3 Establishing Communication
      4. 2.4.4 Status Command
  4. 3Serial Bootloader Library (SBL)
    1. 3.1 SBL Return Values
    2. 3.2 SBL API
      1. 3.2.1 Device-Specific Functions
  5. 4Example Project
    1. 4.1 Hardware Setup
      1. 4.1.1 SmartRF06EB Virtual COM Port
        1. 4.1.1.1 External Serial Interface
      2. 4.1.2 LaunchPad Virtual COM Port
      3. 4.1.3 Bootloader Backdoor
    2. 4.2 Software Setup
      1. 4.2.1 Device Type
      2. 4.2.2 Baud Rate
    3. 4.3 Program Flow
      1. 4.3.1 Enumerate COM Ports
      2. 4.3.2 Create Device
      3. 4.3.3 Connect
      4. 4.3.4 Erase Flash Range
      5. 4.3.5 Write Flash Range
      6. 4.3.6 Calculate CRC32
      7. 4.3.7 Reset
  6. 5References
  7. 6Revision History

Write Flash Range

To write data to the flash memory, the SBL function writeFlashRange can be used; this function sends the CMD_DOWNLOAD command to the bootloader together with the start address and the download size in bytes. The bootloader is now prepared to receive the specified amount of data and write it to flash, starting at the specified address.

To transfer the data, the CMD_SEND_DATA command is used. A maximum of 252 bytes of data can be transferred per CMD_SEND_DATA command. If the data to be downloaded is larger than 252 bytes, the CMD_SEND_DATA command must be repeated. The SBL writeFlashRange function handles splitting data transfer into multiple CMD_SEND_DATA commands.

The status of the bootloader is read after both the CMD_DOWNLOAD command and after each CMD_SEND_DATA command by using the CMD_GET_STATUS command. This is to ensure that the start address and firmware size are valid, and that the data was successfully programmed into the flash. If the status indicates an error, the bootloader’s internal address pointer is not incremented, allowing the data to be re-transferred.

Figure 4-6 demonstrates the flash write sequence using the SBL function writeFlashRange.

GUID-1598A1FE-9F0C-48D5-9057-EDD0EF18110C-low.gifFigure 4-6 Sequence Chart for Flash Write