summaryrefslogtreecommitdiff
path: root/hw/bsp/max78002
diff options
context:
space:
mode:
authorhathach <[email protected]>2025-07-02 18:18:52 +0700
committerhathach <[email protected]>2025-07-02 18:18:52 +0700
commitcf3966efd9fc552d641ea1e76e5aaad3ace3afd2 (patch)
treed59add439dcbfcd6e2cd9fec9aaecc413e5b5509 /hw/bsp/max78002
parentf10467e711017fb05a6e0ee496e451e2e8834549 (diff)
parent963971c6aa14411f0cc6f0c4f727d199c738e2a5 (diff)
Merge branch 'master' into fork/HiFiPhile/dcd_notif
Diffstat (limited to 'hw/bsp/max78002')
-rw-r--r--hw/bsp/max78002/FreeRTOSConfig/FreeRTOSConfig.h149
-rw-r--r--hw/bsp/max78002/README.md28
-rw-r--r--hw/bsp/max78002/boards/max78002evkit/board.cmake1
-rw-r--r--hw/bsp/max78002/boards/max78002evkit/board.h58
-rw-r--r--hw/bsp/max78002/boards/max78002evkit/board.mk1
-rw-r--r--hw/bsp/max78002/family.c169
-rw-r--r--hw/bsp/max78002/family.cmake166
-rw-r--r--hw/bsp/max78002/family.mk99
-rw-r--r--hw/bsp/max78002/max78002.ld182
9 files changed, 0 insertions, 853 deletions
diff --git a/hw/bsp/max78002/FreeRTOSConfig/FreeRTOSConfig.h b/hw/bsp/max78002/FreeRTOSConfig/FreeRTOSConfig.h
deleted file mode 100644
index e5a76af85..000000000
--- a/hw/bsp/max78002/FreeRTOSConfig/FreeRTOSConfig.h
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * FreeRTOS Kernel V10.0.0
- * Copyright (C) 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software. If you wish to use our Amazon
- * FreeRTOS name, please do so in a fair use way that does not cause confusion.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
- * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
- * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
- * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- * http://www.FreeRTOS.org
- * http://aws.amazon.com/freertos
- *
- * 1 tab == 4 spaces!
- */
-
-
-#ifndef FREERTOS_CONFIG_H
-#define FREERTOS_CONFIG_H
-
-/*-----------------------------------------------------------
- * Application specific definitions.
- *
- * These definitions should be adjusted for your particular hardware and
- * application requirements.
- *
- * THESE PARAMETERS ARE DESCRIBED WITHIN THE 'CONFIGURATION' SECTION OF THE
- * FreeRTOS API DOCUMENTATION AVAILABLE ON THE FreeRTOS.org WEB SITE.
- *
- * See http://www.freertos.org/a00110.html.
- *----------------------------------------------------------*/
-
-// skip if included from IAR assembler
-#ifndef __IASMARM__
- #include "mxc_device.h"
-#endif
-
-/* Cortex M23/M33 port configuration. */
-#define configENABLE_MPU 0
-#define configENABLE_FPU 1
-#define configENABLE_TRUSTZONE 0
-#define configMINIMAL_SECURE_STACK_SIZE (1024)
-
-#define configUSE_PREEMPTION 1
-#define configUSE_PORT_OPTIMISED_TASK_SELECTION 0
-#define configCPU_CLOCK_HZ SystemCoreClock
-#define configTICK_RATE_HZ ( 1000 )
-#define configMAX_PRIORITIES ( 5 )
-#define configMINIMAL_STACK_SIZE ( 128 )
-#define configTOTAL_HEAP_SIZE ( configSUPPORT_DYNAMIC_ALLOCATION*4*1024 )
-#define configMAX_TASK_NAME_LEN 16
-#define configUSE_16_BIT_TICKS 0
-#define configIDLE_SHOULD_YIELD 1
-#define configUSE_MUTEXES 1
-#define configUSE_RECURSIVE_MUTEXES 1
-#define configUSE_COUNTING_SEMAPHORES 1
-#define configQUEUE_REGISTRY_SIZE 4
-#define configUSE_QUEUE_SETS 0
-#define configUSE_TIME_SLICING 0
-#define configUSE_NEWLIB_REENTRANT 0
-#define configENABLE_BACKWARD_COMPATIBILITY 1
-#define configSTACK_ALLOCATION_FROM_SEPARATE_HEAP 0
-
-#define configSUPPORT_STATIC_ALLOCATION 1
-#define configSUPPORT_DYNAMIC_ALLOCATION 0
-
-/* Hook function related definitions. */
-#define configUSE_IDLE_HOOK 0
-#define configUSE_TICK_HOOK 0
-#define configUSE_MALLOC_FAILED_HOOK 0 // cause nested extern warning
-#define configCHECK_FOR_STACK_OVERFLOW 2
-#define configCHECK_HANDLER_INSTALLATION 0
-
-/* Run time and task stats gathering related definitions. */
-#define configGENERATE_RUN_TIME_STATS 0
-#define configRECORD_STACK_HIGH_ADDRESS 1
-#define configUSE_TRACE_FACILITY 1 // legacy trace
-#define configUSE_STATS_FORMATTING_FUNCTIONS 0
-
-/* Co-routine definitions. */
-#define configUSE_CO_ROUTINES 0
-#define configMAX_CO_ROUTINE_PRIORITIES 2
-
-/* Software timer related definitions. */
-#define configUSE_TIMERS 1
-#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES-2)
-#define configTIMER_QUEUE_LENGTH 32
-#define configTIMER_TASK_STACK_DEPTH configMINIMAL_STACK_SIZE
-
-/* Optional functions - most linkers will remove unused functions anyway. */
-#define INCLUDE_vTaskPrioritySet 0
-#define INCLUDE_uxTaskPriorityGet 0
-#define INCLUDE_vTaskDelete 0
-#define INCLUDE_vTaskSuspend 1 // required for queue, semaphore, mutex to be blocked indefinitely with portMAX_DELAY
-#define INCLUDE_xResumeFromISR 0
-#define INCLUDE_vTaskDelayUntil 1
-#define INCLUDE_vTaskDelay 1
-#define INCLUDE_xTaskGetSchedulerState 0
-#define INCLUDE_xTaskGetCurrentTaskHandle 1
-#define INCLUDE_uxTaskGetStackHighWaterMark 0
-#define INCLUDE_xTaskGetIdleTaskHandle 0
-#define INCLUDE_xTimerGetTimerDaemonTaskHandle 0
-#define INCLUDE_pcTaskGetTaskName 0
-#define INCLUDE_eTaskGetState 0
-#define INCLUDE_xEventGroupSetBitFromISR 0
-#define INCLUDE_xTimerPendFunctionCall 0
-
-/* FreeRTOS hooks to NVIC vectors */
-#define xPortPendSVHandler PendSV_Handler
-#define xPortSysTickHandler SysTick_Handler
-#define vPortSVCHandler SVC_Handler
-
-//--------------------------------------------------------------------+
-// Interrupt nesting behavior configuration.
-//--------------------------------------------------------------------+
-
-// For Cortex-M specific: __NVIC_PRIO_BITS is defined in mcu header
-#define configPRIO_BITS __NVIC_PRIO_BITS
-
-/* The lowest interrupt priority that can be used in a call to a "set priority" function. */
-#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY ((1<<configPRIO_BITS) - 1)
-
-/* The highest interrupt priority that can be used by any interrupt service
-routine that makes calls to interrupt safe FreeRTOS API functions. DO NOT CALL
-INTERRUPT SAFE FREERTOS API FUNCTIONS FROM ANY INTERRUPT THAT HAS A HIGHER
-PRIORITY THAN THIS! (higher priorities are lower numeric values. */
-#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 2
-
-/* Interrupt priorities used by the kernel port layer itself. These are generic
-to all Cortex-M ports, and do not rely on any particular library functions. */
-#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
-
-/* !!!! configMAX_SYSCALL_INTERRUPT_PRIORITY must not be set to zero !!!!
-See http://www.FreeRTOS.org/RTOS-Cortex-M3-M4.html. */
-#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
-
-#endif
diff --git a/hw/bsp/max78002/README.md b/hw/bsp/max78002/README.md
deleted file mode 100644
index 4fb1bede4..000000000
--- a/hw/bsp/max78002/README.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Analog Devices MAX78002
-
-This BSP is for working with the Analog Devices
-[MAX78002](https://www.analog.com/en/products/max78002.html) AI microcontroller.
-The following boards are supported:
- * [MAX78002EVKIT](https://www.analog.com/en/resources/evaluation-hardware-and-software/evaluation-boards-kits/max78002evkit.html)
-
-This part family leverages the Maxim Microcontrollers SDK (MSDK) for the device
-interfaces and hardware abstraction layers. This source code package is fetched
-as part of the get-deps script.
-
-The microcontroller utilizes the standard GNU ARM toolchain. If this toolchain
-is not already available on your build machine, it can be installed by using the
-bundled MSDK installation. Details on downloading and installing can be found
-in the [User's Guide](https://analogdevicesinc.github.io/msdk//USERGUIDE/).
-
-## Flashing
-
-The default flashing behavior in this BSP is to utilize JLink. This can be done
-by running the `flash` or `flash-jlink` rule for Makefiles, or the
-`<target>-jlink` target for CMake.
-
-The Evaluation Kit is shipped with a CMSIS-DAP compatible debug probe. However,
-at the time of writing, the necessary flashing algorithms for OpenOCD have not
-yet been incorporated into the OpenOCD master branch. To utilize the provided
-debug probes, please install the bundled MSDK package which includes the
-appropriate OpenOCD modifications. To leverage this OpenOCD instance, run the
-`flash-msdk` Makefile rule, or `<target>-msdk` CMake target.
diff --git a/hw/bsp/max78002/boards/max78002evkit/board.cmake b/hw/bsp/max78002/boards/max78002evkit/board.cmake
deleted file mode 100644
index 9dc6962eb..000000000
--- a/hw/bsp/max78002/boards/max78002evkit/board.cmake
+++ /dev/null
@@ -1 +0,0 @@
-# Nothing to be done at the board level
diff --git a/hw/bsp/max78002/boards/max78002evkit/board.h b/hw/bsp/max78002/boards/max78002evkit/board.h
deleted file mode 100644
index f8102c394..000000000
--- a/hw/bsp/max78002/boards/max78002evkit/board.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2024, Brent Kowal (Analog Devices, Inc)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#ifndef BOARD_H_
-#define BOARD_H_
-
-#include "gpio.h"
-#include "mxc_sys.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// LED
-#define LED_PORT MXC_GPIO2
-#define LED_PIN MXC_GPIO_PIN_4
-#define LED_VDDIO MXC_GPIO_VSSEL_VDDIOH
-#define LED_STATE_ON 1
-
-// Button
-#define BUTTON_PORT MXC_GPIO2
-#define BUTTON_PIN MXC_GPIO_PIN_6
-#define BUTTON_PULL MXC_GPIO_PAD_PULL_UP
-#define BUTTON_STATE_ACTIVE 0
-
-// UART Enable for EvKit's Integrated FTDI Adapter. Pin Mux handled by the HAL
-#define UART_NUM 0
-#define UART_PORT MXC_GPIO0
-#define UART_VDDIO_BITS 0xF
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* BOARD_H_ */
diff --git a/hw/bsp/max78002/boards/max78002evkit/board.mk b/hw/bsp/max78002/boards/max78002evkit/board.mk
deleted file mode 100644
index a813a5327..000000000
--- a/hw/bsp/max78002/boards/max78002evkit/board.mk
+++ /dev/null
@@ -1 +0,0 @@
-# No specific build requirements for the board.
diff --git a/hw/bsp/max78002/family.c b/hw/bsp/max78002/family.c
deleted file mode 100644
index 8d51f141c..000000000
--- a/hw/bsp/max78002/family.c
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * The MIT License (MIT)
- *
- * Copyright (c) 2024 Brent Kowal (Analog Devices, Inc)
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- * THE SOFTWARE.
- *
- * This file is part of the TinyUSB stack.
- */
-
-#ifdef __GNUC__
-#pragma GCC diagnostic push
-#pragma GCC diagnostic ignored "-Wstrict-prototypes" // _mxc_crit_get_state()
-#endif
-
-#include "gpio.h"
-#include "mxc_sys.h"
-#include "mcr_regs.h"
-#include "mxc_device.h"
-#include "uart.h"
-
-#ifdef __GNUC__
-#pragma GCC diagnostic pop
-#endif
-
-#include "board.h"
-#include "bsp/board_api.h"
-
-//--------------------------------------------------------------------+
-// Forward USB interrupt events to TinyUSB IRQ Handler
-//--------------------------------------------------------------------+
-void USB_IRQHandler(void) {
- tud_int_handler(0);
-}
-
-//--------------------------------------------------------------------+
-// MACRO TYPEDEF CONSTANT ENUM
-//--------------------------------------------------------------------+
-mxc_uart_regs_t *ConsoleUart = MXC_UART_GET_UART(UART_NUM);
-
-void board_init(void) {
-#if CFG_TUSB_OS == OPT_OS_NONE
- // 1ms tick timer
- SysTick_Config(SystemCoreClock / 1000);
-#elif CFG_TUSB_OS == OPT_OS_FREERTOS
- // If freeRTOS is used, IRQ priority is limit by max syscall ( smaller is higher )
- NVIC_SetPriority(USB_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY);
-#endif
- mxc_gpio_cfg_t gpioConfig;
-
- // LED
- gpioConfig.drvstr = MXC_GPIO_DRVSTR_0;
- gpioConfig.func = MXC_GPIO_FUNC_OUT;
- gpioConfig.mask = LED_PIN;
- gpioConfig.pad = MXC_GPIO_PAD_NONE;
- gpioConfig.port = LED_PORT;
- gpioConfig.vssel = LED_VDDIO;
- MXC_GPIO_Config(&gpioConfig);
- board_led_write(false);
-
- // Button
- gpioConfig.drvstr = MXC_GPIO_DRVSTR_0;
- gpioConfig.func = MXC_GPIO_FUNC_IN;
- gpioConfig.mask = BUTTON_PIN;
- gpioConfig.pad = BUTTON_PULL;
- gpioConfig.port = BUTTON_PORT;
- gpioConfig.vssel = MXC_GPIO_VSSEL_VDDIO;
- MXC_GPIO_Config(&gpioConfig);
-
- // UART
- MXC_UART_Init(ConsoleUart, CFG_BOARD_UART_BAUDRATE, MXC_UART_IBRO_CLK);
- UART_PORT->vssel |= UART_VDDIO_BITS; //Set necessary bits to 3.3V
-
- //USB
- MXC_MCR->ldoctrl |= MXC_F_MCR_LDOCTRL_0P9EN;
- MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_USB);
-}
-
-//--------------------------------------------------------------------+
-// Board porting API
-//--------------------------------------------------------------------+
-
-void board_led_write(bool state) {
-#if LED_STATE_ON
- state = !state;
-#endif
- if (state) {
- MXC_GPIO_OutClr(LED_PORT, LED_PIN);
- } else {
- MXC_GPIO_OutSet(LED_PORT, LED_PIN);
- }
-}
-
-uint32_t board_button_read(void) {
- uint32_t state = MXC_GPIO_InGet(BUTTON_PORT, BUTTON_PIN) ? 1 : 0;
- return BUTTON_STATE_ACTIVE == state;
-}
-
-size_t board_get_unique_id(uint8_t id[], size_t max_len) {
- uint8_t hw_id[MXC_SYS_USN_CHECKSUM_LEN];//USN Buffer
- /* All other 2nd parameter is optional checksum buffer */
- MXC_SYS_GetUSN(hw_id, NULL);
-
- size_t act_len = TU_MIN(max_len, MXC_SYS_USN_LEN);
- memcpy(id, hw_id, act_len);
- return act_len;
-}
-
-int board_uart_read(uint8_t *buf, int len) {
- int uart_val;
- int act_len = 0;
-
- while (act_len < len) {
- if ((uart_val = MXC_UART_ReadCharacterRaw(ConsoleUart)) == E_UNDERFLOW) {
- break;
- } else {
- *buf++ = (uint8_t) uart_val;
- act_len++;
- }
- }
- return act_len;
-}
-
-int board_uart_write(void const *buf, int len) {
- int act_len = 0;
- const uint8_t *ch_ptr = (const uint8_t *) buf;
- while (act_len < len) {
- MXC_UART_WriteCharacter(ConsoleUart, *ch_ptr++);
- act_len++;
- }
- return len;
-}
-
-#if CFG_TUSB_OS == OPT_OS_NONE
-volatile uint32_t system_ticks = 0;
-
-void SysTick_Handler(void) {
- system_ticks++;
-}
-
-uint32_t board_millis(void) {
- return system_ticks;
-}
-#endif
-
-void HardFault_Handler(void) {
- __asm("BKPT #0\n");
-}
-
-// Required by __libc_init_array in startup code if we are compiling using
-// -nostdlib/-nostartfiles.
-void _init(void) {
-}
diff --git a/hw/bsp/max78002/family.cmake b/hw/bsp/max78002/family.cmake
deleted file mode 100644
index 446930bd8..000000000
--- a/hw/bsp/max78002/family.cmake
+++ /dev/null
@@ -1,166 +0,0 @@
-include_guard()
-
-set(MAX32_PERIPH ${TOP}/hw/mcu/analog/max32/Libraries/PeriphDrivers)
-set(MAX32_CMSIS ${TOP}/hw/mcu/analog/max32/Libraries/CMSIS)
-set(CMSIS_5 ${TOP}/lib/CMSIS_5)
-
-# include board specific
-include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
-
-# Get the linker file from current location (family)
-set(LD_FILE_GNU ${CMAKE_CURRENT_LIST_DIR}/max78002.ld)
-set(LD_FILE_Clang ${LD_FILE_GNU})
-
-# toolchain set up
-set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
-set(CMAKE_TOOLCHAIN_FILE ${TOP}/examples/build_system/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
-set(JLINK_DEVICE max78000)
-
-set(FAMILY_MCUS MAX78002 CACHE INTERNAL "")
-
-function(update_board TARGET)
- target_compile_definitions(${TARGET} PUBLIC
- TARGET=MAX78002
- TARGET_REV=0x4131
- MXC_ASSERT_ENABLE
- MAX78002
- IAR_PRAGMAS=0
- CFG_TUSB_MCU=OPT_MCU_MAX78002
- BOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
- )
-endfunction()
-
-#------------------------------------
-# BOARD_TARGET
-#------------------------------------
-# only need to be built ONCE for all examples
-function(add_board_target BOARD_TARGET)
- if (TARGET ${BOARD_TARGET})
- return()
- endif ()
-
- # Startup & Linker script
- set(STARTUP_FILE_GNU ${MAX32_CMSIS}/Device/Maxim/MAX78002/Source/GCC/startup_max78002.S)
- set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
-
- set(PERIPH_SRC ${MAX32_PERIPH}/Source)
- add_library(${BOARD_TARGET} STATIC
- ${MAX32_CMSIS}/Device/Maxim/MAX78002/Source/heap.c
- ${MAX32_CMSIS}/Device/Maxim/MAX78002/Source/system_max78002.c
- ${PERIPH_SRC}/SYS/mxc_assert.c
- ${PERIPH_SRC}/SYS/mxc_delay.c
- ${PERIPH_SRC}/SYS/mxc_lock.c
- ${PERIPH_SRC}/SYS/nvic_table.c
- ${PERIPH_SRC}/SYS/pins_ai87.c
- ${PERIPH_SRC}/SYS/sys_ai87.c
- ${PERIPH_SRC}/AES/aes_ai87.c
- ${PERIPH_SRC}/AES/aes_revb.c
- ${PERIPH_SRC}/FLC/flc_common.c
- ${PERIPH_SRC}/FLC/flc_ai87.c
- ${PERIPH_SRC}/FLC/flc_reva.c
- ${PERIPH_SRC}/GPIO/gpio_common.c
- ${PERIPH_SRC}/GPIO/gpio_ai87.c
- ${PERIPH_SRC}/GPIO/gpio_reva.c
- ${PERIPH_SRC}/ICC/icc_ai87.c
- ${PERIPH_SRC}/ICC/icc_reva.c
- ${PERIPH_SRC}/TRNG/trng_ai87.c
- ${PERIPH_SRC}/TRNG/trng_revb.c
- ${PERIPH_SRC}/UART/uart_common.c
- ${PERIPH_SRC}/UART/uart_ai87.c
- ${PERIPH_SRC}/UART/uart_revb.c
- ${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
- )
- target_include_directories(${BOARD_TARGET} PUBLIC
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
- ${MAX32_CMSIS}/Include
- ${MAX32_CMSIS}/Device/Maxim/MAX78002/Include
- ${MAX32_PERIPH}/Include/MAX78002
- ${PERIPH_SRC}/SYS
- ${PERIPH_SRC}/GPIO
- ${PERIPH_SRC}/AES
- ${PERIPH_SRC}/TRNG
- ${PERIPH_SRC}/ICC
- ${PERIPH_SRC}/FLC
- ${PERIPH_SRC}/UART
- )
-
- target_compile_options(${BOARD_TARGET} PRIVATE
- -Wno-error=strict-prototypes
- -Wno-error=redundant-decls
- )
- update_board(${BOARD_TARGET})
-
- if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
- target_link_options(${BOARD_TARGET} PUBLIC
- "LINKER:--script=${LD_FILE_GNU}"
- -nostartfiles
- --specs=nosys.specs --specs=nano.specs
- )
- elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
- target_link_options(${BOARD_TARGET} PUBLIC
- "LINKER:--script=${LD_FILE_Clang}"
- )
- endif ()
-endfunction()
-
-
-#------------------------------------
-# Functions
-#------------------------------------
-function(family_configure_example TARGET RTOS)
- family_configure_common(${TARGET} ${RTOS})
-
- # Board target
- add_board_target(board_${BOARD})
-
- #---------- Port Specific ----------
- # These files are built for each example since it depends on example's tusb_config.h
- target_sources(${TARGET} PUBLIC
- # BSP
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/family.c
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../board.c
- )
- target_include_directories(${TARGET} PUBLIC
- # family, hw, board
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/../../
- ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/boards/${BOARD}
- )
-
- target_compile_options(${TARGET} PRIVATE
- -Wno-error=strict-prototypes
- -Wno-error=redundant-decls
- )
-
-
- # Add TinyUSB target and port source
- family_add_tinyusb(${TARGET} OPT_MCU_MAX78002 ${RTOS})
- target_sources(${TARGET}-tinyusb PUBLIC
- ${TOP}/src/portable/mentor/musb/dcd_musb.c
- )
- target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
- target_compile_options(${TARGET}-tinyusb PRIVATE
- -Wno-error=strict-prototypes
- -Wno-error=redundant-decls
- )
-
- # Link dependencies
- target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
-
- # Flashing
- family_flash_jlink(${TARGET})
- family_flash_msdk(${TARGET})
-endfunction()
-
-# Add flash msdk target
-function(family_flash_msdk TARGET)
- set(MAXIM_PATH "$ENV{MAXIM_PATH}")
-
- add_custom_target(${TARGET}-msdk
- DEPENDS ${TARGET}
- COMMAND ${MAXIM_PATH}/Tools/OpenOCD/openocd -s ${MAXIM_PATH}/Tools/OpenOCD/scripts
- -f interface/cmsis-dap.cfg -f target/max78002.cfg
- -c "program $<TARGET_FILE:${TARGET}> verify; init; reset; exit"
- VERBATIM
- )
-endfunction()
diff --git a/hw/bsp/max78002/family.mk b/hw/bsp/max78002/family.mk
deleted file mode 100644
index 997816261..000000000
--- a/hw/bsp/max78002/family.mk
+++ /dev/null
@@ -1,99 +0,0 @@
-DEPS_SUBMODULES += lib/CMSIS_5 hw/mcu/analog/max32
-
-# Important locations in the hw support for MCU
-MAX32_CMSIS = hw/mcu/analog/max32/Libraries/CMSIS
-MAX32_PERIPH = hw/mcu/analog/max32/Libraries/PeriphDrivers
-
-# Add any board specific make rules
-include $(TOP)/$(BOARD_PATH)/board.mk
-
-CPU_CORE ?= cortex-m4
-PORT ?= 0
-
-# GCC
-SRC_S_GCC += $(MAX32_CMSIS)/Device/Maxim/MAX78002/Source/GCC/startup_max78002.S
-LD_FILE = $(FAMILY_PATH)/max78002.ld
-
-# --------------
-# Compiler Flags
-# --------------
-# Flags for the MAX78002 SDK
-CFLAGS += -DTARGET=MAX78002 \
- -DTARGET_REV=0x4131 \
- -DMXC_ASSERT_ENABLE \
- -DMAX78002 \
- -DIAR_PRAGMAS=0
-
-# Flags for TUSB features
-CFLAGS += \
- -DCFG_TUSB_MCU=OPT_MCU_MAX78002 \
- -DBOARD_TUD_MAX_SPEED=OPT_MODE_HIGH_SPEED
-
-# mcu driver cause following warnings
-CFLAGS += -Wno-error=redundant-decls \
- -Wno-error=strict-prototypes \
- -Wno-error=unused-parameter \
- -Wno-error=enum-conversion \
- -Wno-error=sign-compare \
- -Wno-error=cast-qual
-
-LDFLAGS_GCC += -nostartfiles --specs=nosys.specs --specs=nano.specs
-
-# For flash-jlink target
-JLINK_DEVICE = max78000
-
-# flash target using Jlink by default
-flash: flash-jlink
-
-# Optional flash option when running within an installed MSDK to use OpenOCD
-# Mainline OpenOCD does not yet have the MAX32's flash algorithm integrated.
-# If the MSDK is installed, flash-msdk can be run to utilize the the modified
-# openocd with the algorithms
-MAXIM_PATH := $(subst \,/,$(MAXIM_PATH))
-flash-msdk: $(BUILD)/$(PROJECT).elf
- $(MAXIM_PATH)/Tools/OpenOCD/openocd -s $(MAXIM_PATH)/Tools/OpenOCD/scripts \
- -f interface/cmsis-dap.cfg -f target/max78002.cfg \
- -c "program $(BUILD)/$(PROJECT).elf verify; init; reset; exit"
-
-# -----------------
-# Sources & Include
-# -----------------
-PERIPH_SRC = $(TOP)/$(MAX32_PERIPH)/Source
-SRC_C += \
- src/portable/mentor/musb/dcd_musb.c \
- $(MAX32_CMSIS)/Device/Maxim/MAX78002/Source/heap.c \
- $(MAX32_CMSIS)/Device/Maxim/MAX78002/Source/system_max78002.c \
- $(PERIPH_SRC)/SYS/mxc_assert.c \
- $(PERIPH_SRC)/SYS/mxc_delay.c \
- $(PERIPH_SRC)/SYS/mxc_lock.c \
- $(PERIPH_SRC)/SYS/nvic_table.c \
- $(PERIPH_SRC)/SYS/pins_ai87.c \
- $(PERIPH_SRC)/SYS/sys_ai87.c \
- $(PERIPH_SRC)/AES/aes_ai87.c \
- $(PERIPH_SRC)/AES/aes_revb.c \
- $(PERIPH_SRC)/FLC/flc_common.c \
- $(PERIPH_SRC)/FLC/flc_ai87.c \
- $(PERIPH_SRC)/FLC/flc_reva.c \
- $(PERIPH_SRC)/GPIO/gpio_common.c \
- $(PERIPH_SRC)/GPIO/gpio_ai87.c \
- $(PERIPH_SRC)/GPIO/gpio_reva.c \
- $(PERIPH_SRC)/ICC/icc_ai87.c \
- $(PERIPH_SRC)/ICC/icc_reva.c \
- $(PERIPH_SRC)/TRNG/trng_ai87.c \
- $(PERIPH_SRC)/TRNG/trng_revb.c \
- $(PERIPH_SRC)/UART/uart_common.c \
- $(PERIPH_SRC)/UART/uart_ai87.c \
- $(PERIPH_SRC)/UART/uart_revb.c \
-
-INC += \
- $(TOP)/$(BOARD_PATH) \
- $(TOP)/$(MAX32_CMSIS)/Include \
- $(TOP)/$(MAX32_CMSIS)/Device/Maxim/MAX78002/Include \
- $(TOP)/$(MAX32_PERIPH)/Include/MAX78002 \
- $(PERIPH_SRC)/SYS \
- $(PERIPH_SRC)/GPIO \
- $(PERIPH_SRC)/AES \
- $(PERIPH_SRC)/ICC \
- $(PERIPH_SRC)/FLC \
- $(PERIPH_SRC)/TRNG \
- $(PERIPH_SRC)/UART
diff --git a/hw/bsp/max78002/max78002.ld b/hw/bsp/max78002/max78002.ld
deleted file mode 100644
index e5c4866ee..000000000
--- a/hw/bsp/max78002/max78002.ld
+++ /dev/null
@@ -1,182 +0,0 @@
-MEMORY {
- ROM (rx) : ORIGIN = 0x00000000, LENGTH = 0x00010000 /* 64 kB ROM */
- FLASH (rx) : ORIGIN = 0x10000000, LENGTH = 0x00280000 /* 2.5 MB Flash */
- SRAM (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00060000 /* 384 kB SRAM */
- /*CSI2 (rwx) : ORIGIN = 0x2001F000, LENGTH = 0x00001000 4096 B CSI2 Buffer */
-}
-
-SECTIONS {
- .rom :
- {
- KEEP(*(.rom_vector))
- *(.rom_handlers*)
- } > ROM
-
- .text :
- {
- _text = .;
- KEEP(*(.isr_vector))
- EXCLUDE_FILE (*riscv.o) *(.text*) /* Program code (exclude RISCV code) */
- *(.rodata*) /* read-only data: "const" */
-
- KEEP(*(.init))
- KEEP(*(.fini))
-
- /* .ctors */
- *crtbegin.o(.ctors)
- *crtbegin?.o(.ctors)
- *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors)
- *(SORT(.ctors.*))
- *(.ctors)
-
- /* .dtors */
- *crtbegin.o(.dtors)
- *crtbegin?.o(.dtors)
- *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors)
- *(SORT(.dtors.*))
- *(.dtors)
-
- /* C++ Exception handling */
- KEEP(*(.eh_frame*))
- _etext = .;
- } > FLASH
-
- .ARM.extab :
- {
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- } > FLASH
-
- /* Binary import */
- .bin_storage :
- {
- FILL(0xFF)
- _bin_start_ = .;
- KEEP(*(.bin_storage_img))
- _bin_end_ = .;
- . = ALIGN(4);
- } > FLASH
-
- .rom_code :
- {
- . = ALIGN(16);
- _sran_code = .;
- *(.rom_code_section)
- _esran_code = .;
- } > ROM
-
- .flash_code :
- {
- . = ALIGN(16);
- _sran_code = .;
- *(.flash_code_section)
- _esran_code = .;
- } > FLASH
-
- .sram_code :
- {
- . = ALIGN(16);
- _sran_code = .;
- *(.sram_code_section)
- _esran_code = .;
- } > SRAM
-
- /* it's used for C++ exception handling */
- /* we need to keep this to avoid overlapping */
- .ARM.exidx :
- {
- __exidx_start = .;
- *(.ARM.exidx* .gnu.linkonce.armexidx.*)
- __exidx_end = .;
- } > FLASH
-
- .data :
- {
- _data = ALIGN(., 4);
- _csi = . + 0x20000;
- *(vtable)
- *(.data*) /*read-write initialized data: initialized global variable*/
-
-
- /* These array sections are used by __libc_init_array to call static C++ constructors */
- . = ALIGN(4);
- /* preinit data */
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP(*(.preinit_array))
- PROVIDE_HIDDEN (__preinit_array_end = .);
-
- . = ALIGN(4);
- /* init data */
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP(*(SORT(.init_array.*)))
- KEEP(*(.init_array))
- PROVIDE_HIDDEN (__init_array_end = .);
-
- . = ALIGN(4);
- /* finit data */
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP(*(SORT(.fini_array.*)))
- KEEP(*(.fini_array))
- PROVIDE_HIDDEN (__fini_array_end = .);
-
- _edata = ALIGN(., 4);
-
- } > SRAM AT>FLASH
- __load_data = LOADADDR(.data);
-
- .bss :
- {
- . = ALIGN(4);
- _bss = .;
- *(.bss*) /*read-write zero initialized data: uninitialized global variable*/
- *(COMMON)
- _ebss = ALIGN(., 4);
- } > SRAM
-
- .shared :
- {
- . = ALIGN(4);
- _shared = .;
- *(.mailbox*)
- . = ALIGN(4);
- *(.shared*) /*read-write zero initialized data: uninitialized global variable*/
- _eshared = ALIGN(., 4);
- } > SRAM
- __shared_data = LOADADDR(.shared);
-
- /* Set stack top to end of RAM, and stack limit move down by
- * size of stack_dummy section */
- __StackTop = ORIGIN(SRAM) + LENGTH(SRAM);
- __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-
- /* .stack_dummy section doesn't contains any symbols. It is only
- * used for linker to calculate size of stack sections, and assign
- * values to stack symbols later */
- .stack_dummy (COPY):
- {
- *(.stack*)
- } > SRAM
-
- .heap (COPY):
- {
- . = ALIGN(4);
- PROVIDE ( end = . );
- PROVIDE ( _end = . );
- *(.heap*)
- __HeapLimit = ABSOLUTE(__StackLimit);
- } > SRAM
-
- PROVIDE(__stack = __StackTop);
-
- /* Check if data + heap + stack exceeds RAM limit */
- ASSERT(__StackLimit >= _ebss, "region RAM overflowed with stack")
-
- /* Section used by RISCV loader projects. See RISCV_LOAD documentation in the build system. */
- .riscv_flash :
- {
- /* Align address to mod 256 with a small offset. This is required to match the flash page size.*/
- . = ALIGN(256); /* ALIGN operatator is used here. Note that (. & 0x1FFFFF00) was used in the past, but a strange bug was seen on Windows where the & did not behave as expected.*/
- . += 0x100;
- _riscv_boot = .;
- KEEP(*riscv.o (.text*))
- } > FLASH
-}