summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2024-07-18 10:48:47 +0700
committerGitHub <[email protected]>2024-07-18 10:48:47 +0700
commitb8581b4ab758e29af2a4b36cbd3f9f3171d856e4 (patch)
tree2a25fe3c8c809d4b63bd44965c2b0c3c087113fc
parentc6339204f4d8334427eb8d34e353a1ac420a899f (diff)
parent8be0d503dab57be6af0cd8aea2df41588b40fc55 (diff)
Merge pull request #2721 from hathach/hild-add-metro-m7
HIL add metro m7
-rw-r--r--hw/bsp/board_api.h4
-rw-r--r--hw/bsp/imxrt/family.c24
-rw-r--r--hw/bsp/imxrt/family.cmake2
-rw-r--r--hw/bsp/imxrt/family.mk6
-rw-r--r--test/hil/rpi.json7
5 files changed, 39 insertions, 4 deletions
diff --git a/hw/bsp/board_api.h b/hw/bsp/board_api.h
index 774deca24..a458a3fdc 100644
--- a/hw/bsp/board_api.h
+++ b/hw/bsp/board_api.h
@@ -24,8 +24,8 @@
* This file is part of the TinyUSB stack.
*/
-#ifndef _BOARD_API_H_
-#define _BOARD_API_H_
+#ifndef BOARD_API_H_
+#define BOARD_API_H_
#ifdef __cplusplus
extern "C" {
diff --git a/hw/bsp/imxrt/family.c b/hw/bsp/imxrt/family.c
index c9c4918ef..2f305aa4d 100644
--- a/hw/bsp/imxrt/family.c
+++ b/hw/bsp/imxrt/family.c
@@ -40,6 +40,7 @@
#include "fsl_iomuxc.h"
#include "fsl_clock.h"
#include "fsl_lpuart.h"
+#include "fsl_ocotp.h"
#ifdef __GNUC__
#pragma GCC diagnostic pop
@@ -186,6 +187,29 @@ uint32_t board_button_read(void) {
return BUTTON_STATE_ACTIVE == GPIO_PinRead(BUTTON_PORT, BUTTON_PIN);
}
+size_t board_get_unique_id(uint8_t id[], size_t max_len) {
+ (void) max_len;
+
+ #if FSL_FEATURE_OCOTP_HAS_TIMING_CTRL
+ OCOTP_Init(OCOTP, CLOCK_GetFreq(kCLOCK_IpgClk));
+ #else
+ OCOTP_Init(OCOTP, 0u);
+ #endif
+
+ // Reads shadow registers 0x01 - 0x04 (Configuration and Manufacturing Info)
+ // into 8 bit wide destination, avoiding punning.
+ for (int i = 0; i < 4; ++i) {
+ uint32_t wr = OCOTP_ReadFuseShadowRegister(OCOTP, i + 1);
+ for (int j = 0; j < 4; j++) {
+ id[i*4+j] = wr & 0xff;
+ wr >>= 8;
+ }
+ }
+ OCOTP_Deinit(OCOTP);
+
+ return 16;
+}
+
int board_uart_read(uint8_t* buf, int len) {
int count = 0;
diff --git a/hw/bsp/imxrt/family.cmake b/hw/bsp/imxrt/family.cmake
index f4d7378a5..d917e9777 100644
--- a/hw/bsp/imxrt/family.cmake
+++ b/hw/bsp/imxrt/family.cmake
@@ -44,6 +44,7 @@ function(add_board_target BOARD_TARGET)
${SDK_DIR}/drivers/igpio/fsl_gpio.c
${SDK_DIR}/drivers/lpspi/fsl_lpspi.c
${SDK_DIR}/drivers/lpuart/fsl_lpuart.c
+ ${SDK_DIR}/drivers/ocotp/fsl_ocotp.c
${SDK_DIR}/devices/${MCU_VARIANT}/system_${MCU_VARIANT_WITH_CORE}.c
${SDK_DIR}/devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c
${SDK_DIR}/devices/${MCU_VARIANT}/drivers/fsl_clock.c
@@ -75,6 +76,7 @@ function(add_board_target BOARD_TARGET)
${SDK_DIR}/drivers/igpio
${SDK_DIR}/drivers/lpspi
${SDK_DIR}/drivers/lpuart
+ ${SDK_DIR}/drivers/ocotp
)
update_board(${BOARD_TARGET})
diff --git a/hw/bsp/imxrt/family.mk b/hw/bsp/imxrt/family.mk
index bde4c4ba6..f00afb6a4 100644
--- a/hw/bsp/imxrt/family.mk
+++ b/hw/bsp/imxrt/family.mk
@@ -50,7 +50,8 @@ SRC_C += \
$(SDK_DIR)/drivers/common/fsl_common.c \
$(SDK_DIR)/drivers/common/fsl_common_arm.c \
$(SDK_DIR)/drivers/igpio/fsl_gpio.c \
- $(SDK_DIR)/drivers/lpuart/fsl_lpuart.c
+ $(SDK_DIR)/drivers/lpuart/fsl_lpuart.c \
+ $(SDK_DIR)/drivers/ocotp/fsl_ocotp.c \
# Optional drivers: only available for some mcus: rt1160, rt1170
ifneq (,$(wildcard ${TOP}/${MCU_DIR}/drivers/fsl_dcdc.c))
@@ -68,7 +69,8 @@ INC += \
$(TOP)/$(MCU_DIR)/drivers \
$(TOP)/$(SDK_DIR)/drivers/common \
$(TOP)/$(SDK_DIR)/drivers/igpio \
- $(TOP)/$(SDK_DIR)/drivers/lpuart
+ $(TOP)/$(SDK_DIR)/drivers/lpuart \
+ $(TOP)/$(SDK_DIR)/drivers/ocotp \
SRC_S += $(MCU_DIR)/gcc/startup_$(MCU_VARIANT_WITH_CORE).S
diff --git a/test/hil/rpi.json b/test/hil/rpi.json
index c9a77936d..338ecae20 100644
--- a/test/hil/rpi.json
+++ b/test/hil/rpi.json
@@ -30,6 +30,13 @@
"flasher": "esptool",
"flasher_sn": "3ea619acd1cdeb11a0a0b806e93fd3f1",
"flasher_args": "-b 1500000"
+ },
+ {
+ "name": "metro_m7_1011",
+ "uid": "9CE8715DD71137363E00005002004200",
+ "flasher": "jlink",
+ "flasher_sn": "000611000000",
+ "flasher_args": "-device MIMXRT1011xxx5A"
}
]
}