Part Number: AM2434
- Hardware: AM243-LP www.ti.com/.../LP-AM243
- Bootloader:
sbl_ospi.release.hs_fs.tiimage(prebuilt) - SDK Version: MCU+ SDK v11.01.00.19
- Firmware: DMSC v10.0.8 (Fiery Fox), ABI rev 4.0
- VPP of AM243-LP: J22 is open - efuse voltage disconected for reading
While the Sciclient appears to initialize correctly, all calls to read the OTP MMR regions fail. The
Sciclient_otpGetMmr function returns an error, and the reported value for every MMR (0 through 11) is consistently 0x357.from Sciclient_service we get Success, but respParam.flags are not ACK.
Sharing code for reading:
#include <stdlib.h>
#include "ti_drivers_config.h"
#include "ti_board_config.h"
void ext_otp_printMmrs(void *args);
int main(void)
{
System_init();
Board_init();
ext_otp_printMmrs(NULL);
Board_deinit();
System_deinit();
return 0;
}
ECT_OTP_PRINTMMRS code
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include <kernel/dpl/HwiP.h>
#include <kernel/dpl/CacheP.h>
#include <kernel/dpl/SemaphoreP.h>
#include <kernel/dpl/ClockP.h>
#include <kernel/dpl/HeapP.h>
#include <kernel/dpl/CycleCounterP.h>
#include "ti_drivers_open_close.h"
#include "ti_board_open_close.h"
#include "ti_drivers_config.h"
#include <drivers/sciclient.h>
#include <drivers/sciclient/include/tisci/security/tisci_ext_otp.h>
int32_t ext_otp_readMmr(uint8_t mmrIdx, uint32_t *mmrVal)
{
int32_t status = SystemP_SUCCESS;
Sciclient_ReqPrm_t reqParam ;
Sciclient_RespPrm_t respParam ;
struct tisci_msg_read_otp_mmr_req request ;
struct tisci_msg_read_otp_mmr_resp response ;
request.mmr_idx = mmrIdx;
reqParam.messageType = (uint16_t) TISCI_MSG_READ_OTP_MMR;
reqParam.flags = (uint32_t) TISCI_MSG_FLAG_AOP;
reqParam.pReqPayload = (const uint8_t *) &request;
reqParam.reqPayloadSize = (uint32_t) sizeof (request);
reqParam.timeout = (uint32_t) SystemP_WAIT_FOREVER;
respParam.flags = (uint32_t) 0; /* Populated by the API */
respParam.pRespPayload = (uint8_t *) &response;
respParam.respPayloadSize = (uint32_t) sizeof (response);
status = Sciclient_service(&reqParam, &respParam);
if ( (status==SystemP_SUCCESS) && ((respParam.flags & TISCI_MSG_FLAG_ACK) == TISCI_MSG_FLAG_ACK) )
{
*mmrVal = response.mmr_val;
DebugP_log("Success Reading OTP MMR \r\n");
DebugP_log("OTP MMR Value reported :0x%x \r\n", (uint32_t) *mmrVal);
}
else
{
DebugP_log("Error Reading OTP MMR ... \r\n");
status = SystemP_FAILURE;
}
return status;
}
void ext_otp_printMmrs(void *args)
{
/* Open drivers to open the UART driver for console */
Drivers_open();
Board_driversOpen();
int32_t status = SystemP_SUCCESS;
uint32_t mmrVal, i;
for (i=0; i<12; i++)
{
status = ext_otp_readMmr(i, &mmrVal);
DebugP_log("OTP MMR %d: 0x%x \r\n", i, mmrVal);
//DebugP_log("Error reading MMR %d \r\n", i);
}
#if defined(AMP_FREERTOS_A53)
DebugP_log("All tests have passed on a53_core%d!!\r\n", Armv8_getCoreId());
#else
DebugP_log("All tests have passed!!\r\n");
#endif
Board_driversClose();
Drivers_close();
}
DMSC Firmware Version 10.0.8--v10.00.08 (Fiery Fox)
DMSC Firmware revision 0xa
DMSC ABI revision 4.0
KPI_DATA: [BOOTLOADER_PROFILE] Boot Media : NOR SPI FLASH
KPI_DATA: [BOOTLOADER_PROFILE] Boot Media Clock : 100.000 MHz
KPI_DATA: [BOOTLOADER_PROFILE] Boot Image Size : 86 KB
KPI_DATA: [BOOTLOADER_PROFILE] Cores present :
r5f0-0
KPI_DATA: [BOOTLOADER PROFILE] SYSFW init : 11098us
KPI_DATA: [BOOTLOADER PROFILE] System_init : 11336us
KPI_DATA: [BOOTLOADER PROFILE] Drivers_open : 1637us
KPI_DATA: [BOOTLOADER PROFILE] Board_driversOpen : 478934us
KPI_DATA: [BOOTLOADER PROFILE] Sciclient Get Version : 9852us
KPI_DATA: [BOOTLOADER PROFILE] CPU load : 16209us
KPI_DATA: [BOOTLOADER PROFILE] SBL End : 2us
KPI_DATA: [BOOTLOADER_PROFILE] SBL Total Time Taken : 529072us
Image loading done, switching to application ...
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 0: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 1: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 2: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 3: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 4: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 5: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 6: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 7: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 8: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 9: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 10: 0x357
Error Reading OTP MMR ...
OTP MMR Value reported :0x357
OTP MMR 11: 0x357
- Does the HS-FS variant of the AM2434 require specific TISCI host permissions or firewall configurations to access Extended OTP that are not covered in the default SDK example?
- What does the reported value/error code 0x357 signify in the context of the TISCI response?
- Is there a known compatibility issue between DMSC Firmware v10.0.8 and the
TISCI_MSG_GET_OTP_MMRmessage for this SoC?
Thank you, Matej.