CC2745R10-Q1: CC2745 program HSM

Part Number: CC2745R10-Q1

Tool/software:

Hi TI Engineer,

I am currently using an external SWD tool to program the CC2745. I am able to program flash, CCFG, and SCFG. Now I need to program the HSM. According to the official procedure, the .bin file (cc27xxx10_hsm_fw_v3.0.0.bin) is used for the update. However, since this .bin file is encrypted, I am not sure how to use external tools to perform the HSM update or how to parse the file.

We have considered an alternative approach using
simplelink_lowpower_f3_sdk_xx\examples\nortos\LP_EM_CC2745R10_Q1\hsm\hsmfwupdate
to generate an HSM update image and perform the update as follows:

  1. Build an HSM update project image.

  2. Program the image to flash.

  3. Power cycle and run the project to update the HSM.

  4. Erase flash.

  5. Program the application file (including flash/CCFG, etc.).

  6. Verify all programmed memory.

We would like to use the above method to update the HSM, but we are not certain if this approach is valid.

I would like to ask whether it is possible to program the HSM using this method.Or is there an alternative method to update the HSM, such as using the SACI command.

Thank you for your support.

  • Hello,

    • Build an HSM update project image.

    • Program the image to flash.

    • Power cycle and run the project to update the HSM.

    • Erase flash.

    • Program the application file (including flash/CCFG, etc.).

    • Verify all programmed memory.

    This is a valid approach. 

    However, since this .bin file is encrypted, I am not sure how to use external tools to perform the HSM update or how to parse the file.

    Yes, this binary is encrypted, but will be decrypted on the device when loaded. However, if you want to use SACI, you can use the following command flow:

    1. Power up the chip, send SACI_CMD_MISC_NO_OPERATION with a sequence number of something >  1 (It can be zero, but it may be better to start with a number > 0).
      1. Verify that the command was success by reading the response, and verify that the sequence number matches what was sent
    2. SACI_CMD_FLASH_VERIFY_MAIN_SECTORS
      1. If the flash is not blank proceed to 3.
    3. SACI_CMD_FLASH_ERASE_CHIP
    4. SACI_CMD_PROG_MAIN_PIPELINED
    5. SACI_CMD_FLASH_PROG_CCFG_SECTOR
    6. SACI_CMD_FLASH_VERIFY_CCFG_SECTOR
    7. SACI_CMD_FLASH_PROG_SCFG_SECTOR
    8. SACI_CMD_FLASH_VERIFY_SCFG_SECTOR
    9. SACI_CMD_BLDR_APP_RESET_DEVICE
      1. We must reset before provisioning the HSM FW.
    10. SACI_CMD_MISC_NO_OPERATION (repeat step 1)
      1. Verify that the command was success by reading the response, and verify that the sequence number matches what was sent
      2. If it was not successful, then SACI communication is not ready.
    11. SACI_CMD_HSM_FW_PROVISION

    Please let me know if this works for you!

    Best,

    Nima Behmanesh

  • Hi Nima,

    Thank you for your reply. I am now trying to use the SACI procedure you provided to program the HSM. I sent the data from cc27xxx10_hsm_fw_v3.0.0.bin (length 0x13640)into the CC2745 using the SACI_CMD_HSM_FW_PROVISION (HUI DATA). After execution, I received the message HSM_FW_VER_INVALID, but I do not understand what this means.

    Afterwards, I read the HSM information and obtained the version number 4.5.7. I would like to confirm with you whether my procedure is correct, and how I can resolve the HSM_FW_VER_INVALID message.

    In addition, may I ask if there is any way to verify the HSM after programming, or is checking the version number the only method?

    Best regards,

    Harry