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.

AM2432: Does is have any product unique serial number each MCU?

Part Number: AM2432

dear, TI

i want to know each serial number of Soc, but i can't find it from your document.

there are only Soc device comparison.

  

according to https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1320458/am623-does-soc-device-id-is-unique?tisearch=e2e-sitesearch&keymatch=am243%2520device%2520unique#,

Isn’t there a unique MCU serial number?
  • Hello Seungho Yu,

    The assigned MAC address will be unique, similar to a unique serial number for determining different devices.

    Will this work for your device identification requirements?

    Best Regards,

    Zackary Fleenor

  • i realise what you give me options, but it's not a my requirements. i need read-only unique serial number depending on your production system.

    according your document, it's a writeable register after release product.

    now, i find out something in register which is not recorded in your reference manul.  43002020~43002030 

    what's it?

  • Hi,

    there's also https://software-dl.ti.com/tisci/esd/latest/2_tisci_msgs/security/runtime_debug.html?highlight=uid#tisci-msg-get-soc-uid-get-soc-uid

    For all I know, this ID unique for every device, but please note that I'm not TI.

    There was an older thread regarding this topic (https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1203479/am2434-am243x-am64x-is-there-a-unique-identifier-somewhere-in-the-register-map/4545340#4545340).

    I'm not sure I fully understood your final comment in that thread. Did you come to the conclusion that the SoC UID can't be used for this purpose?

    Regards,

    Dominic

  • Hello Seungho,

    The memory space you mentioned is Reserved from a customer standpoint (hence lack of documentation). These are the DIE ID registers and are used by the TISCI Get_SoC_UID() function mentioned in Dominic's response (this is a unique ID per device). The MAC_IDx registers are read/write but will always reset to the unique default efuse value upon SoC reset.

    Dominic,

    Apologies for any confusion from the previous response. Yes, this SoC UID can be used as a unique identifier.

    Best Regards,

    Zackary Fleenor

  • thank you for your help

    i almost done

    void sciclient_get_soc_UID_main(void *args)
    {
    int32_t retVal = SystemP_SUCCESS;

    /* Open drivers to open UART driver for console */
    // Drivers_open();
    // Board_driversOpen();

    /* Check for the SOC UID by sending a request */
    struct tisci_msg_get_soc_uid_req request;
    const Sciclient_ReqPrm_t reqPrm =
    {
    TISCI_MSG_GET_SOC_UID,
    TISCI_MSG_FLAG_AOP,
    (uint8_t *)&request,
    sizeof(request),
    SystemP_WAIT_FOREVER
    };

    struct tisci_msg_get_soc_uid_resp response;
    Sciclient_RespPrm_t respPrm =
    {
    0,
    (uint8_t *)&response,
    sizeof(response)
    };

    /* Call the SCICLIENT service to get the SOC UID */
    retVal = Sciclient_service(&reqPrm, &respPrm);
    DebugP_assert(SystemP_SUCCESS == retVal && respPrm.flags == TISCI_MSG_FLAG_ACK);
    DebugP_log("SOC UID API respPrm.flags: %" PRIu32 "\r\n", respPrm.flags);
    /* Print the received SOC UID */
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[0]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[1]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[2]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[3]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[4]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[5]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[6]);
    DebugP_log("SOC UID: %" PRIu32 "\r\n", response.soc_uid[7]);

    /* Close drivers */
    // Board_driversClose();
    // Drivers_close();
    }