From b85a181474c32f0f10032e7d3f4d6a3b81c100dc Mon Sep 17 00:00:00 2001 From: iabdalkader Date: Tue, 7 Mar 2023 17:47:25 +0100 Subject: [PATCH] boards/all: Add a bytes offset config option for multi-word UIDs. --- .../boards/ARDUINO_NANO_RP2040_CONNECT/omv_boardconfig.h | 6 ++++-- src/omv/boards/NANO33/omv_boardconfig.h | 5 +++-- src/omv/boards/NICLAV/omv_boardconfig.h | 6 ++++-- src/omv/boards/OPENMV2/omv_boardconfig.h | 5 +++-- src/omv/boards/OPENMV3/omv_boardconfig.h | 5 +++-- src/omv/boards/OPENMV4/omv_boardconfig.h | 5 +++-- src/omv/boards/OPENMV4P/omv_boardconfig.h | 5 +++-- src/omv/boards/OPENMV4_PRO/omv_boardconfig.h | 5 +++-- src/omv/boards/OPENMVPT/omv_boardconfig.h | 5 +++-- src/omv/boards/PICO/omv_boardconfig.h | 5 +++-- src/omv/boards/PORTENTA/omv_boardconfig.h | 5 +++-- src/omv/common/usbdbg.c | 9 +++++---- 12 files changed, 40 insertions(+), 26 deletions(-) diff --git a/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/omv_boardconfig.h b/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/omv_boardconfig.h index 06b110d64..24b64d089 100644 --- a/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/omv_boardconfig.h +++ b/src/omv/boards/ARDUINO_NANO_RP2040_CONNECT/omv_boardconfig.h @@ -16,9 +16,11 @@ #define OMV_BOARD_TYPE "PICO" #ifndef LINKER_SCRIPT -extern unsigned char *OMV_UNIQUE_ID_ADDR; +extern unsigned char *OMV_UNIQUE_ID_ADDR; // Unique address. #endif -#define OMV_UNIQUE_ID_SIZE 2 // 2 words +#define OMV_UNIQUE_ID_SIZE 2 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. + #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/boards/NANO33/omv_boardconfig.h b/src/omv/boards/NANO33/omv_boardconfig.h index d2fb9741f..489c867ef 100644 --- a/src/omv/boards/NANO33/omv_boardconfig.h +++ b/src/omv/boards/NANO33/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "NANO33 M4" // 33 chars max #define OMV_BOARD_TYPE "NANO33" -#define OMV_UNIQUE_ID_ADDR 0x10000060 -#define OMV_UNIQUE_ID_SIZE 2 // 2 words +#define OMV_UNIQUE_ID_ADDR 0x10000060 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 2 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/boards/NICLAV/omv_boardconfig.h b/src/omv/boards/NICLAV/omv_boardconfig.h index feb0946df..bfab91874 100644 --- a/src/omv/boards/NICLAV/omv_boardconfig.h +++ b/src/omv/boards/NICLAV/omv_boardconfig.h @@ -14,8 +14,10 @@ // Architecture info #define OMV_ARCH_STR "NICLAV H7 1024" // 33 chars max #define OMV_BOARD_TYPE "NICLAV" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. + #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/boards/OPENMV2/omv_boardconfig.h b/src/omv/boards/OPENMV2/omv_boardconfig.h index 2ce779388..2ad6c6273 100644 --- a/src/omv/boards/OPENMV2/omv_boardconfig.h +++ b/src/omv/boards/OPENMV2/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OMV2 F4 256 JPEG" // 33 chars max #define OMV_BOARD_TYPE "M4" -#define OMV_UNIQUE_ID_ADDR 0x1FFF7A10 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FFF7A10 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. // Needed by the SWD JTAG testrig - located at the bottom of the frame buffer stack. #define OMV_SELF_TEST_SWD_ADDR MAIN_FB()->pixfmt diff --git a/src/omv/boards/OPENMV3/omv_boardconfig.h b/src/omv/boards/OPENMV3/omv_boardconfig.h index 73df6ffd5..fe65daacc 100644 --- a/src/omv/boards/OPENMV3/omv_boardconfig.h +++ b/src/omv/boards/OPENMV3/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OMV3 F7 512" // 33 chars max #define OMV_BOARD_TYPE "M7" -#define OMV_UNIQUE_ID_ADDR 0x1FF0F420 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF0F420 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. // Needed by the SWD JTAG testrig - located at the bottom of the frame buffer stack. #define OMV_SELF_TEST_SWD_ADDR MAIN_FB()->pixfmt diff --git a/src/omv/boards/OPENMV4/omv_boardconfig.h b/src/omv/boards/OPENMV4/omv_boardconfig.h index 097e23b98..f9fdee4f8 100644 --- a/src/omv/boards/OPENMV4/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OMV4 H7 1024" // 33 chars max #define OMV_BOARD_TYPE "H7" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. // Needed by the SWD JTAG testrig - located at the bottom of the frame buffer stack. #define OMV_SELF_TEST_SWD_ADDR MAIN_FB()->pixfmt diff --git a/src/omv/boards/OPENMV4P/omv_boardconfig.h b/src/omv/boards/OPENMV4P/omv_boardconfig.h index 9ee21cfcc..b7da69b8c 100644 --- a/src/omv/boards/OPENMV4P/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4P/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OMV4P H7 32768 SDRAM" // 33 chars max #define OMV_BOARD_TYPE "H7" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. // Needed by the SWD JTAG testrig - located at the bottom of the frame buffer overlay stack. #define OMV_SELF_TEST_SWD_ADDR *((uint32_t *) 0x24000018) diff --git a/src/omv/boards/OPENMV4_PRO/omv_boardconfig.h b/src/omv/boards/OPENMV4_PRO/omv_boardconfig.h index a065faa56..22d0773ad 100644 --- a/src/omv/boards/OPENMV4_PRO/omv_boardconfig.h +++ b/src/omv/boards/OPENMV4_PRO/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OMV4 H7 PRO 32768 SDRAM" // 33 chars max #define OMV_BOARD_TYPE "H7" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. // Needed by the SWD JTAG testrig - located at the bottom of the frame buffer overlay stack. #define OMV_SELF_TEST_SWD_ADDR *((uint32_t *) 0x24000018) diff --git a/src/omv/boards/OPENMVPT/omv_boardconfig.h b/src/omv/boards/OPENMVPT/omv_boardconfig.h index d354f91ec..6fc43e991 100644 --- a/src/omv/boards/OPENMVPT/omv_boardconfig.h +++ b/src/omv/boards/OPENMVPT/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "OPENMVPT 65536 SDRAM" // 33 chars max #define OMV_BOARD_TYPE "H7" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/boards/PICO/omv_boardconfig.h b/src/omv/boards/PICO/omv_boardconfig.h index 90b40e837..7ccc30572 100644 --- a/src/omv/boards/PICO/omv_boardconfig.h +++ b/src/omv/boards/PICO/omv_boardconfig.h @@ -16,9 +16,10 @@ #define OMV_BOARD_TYPE "PICO" #ifndef LINKER_SCRIPT -extern unsigned char *OMV_UNIQUE_ID_ADDR; +extern unsigned char *OMV_UNIQUE_ID_ADDR; // Unique ID address. #endif -#define OMV_UNIQUE_ID_SIZE 2 // 2 words +#define OMV_UNIQUE_ID_SIZE 2 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/boards/PORTENTA/omv_boardconfig.h b/src/omv/boards/PORTENTA/omv_boardconfig.h index 41ca2ac6f..98ff24dd7 100644 --- a/src/omv/boards/PORTENTA/omv_boardconfig.h +++ b/src/omv/boards/PORTENTA/omv_boardconfig.h @@ -14,8 +14,9 @@ // Architecture info #define OMV_ARCH_STR "PORTENTA H7 8192 SDRAM" // 33 chars max #define OMV_BOARD_TYPE "H7" -#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 -#define OMV_UNIQUE_ID_SIZE 3 // 3 words +#define OMV_UNIQUE_ID_ADDR 0x1FF1E800 // Unique ID address. +#define OMV_UNIQUE_ID_SIZE 3 // Unique ID size in words. +#define OMV_UNIQUE_ID_OFFSET 4 // Bytes offset for multi-word UIDs. #define OMV_XCLK_MCO (0U) #define OMV_XCLK_TIM (1U) diff --git a/src/omv/common/usbdbg.c b/src/omv/common/usbdbg.c index ff9346104..7ff3f9512 100644 --- a/src/omv/common/usbdbg.c +++ b/src/omv/common/usbdbg.c @@ -58,7 +58,8 @@ void usbdbg_init() void usbdbg_wait_for_command(uint32_t timeout) { - for (mp_uint_t ticks = mp_hal_ticks_ms(); irq_enabled && ((mp_hal_ticks_ms() - ticks) < timeout) && (cmd != USBDBG_NONE); ); + for (mp_uint_t ticks = mp_hal_ticks_ms(); + irq_enabled && ((mp_hal_ticks_ms() - ticks) < timeout) && (cmd != USBDBG_NONE); ); } bool usbdbg_script_ready() @@ -167,10 +168,10 @@ void usbdbg_data_in(void *buffer, int length) #if (OMV_UNIQUE_ID_SIZE == 2) 0U, #else - *((unsigned int *) (OMV_UNIQUE_ID_ADDR + 8)), + *((unsigned int *) (OMV_UNIQUE_ID_ADDR + OMV_UNIQUE_ID_OFFSET * 2)), #endif - *((unsigned int *) (OMV_UNIQUE_ID_ADDR + 4)), - *((unsigned int *) (OMV_UNIQUE_ID_ADDR + 0)), + *((unsigned int *) (OMV_UNIQUE_ID_ADDR + OMV_UNIQUE_ID_OFFSET * 1)), + *((unsigned int *) (OMV_UNIQUE_ID_ADDR + OMV_UNIQUE_ID_OFFSET * 0)), }; snprintf((char *) buffer, 64, "%s [%s:%08X%08X%08X]", OMV_ARCH_STR, OMV_BOARD_TYPE, uid[0], uid[1], uid[2]);