add unique id for imxrt
This commit is contained in:
		| @@ -24,8 +24,8 @@ | |||||||
|  * This file is part of the TinyUSB stack. |  * This file is part of the TinyUSB stack. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #ifndef _BOARD_API_H_ | #ifndef BOARD_API_H_ | ||||||
| #define _BOARD_API_H_ | #define BOARD_API_H_ | ||||||
|  |  | ||||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||||
| extern "C" { | extern "C" { | ||||||
|   | |||||||
| @@ -40,6 +40,7 @@ | |||||||
| #include "fsl_iomuxc.h" | #include "fsl_iomuxc.h" | ||||||
| #include "fsl_clock.h" | #include "fsl_clock.h" | ||||||
| #include "fsl_lpuart.h" | #include "fsl_lpuart.h" | ||||||
|  | #include "fsl_ocotp.h" | ||||||
|  |  | ||||||
| #ifdef __GNUC__ | #ifdef __GNUC__ | ||||||
| #pragma GCC diagnostic pop | #pragma GCC diagnostic pop | ||||||
| @@ -186,6 +187,29 @@ uint32_t board_button_read(void) { | |||||||
|   return BUTTON_STATE_ACTIVE == GPIO_PinRead(BUTTON_PORT, BUTTON_PIN); |   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 board_uart_read(uint8_t* buf, int len) { | ||||||
|   int count = 0; |   int count = 0; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -44,6 +44,7 @@ function(add_board_target BOARD_TARGET) | |||||||
|     ${SDK_DIR}/drivers/igpio/fsl_gpio.c |     ${SDK_DIR}/drivers/igpio/fsl_gpio.c | ||||||
|     ${SDK_DIR}/drivers/lpspi/fsl_lpspi.c |     ${SDK_DIR}/drivers/lpspi/fsl_lpspi.c | ||||||
|     ${SDK_DIR}/drivers/lpuart/fsl_lpuart.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}/system_${MCU_VARIANT_WITH_CORE}.c | ||||||
|     ${SDK_DIR}/devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c |     ${SDK_DIR}/devices/${MCU_VARIANT}/xip/fsl_flexspi_nor_boot.c | ||||||
|     ${SDK_DIR}/devices/${MCU_VARIANT}/drivers/fsl_clock.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/igpio | ||||||
|     ${SDK_DIR}/drivers/lpspi |     ${SDK_DIR}/drivers/lpspi | ||||||
|     ${SDK_DIR}/drivers/lpuart |     ${SDK_DIR}/drivers/lpuart | ||||||
|  |     ${SDK_DIR}/drivers/ocotp | ||||||
|     ) |     ) | ||||||
|  |  | ||||||
|   update_board(${BOARD_TARGET}) |   update_board(${BOARD_TARGET}) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach