mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-16 05:42:56 +00:00
add kinetis_k family and teensy_35
- teensy_35 is not able to blink led with board_test though, probably due to clock config.
This commit is contained in:
parent
588b758717
commit
aa0fabd51d
1
.idea/cmake.xml
generated
1
.idea/cmake.xml
generated
@ -39,6 +39,7 @@
|
|||||||
<configuration PROFILE_NAME="b_g474e_dpow1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DLOG=3 -DLOGGER=RTT" />
|
<configuration PROFILE_NAME="b_g474e_dpow1" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DLOG=3 -DLOGGER=RTT" />
|
||||||
<configuration PROFILE_NAME="b_g474e_dpow1 iar" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DTOOLCHAIN=iar" />
|
<configuration PROFILE_NAME="b_g474e_dpow1 iar" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=b_g474e_dpow1 -DTOOLCHAIN=iar" />
|
||||||
<configuration PROFILE_NAME="frdm_kl25z" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_kl25z -DLOG=3 -DLOGGER=RTT" />
|
<configuration PROFILE_NAME="frdm_kl25z" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=frdm_kl25z -DLOG=3 -DLOGGER=RTT" />
|
||||||
|
<configuration PROFILE_NAME="teensy_35" ENABLED="true" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=teensy_35" />
|
||||||
<configuration PROFILE_NAME="stm32h743eval" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
<configuration PROFILE_NAME="stm32h743eval" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32h743eval -DLOG=3 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="stm32f072disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f072disco" />
|
<configuration PROFILE_NAME="stm32f072disco" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f072disco" />
|
||||||
<configuration PROFILE_NAME="stm32f103_mini_2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f103_mini_2" />
|
<configuration PROFILE_NAME="stm32f103_mini_2" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=stm32f103_mini_2" />
|
||||||
|
@ -379,6 +379,18 @@ function(family_flash_pyocd TARGET)
|
|||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
|
|
||||||
|
# Add flash teensy_cli target
|
||||||
|
function(family_flash_teensy TARGET)
|
||||||
|
if (NOT DEFINED TEENSY_CLI)
|
||||||
|
set(TEENSY_CLI teensy_loader_cli)
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
add_custom_target(${TARGET}-teensy
|
||||||
|
DEPENDS ${TARGET}
|
||||||
|
COMMAND ${TEENSY_CLI} --mcu=${TEENSY_MCU} -w -s $<TARGET_FILE_DIR:${TARGET}>/${TARGET}.hex
|
||||||
|
)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
# Add flash using NXP's LinkServer (redserver)
|
# Add flash using NXP's LinkServer (redserver)
|
||||||
# https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/linkserver-for-microcontrollers:LINKERSERVER
|
# https://www.nxp.com/design/software/development-software/mcuxpresso-software-and-tools-/linkserver-for-microcontrollers:LINKERSERVER
|
||||||
function(family_flash_nxplink TARGET)
|
function(family_flash_nxplink TARGET)
|
||||||
|
165
hw/bsp/kinetis_k/FreeRTOSConfig/FreeRTOSConfig.h
Normal file
165
hw/bsp/kinetis_k/FreeRTOSConfig/FreeRTOSConfig.h
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
/*
|
||||||
|
* 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 "fsl_device_registers.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 2
|
||||||
|
#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 0
|
||||||
|
#define configSUPPORT_DYNAMIC_ALLOCATION 1
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* 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
|
||||||
|
|
||||||
|
/* Define to trap errors during development. */
|
||||||
|
// Halt CPU (breakpoint) when hitting error, only apply for Cortex M3, M4, M7
|
||||||
|
#if defined(__ARM_ARCH_7M__) || defined (__ARM_ARCH_7EM__)
|
||||||
|
#define configASSERT(_exp) \
|
||||||
|
do {\
|
||||||
|
if ( !(_exp) ) { \
|
||||||
|
volatile uint32_t* ARM_CM_DHCSR = ((volatile uint32_t*) 0xE000EDF0UL); /* Cortex M CoreDebug->DHCSR */ \
|
||||||
|
if ( (*ARM_CM_DHCSR) & 1UL ) { /* Only halt mcu if debugger is attached */ \
|
||||||
|
taskDISABLE_INTERRUPTS(); \
|
||||||
|
__asm("BKPT #0\n"); \
|
||||||
|
}\
|
||||||
|
}\
|
||||||
|
} while(0)
|
||||||
|
#else
|
||||||
|
#define configASSERT( x )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* 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 2
|
||||||
|
|
||||||
|
/* 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 /* __FREERTOS_CONFIG__H */
|
17
hw/bsp/kinetis_k/boards/teensy_35/board.cmake
Normal file
17
hw/bsp/kinetis_k/boards/teensy_35/board.cmake
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
set(MCU_VARIANT MK64F12)
|
||||||
|
|
||||||
|
set(JLINK_DEVICE MK64FX512xxx12)
|
||||||
|
set(TEENSY_MCU TEENSY35)
|
||||||
|
set(PYOCD_TARGET k64f)
|
||||||
|
|
||||||
|
set(LD_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/MK64FX512xxx12_flash.ld)
|
||||||
|
|
||||||
|
function(update_board TARGET)
|
||||||
|
target_sources(${TARGET} PUBLIC
|
||||||
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/board/pin_mux.c
|
||||||
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/board/clock_config.c
|
||||||
|
)
|
||||||
|
target_compile_definitions(${TARGET} PUBLIC
|
||||||
|
CPU_MK64FX512VMD12
|
||||||
|
)
|
||||||
|
endfunction()
|
48
hw/bsp/kinetis_k/boards/teensy_35/board.h
Normal file
48
hw/bsp/kinetis_k/boards/teensy_35/board.h
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2023 Ha Thach (tinyusb.org)
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef BOARD_H
|
||||||
|
#define BOARD_H
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// MACRO TYPEDEF CONSTANT ENUM DECLARATION
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// LED
|
||||||
|
#define LED_PORT GPIOC
|
||||||
|
#define LED_PIN 5
|
||||||
|
#define LED_STATE_ON 1
|
||||||
|
|
||||||
|
// Button
|
||||||
|
|
||||||
|
// UART
|
||||||
|
//#define UART_PORT UART0
|
||||||
|
//#define UART_PIN_CLOCK kCLOCK_PortA
|
||||||
|
//#define UART_PIN_PORT PORTA
|
||||||
|
//#define UART_PIN_RX 1u
|
||||||
|
//#define UART_PIN_TX 2u
|
||||||
|
//#define UART_PIN_FUNCTION kPORT_MuxAlt2
|
||||||
|
//#define SOPT5_UART0RXSRC_UART_RX 0x00u /*!< UART0 receive data source select: UART0_RX pin */
|
||||||
|
//#define SOPT5_UART0TXSRC_UART_TX 0x00u /*!< UART0 transmit data source select: UART0_TX pin */
|
||||||
|
|
||||||
|
#endif
|
23
hw/bsp/kinetis_k/boards/teensy_35/board.mk
Normal file
23
hw/bsp/kinetis_k/boards/teensy_35/board.mk
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
MCU_VARIANT = MK64F12
|
||||||
|
|
||||||
|
CFLAGS += \
|
||||||
|
-DCPU_MK64FX512VMD12 \
|
||||||
|
|
||||||
|
# mcu driver cause following warnings
|
||||||
|
CFLAGS += -Wno-error=unused-parameter -Wno-error=format -Wno-error=redundant-decls
|
||||||
|
|
||||||
|
SRC_C += \
|
||||||
|
$(BOARD_PATH)/board/clock_config.c \
|
||||||
|
$(BOARD_PATH)/board/pin_mux.c \
|
||||||
|
|
||||||
|
LD_FILE = ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/MK64FX512xxx12_flash.ld
|
||||||
|
|
||||||
|
# For flash-jlink target
|
||||||
|
JLINK_DEVICE = MK64FX512xxx12
|
||||||
|
|
||||||
|
# For flash-pyocd target
|
||||||
|
PYOCD_TARGET = k64f
|
||||||
|
|
||||||
|
# flash by using teensy_loader_cli https://github.com/PaulStoffregen/teensy_loader_cli
|
||||||
|
flash: $(BUILD)/$(PROJECT).hex
|
||||||
|
teensy_loader_cli --mcu=TEENSY35 -v -w $<
|
186
hw/bsp/kinetis_k/boards/teensy_35/board/clock_config.c
Normal file
186
hw/bsp/kinetis_k/boards/teensy_35/board/clock_config.c
Normal file
@ -0,0 +1,186 @@
|
|||||||
|
/***********************************************************************************************************************
|
||||||
|
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||||
|
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||||
|
**********************************************************************************************************************/
|
||||||
|
/*
|
||||||
|
* How to setup clock using clock driver functions:
|
||||||
|
*
|
||||||
|
* 1. CLOCK_SetSimSafeDivs, to make sure core clock, bus clock, flexbus clock
|
||||||
|
* and flash clock are in allowed range during clock mode switch.
|
||||||
|
*
|
||||||
|
* 2. Call CLOCK_Osc0Init to setup OSC clock, if it is used in target mode.
|
||||||
|
*
|
||||||
|
* 3. Set MCG configuration, MCG includes three parts: FLL clock, PLL clock and
|
||||||
|
* internal reference clock(MCGIRCLK). Follow the steps to setup:
|
||||||
|
*
|
||||||
|
* 1). Call CLOCK_BootToXxxMode to set MCG to target mode.
|
||||||
|
*
|
||||||
|
* 2). If target mode is FBI/BLPI/PBI mode, the MCGIRCLK has been configured
|
||||||
|
* correctly. For other modes, need to call CLOCK_SetInternalRefClkConfig
|
||||||
|
* explicitly to setup MCGIRCLK.
|
||||||
|
*
|
||||||
|
* 3). Don't need to configure FLL explicitly, because if target mode is FLL
|
||||||
|
* mode, then FLL has been configured by the function CLOCK_BootToXxxMode,
|
||||||
|
* if the target mode is not FLL mode, the FLL is disabled.
|
||||||
|
*
|
||||||
|
* 4). If target mode is PEE/PBE/PEI/PBI mode, then the related PLL has been
|
||||||
|
* setup by CLOCK_BootToXxxMode. In FBE/FBI/FEE/FBE mode, the PLL could
|
||||||
|
* be enabled independently, call CLOCK_EnablePll0 explicitly in this case.
|
||||||
|
*
|
||||||
|
* 4. Call CLOCK_SetSimConfig to set the clock configuration in SIM.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||||
|
!!GlobalInfo
|
||||||
|
product: Clocks v11.0
|
||||||
|
processor: MK64FX512xxx12
|
||||||
|
package_id: MK64FX512VLQ12
|
||||||
|
mcu_data: ksdk2_0
|
||||||
|
processor_version: 13.0.1
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
#include "clock_config.h"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
#define MCG_IRCLK_DISABLE 0U /*!< MCGIRCLK disabled */
|
||||||
|
#define OSC_CAP0P 0U /*!< Oscillator 0pF capacitor load */
|
||||||
|
#define OSC_ER_CLK_DISABLE 0U /*!< Disable external reference clock */
|
||||||
|
#define SIM_OSC32KSEL_OSC32KCLK_CLK 0U /*!< OSC32KSEL select: OSC32KCLK clock */
|
||||||
|
#define SIM_PLLFLLSEL_MCGPLLCLK_CLK 1U /*!< PLLFLL select: MCGPLLCLK clock */
|
||||||
|
#define SIM_USB_CLK_120000000HZ 120000000U /*!< Input SIM frequency for USB: 120000000Hz */
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code
|
||||||
|
******************************************************************************/
|
||||||
|
/*FUNCTION**********************************************************************
|
||||||
|
*
|
||||||
|
* Function Name : CLOCK_CONFIG_SetFllExtRefDiv
|
||||||
|
* Description : Configure FLL external reference divider (FRDIV).
|
||||||
|
* Param frdiv : The value to set FRDIV.
|
||||||
|
*
|
||||||
|
*END**************************************************************************/
|
||||||
|
static void CLOCK_CONFIG_SetFllExtRefDiv(uint8_t frdiv)
|
||||||
|
{
|
||||||
|
MCG->C1 = ((MCG->C1 & ~MCG_C1_FRDIV_MASK) | MCG_C1_FRDIV(frdiv));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
************************ BOARD_InitBootClocks function ************************
|
||||||
|
******************************************************************************/
|
||||||
|
void BOARD_InitBootClocks(void)
|
||||||
|
{
|
||||||
|
BOARD_BootClockRUN();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************** Configuration BOARD_BootClockRUN ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/* clang-format off */
|
||||||
|
/* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||||
|
!!Configuration
|
||||||
|
name: BOARD_BootClockRUN
|
||||||
|
called_from_default_init: true
|
||||||
|
outputs:
|
||||||
|
- {id: Bus_clock.outFreq, value: 60 MHz}
|
||||||
|
- {id: Core_clock.outFreq, value: 120 MHz}
|
||||||
|
- {id: Flash_clock.outFreq, value: 24 MHz}
|
||||||
|
- {id: FlexBus_clock.outFreq, value: 40 MHz}
|
||||||
|
- {id: LPO_clock.outFreq, value: 1 kHz}
|
||||||
|
- {id: MCGFFCLK.outFreq, value: 500 kHz}
|
||||||
|
- {id: PLLFLLCLK.outFreq, value: 120 MHz}
|
||||||
|
- {id: System_clock.outFreq, value: 120 MHz}
|
||||||
|
- {id: USB48MCLK.outFreq, value: 48 MHz}
|
||||||
|
settings:
|
||||||
|
- {id: MCGMode, value: PEE}
|
||||||
|
- {id: MCG.FRDIV.scale, value: '32'}
|
||||||
|
- {id: MCG.IREFS.sel, value: MCG.FRDIV}
|
||||||
|
- {id: MCG.PLLS.sel, value: MCG.PLL}
|
||||||
|
- {id: MCG.PRDIV.scale, value: '4'}
|
||||||
|
- {id: MCG.VDIV.scale, value: '30'}
|
||||||
|
- {id: MCG_C2_RANGE0_CFG, value: Very_high}
|
||||||
|
- {id: MCG_C2_RANGE0_FRDIV_CFG, value: Very_high}
|
||||||
|
- {id: MCG_C5_PLLCLKEN0_CFG, value: Enabled}
|
||||||
|
- {id: RTC_CR_CLKO_CFG, value: Disabled}
|
||||||
|
- {id: RTC_CR_OSC_CAP_LOAD_CFG, value: SC10PF}
|
||||||
|
- {id: SIM.OUTDIV2.scale, value: '2'}
|
||||||
|
- {id: SIM.OUTDIV3.scale, value: '3'}
|
||||||
|
- {id: SIM.OUTDIV4.scale, value: '5'}
|
||||||
|
- {id: SIM.PLLFLLSEL.sel, value: MCG.MCGPLLCLK}
|
||||||
|
- {id: SIM.USBDIV.scale, value: '5'}
|
||||||
|
- {id: SIM.USBFRAC.scale, value: '2'}
|
||||||
|
- {id: SIM.USBSRCSEL.sel, value: SIM.USBDIV}
|
||||||
|
- {id: USBClkConfig, value: 'yes'}
|
||||||
|
sources:
|
||||||
|
- {id: OSC.OSC.outFreq, value: 16 MHz, enabled: true}
|
||||||
|
- {id: RTC.RTC32kHz.outFreq, value: 32.768 kHz, enabled: true}
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS **********/
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Variables for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
const mcg_config_t mcgConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.mcgMode = kMCG_ModePEE, /* PEE - PLL Engaged External */
|
||||||
|
.irclkEnableMode = MCG_IRCLK_DISABLE, /* MCGIRCLK disabled */
|
||||||
|
.ircs = kMCG_IrcSlow, /* Slow internal reference clock selected */
|
||||||
|
.fcrdiv = 0x1U, /* Fast IRC divider: divided by 2 */
|
||||||
|
.frdiv = 0x0U, /* FLL reference clock divider: divided by 32 */
|
||||||
|
.drs = kMCG_DrsLow, /* Low frequency range */
|
||||||
|
.dmx32 = kMCG_Dmx32Default, /* DCO has a default range of 25% */
|
||||||
|
.oscsel = kMCG_OscselOsc, /* Selects System Oscillator (OSCCLK) */
|
||||||
|
.pll0Config =
|
||||||
|
{
|
||||||
|
.enableMode = kMCG_PllEnableIndependent,/* MCGPLLCLK enabled independent of MCG clock mode, MCGPLLCLK disabled in STOP mode */
|
||||||
|
.prdiv = 0x3U, /* PLL Reference divider: divided by 4 */
|
||||||
|
.vdiv = 0x6U, /* VCO divider: multiplied by 30 */
|
||||||
|
},
|
||||||
|
};
|
||||||
|
const sim_clock_config_t simConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.pllFllSel = SIM_PLLFLLSEL_MCGPLLCLK_CLK, /* PLLFLL select: MCGPLLCLK clock */
|
||||||
|
.er32kSrc = SIM_OSC32KSEL_OSC32KCLK_CLK, /* OSC32KSEL select: OSC32KCLK clock */
|
||||||
|
.clkdiv1 = 0x1240000U, /* SIM_CLKDIV1 - OUTDIV1: /1, OUTDIV2: /2, OUTDIV3: /3, OUTDIV4: /5 */
|
||||||
|
};
|
||||||
|
const osc_config_t oscConfig_BOARD_BootClockRUN =
|
||||||
|
{
|
||||||
|
.freq = 16000000U, /* Oscillator frequency: 16000000Hz */
|
||||||
|
.capLoad = (OSC_CAP0P), /* Oscillator capacity load: 0pF */
|
||||||
|
.workMode = kOSC_ModeExt, /* Use external clock */
|
||||||
|
.oscerConfig =
|
||||||
|
{
|
||||||
|
.enableMode = OSC_ER_CLK_DISABLE, /* Disable external reference clock */
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Code for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
void BOARD_BootClockRUN(void)
|
||||||
|
{
|
||||||
|
/* Set the system clock dividers in SIM to safe value. */
|
||||||
|
CLOCK_SetSimSafeDivs();
|
||||||
|
/* Initializes OSC0 according to board configuration. */
|
||||||
|
CLOCK_InitOsc0(&oscConfig_BOARD_BootClockRUN);
|
||||||
|
CLOCK_SetXtal0Freq(oscConfig_BOARD_BootClockRUN.freq);
|
||||||
|
/* Configure FLL external reference divider (FRDIV). */
|
||||||
|
CLOCK_CONFIG_SetFllExtRefDiv(mcgConfig_BOARD_BootClockRUN.frdiv);
|
||||||
|
/* Set MCG to PEE mode. */
|
||||||
|
CLOCK_BootToPeeMode(mcgConfig_BOARD_BootClockRUN.oscsel,
|
||||||
|
kMCG_PllClkSelPll0,
|
||||||
|
&mcgConfig_BOARD_BootClockRUN.pll0Config);
|
||||||
|
/* Set the clock configuration in SIM module. */
|
||||||
|
CLOCK_SetSimConfig(&simConfig_BOARD_BootClockRUN);
|
||||||
|
/* Set SystemCoreClock variable. */
|
||||||
|
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
|
||||||
|
/* Enable USB FS clock. */
|
||||||
|
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcPll0, SIM_USB_CLK_120000000HZ);
|
||||||
|
}
|
69
hw/bsp/kinetis_k/boards/teensy_35/board/clock_config.h
Normal file
69
hw/bsp/kinetis_k/boards/teensy_35/board/clock_config.h
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/***********************************************************************************************************************
|
||||||
|
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||||
|
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||||
|
**********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _CLOCK_CONFIG_H_
|
||||||
|
#define _CLOCK_CONFIG_H_
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions
|
||||||
|
******************************************************************************/
|
||||||
|
#define BOARD_XTAL0_CLK_HZ 16000000U /*!< Board xtal0 frequency in Hz */
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
************************ BOARD_InitBootClocks function ************************
|
||||||
|
******************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief This function executes default configuration of clocks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_InitBootClocks(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
********************** Configuration BOARD_BootClockRUN ***********************
|
||||||
|
******************************************************************************/
|
||||||
|
/*******************************************************************************
|
||||||
|
* Definitions for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#define BOARD_BOOTCLOCKRUN_CORE_CLOCK 120000000U /*!< Core clock frequency: 120000000Hz */
|
||||||
|
|
||||||
|
/*! @brief MCG set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const mcg_config_t mcgConfig_BOARD_BootClockRUN;
|
||||||
|
/*! @brief SIM module set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const sim_clock_config_t simConfig_BOARD_BootClockRUN;
|
||||||
|
/*! @brief OSC set for BOARD_BootClockRUN configuration.
|
||||||
|
*/
|
||||||
|
extern const osc_config_t oscConfig_BOARD_BootClockRUN;
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
* API for BOARD_BootClockRUN configuration
|
||||||
|
******************************************************************************/
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief This function executes configuration of clocks.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_BootClockRUN(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif /* __cplusplus*/
|
||||||
|
|
||||||
|
#endif /* _CLOCK_CONFIG_H_ */
|
61
hw/bsp/kinetis_k/boards/teensy_35/board/pin_mux.c
Normal file
61
hw/bsp/kinetis_k/boards/teensy_35/board/pin_mux.c
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
/***********************************************************************************************************************
|
||||||
|
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||||
|
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||||
|
**********************************************************************************************************************/
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
/*
|
||||||
|
* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||||
|
!!GlobalInfo
|
||||||
|
product: Pins v13.1
|
||||||
|
processor: MK64FX512xxx12
|
||||||
|
package_id: MK64FX512VLQ12
|
||||||
|
mcu_data: ksdk2_0
|
||||||
|
processor_version: 13.0.1
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||||
|
*/
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
#include "fsl_common.h"
|
||||||
|
#include "fsl_port.h"
|
||||||
|
#include "pin_mux.h"
|
||||||
|
|
||||||
|
/* FUNCTION ************************************************************************************************************
|
||||||
|
*
|
||||||
|
* Function Name : BOARD_InitBootPins
|
||||||
|
* Description : Calls initialization functions.
|
||||||
|
*
|
||||||
|
* END ****************************************************************************************************************/
|
||||||
|
void BOARD_InitBootPins(void)
|
||||||
|
{
|
||||||
|
BOARD_InitPins();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* clang-format off */
|
||||||
|
/*
|
||||||
|
* TEXT BELOW IS USED AS SETTING FOR TOOLS *************************************
|
||||||
|
BOARD_InitPins:
|
||||||
|
- options: {callFromInitBoot: 'true', coreID: core0, enableClock: 'true'}
|
||||||
|
- pin_list:
|
||||||
|
- {pin_num: '110', peripheral: GPIOC, signal: 'GPIO, 5', pin_signal: PTC5/LLWU_P9/SPI0_SCK/LPTMR0_ALT2/I2S0_RXD0/FB_AD10/CMP0_OUT/FTM0_CH2}
|
||||||
|
* BE CAREFUL MODIFYING THIS COMMENT - IT IS YAML SETTINGS FOR TOOLS ***********
|
||||||
|
*/
|
||||||
|
/* clang-format on */
|
||||||
|
|
||||||
|
/* FUNCTION ************************************************************************************************************
|
||||||
|
*
|
||||||
|
* Function Name : BOARD_InitPins
|
||||||
|
* Description : Configures pin routing and optionally pin electrical features.
|
||||||
|
*
|
||||||
|
* END ****************************************************************************************************************/
|
||||||
|
void BOARD_InitPins(void)
|
||||||
|
{
|
||||||
|
/* Port C Clock Gate Control: Clock enabled */
|
||||||
|
CLOCK_EnableClock(kCLOCK_PortC);
|
||||||
|
|
||||||
|
/* PORTC5 (pin 110) is configured as PTC5 */
|
||||||
|
PORT_SetPinMux(PORTC, 5U, kPORT_MuxAsGpio);
|
||||||
|
}
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* EOF
|
||||||
|
**********************************************************************************************************************/
|
45
hw/bsp/kinetis_k/boards/teensy_35/board/pin_mux.h
Normal file
45
hw/bsp/kinetis_k/boards/teensy_35/board/pin_mux.h
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
/***********************************************************************************************************************
|
||||||
|
* This file was generated by the MCUXpresso Config Tools. Any manual edits made to this file
|
||||||
|
* will be overwritten if the respective MCUXpresso Config Tools is used to update this file.
|
||||||
|
**********************************************************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _PIN_MUX_H_
|
||||||
|
#define _PIN_MUX_H_
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @addtogroup pin_mux
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* API
|
||||||
|
**********************************************************************************************************************/
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Calls initialization functions.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_InitBootPins(void);
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @brief Configures pin routing and optionally pin electrical features.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void BOARD_InitPins(void);
|
||||||
|
|
||||||
|
#if defined(__cplusplus)
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
#endif /* _PIN_MUX_H_ */
|
||||||
|
|
||||||
|
/***********************************************************************************************************************
|
||||||
|
* EOF
|
||||||
|
**********************************************************************************************************************/
|
184
hw/bsp/kinetis_k/boards/teensy_35/teensy_35.mex
Normal file
184
hw/bsp/kinetis_k/boards/teensy_35/teensy_35.mex
Normal file
@ -0,0 +1,184 @@
|
|||||||
|
<?xml version="1.0" encoding= "UTF-8" ?>
|
||||||
|
<configuration name="MK64FX512xxx12" xsi:schemaLocation="http://mcuxpresso.nxp.com/XSD/mex_configuration_13 http://mcuxpresso.nxp.com/XSD/mex_configuration_13.xsd" uuid="9011274c-fba8-40d5-b5c6-83fae0667023" version="13" xmlns="http://mcuxpresso.nxp.com/XSD/mex_configuration_13" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
|
||||||
|
<common>
|
||||||
|
<processor>MK64FX512xxx12</processor>
|
||||||
|
<package>MK64FX512VLQ12</package>
|
||||||
|
<mcu_data>ksdk2_0</mcu_data>
|
||||||
|
<cores selected="core0">
|
||||||
|
<core name="Cortex-M4F" id="core0" description="M4 core"/>
|
||||||
|
</cores>
|
||||||
|
<description></description>
|
||||||
|
</common>
|
||||||
|
<preferences>
|
||||||
|
<validate_boot_init_only>true</validate_boot_init_only>
|
||||||
|
<generate_extended_information>false</generate_extended_information>
|
||||||
|
<generate_code_modified_registers_only>false</generate_code_modified_registers_only>
|
||||||
|
<update_include_paths>true</update_include_paths>
|
||||||
|
<generate_registers_defines>false</generate_registers_defines>
|
||||||
|
</preferences>
|
||||||
|
<tools>
|
||||||
|
<pins name="Pins" version="13.1" enabled="true" update_project_code="true">
|
||||||
|
<generated_project_files>
|
||||||
|
<file path="board/pin_mux.c" update_enabled="true"/>
|
||||||
|
<file path="board/pin_mux.h" update_enabled="true"/>
|
||||||
|
</generated_project_files>
|
||||||
|
<pins_profile>
|
||||||
|
<processor_version>13.0.1</processor_version>
|
||||||
|
</pins_profile>
|
||||||
|
<functions_list>
|
||||||
|
<function name="BOARD_InitPins">
|
||||||
|
<description>Configures pin routing and optionally pin electrical features.</description>
|
||||||
|
<options>
|
||||||
|
<callFromInitBoot>true</callFromInitBoot>
|
||||||
|
<coreID>core0</coreID>
|
||||||
|
<enableClock>true</enableClock>
|
||||||
|
</options>
|
||||||
|
<dependencies>
|
||||||
|
<dependency resourceType="SWComponent" resourceId="platform.drivers.common" description="Pins initialization requires the COMMON Driver in the project." problem_level="2" source="Pins:BOARD_InitPins">
|
||||||
|
<feature name="enabled" evaluation="equal" configuration="core0">
|
||||||
|
<data>true</data>
|
||||||
|
</feature>
|
||||||
|
</dependency>
|
||||||
|
<dependency resourceType="SWComponent" resourceId="platform.drivers.port" description="Pins initialization requires the PORT Driver in the project." problem_level="2" source="Pins:BOARD_InitPins">
|
||||||
|
<feature name="enabled" evaluation="equal" configuration="core0">
|
||||||
|
<data>true</data>
|
||||||
|
</feature>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<pins>
|
||||||
|
<pin peripheral="GPIOC" signal="GPIO, 5" pin_num="110" pin_signal="PTC5/LLWU_P9/SPI0_SCK/LPTMR0_ALT2/I2S0_RXD0/FB_AD10/CMP0_OUT/FTM0_CH2"/>
|
||||||
|
</pins>
|
||||||
|
</function>
|
||||||
|
</functions_list>
|
||||||
|
</pins>
|
||||||
|
<clocks name="Clocks" version="11.0" enabled="true" update_project_code="true">
|
||||||
|
<generated_project_files>
|
||||||
|
<file path="board/clock_config.c" update_enabled="true"/>
|
||||||
|
<file path="board/clock_config.h" update_enabled="true"/>
|
||||||
|
</generated_project_files>
|
||||||
|
<clocks_profile>
|
||||||
|
<processor_version>13.0.1</processor_version>
|
||||||
|
</clocks_profile>
|
||||||
|
<clock_configurations>
|
||||||
|
<clock_configuration name="BOARD_BootClockRUN" id_prefix="" prefix_user_defined="false">
|
||||||
|
<description></description>
|
||||||
|
<options/>
|
||||||
|
<dependencies>
|
||||||
|
<dependency resourceType="PinSignal" resourceId="OSC.EXTAL0" description="'EXTAL0' (Pins tool id: OSC.EXTAL0, Clocks tool id: OSC.EXTAL0) needs to be routed" problem_level="1" source="Clocks:BOARD_BootClockRUN">
|
||||||
|
<feature name="routed" evaluation="">
|
||||||
|
<data>true</data>
|
||||||
|
</feature>
|
||||||
|
</dependency>
|
||||||
|
<dependency resourceType="PinSignal" resourceId="OSC.EXTAL0" description="'EXTAL0' (Pins tool id: OSC.EXTAL0, Clocks tool id: OSC.EXTAL0) needs to have 'INPUT' direction" problem_level="1" source="Clocks:BOARD_BootClockRUN">
|
||||||
|
<feature name="direction" evaluation="">
|
||||||
|
<data>INPUT</data>
|
||||||
|
</feature>
|
||||||
|
</dependency>
|
||||||
|
<dependency resourceType="SWComponent" resourceId="platform.drivers.common" description="Clocks initialization requires the COMMON Driver in the project." problem_level="2" source="Clocks:BOARD_BootClockRUN">
|
||||||
|
<feature name="enabled" evaluation="equal" configuration="core0">
|
||||||
|
<data>true</data>
|
||||||
|
</feature>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<clock_sources>
|
||||||
|
<clock_source id="OSC.OSC.outFreq" value="16 MHz" locked="false" enabled="true"/>
|
||||||
|
<clock_source id="RTC.RTC32kHz.outFreq" value="32.768 kHz" locked="false" enabled="true"/>
|
||||||
|
</clock_sources>
|
||||||
|
<clock_outputs>
|
||||||
|
<clock_output id="Bus_clock.outFreq" value="60 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="Core_clock.outFreq" value="120 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="Flash_clock.outFreq" value="24 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="FlexBus_clock.outFreq" value="40 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="LPO_clock.outFreq" value="1 kHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="MCGFFCLK.outFreq" value="500 kHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="PLLFLLCLK.outFreq" value="120 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="System_clock.outFreq" value="120 MHz" locked="false" accuracy=""/>
|
||||||
|
<clock_output id="USB48MCLK.outFreq" value="48 MHz" locked="false" accuracy=""/>
|
||||||
|
</clock_outputs>
|
||||||
|
<clock_settings>
|
||||||
|
<setting id="MCGMode" value="PEE" locked="false"/>
|
||||||
|
<setting id="MCG.FRDIV.scale" value="32" locked="false"/>
|
||||||
|
<setting id="MCG.IREFS.sel" value="MCG.FRDIV" locked="false"/>
|
||||||
|
<setting id="MCG.PLLS.sel" value="MCG.PLL" locked="false"/>
|
||||||
|
<setting id="MCG.PRDIV.scale" value="4" locked="false"/>
|
||||||
|
<setting id="MCG.VDIV.scale" value="30" locked="false"/>
|
||||||
|
<setting id="MCG_C2_RANGE0_CFG" value="Very_high" locked="false"/>
|
||||||
|
<setting id="MCG_C2_RANGE0_FRDIV_CFG" value="Very_high" locked="false"/>
|
||||||
|
<setting id="MCG_C5_PLLCLKEN0_CFG" value="Enabled" locked="false"/>
|
||||||
|
<setting id="RTC_CR_CLKO_CFG" value="Disabled" locked="false"/>
|
||||||
|
<setting id="RTC_CR_OSC_CAP_LOAD_CFG" value="SC10PF" locked="false"/>
|
||||||
|
<setting id="SIM.OUTDIV2.scale" value="2" locked="false"/>
|
||||||
|
<setting id="SIM.OUTDIV3.scale" value="3" locked="false"/>
|
||||||
|
<setting id="SIM.OUTDIV4.scale" value="5" locked="false"/>
|
||||||
|
<setting id="SIM.PLLFLLSEL.sel" value="MCG.MCGPLLCLK" locked="false"/>
|
||||||
|
<setting id="SIM.USBDIV.scale" value="5" locked="false"/>
|
||||||
|
<setting id="SIM.USBFRAC.scale" value="2" locked="false"/>
|
||||||
|
<setting id="SIM.USBSRCSEL.sel" value="SIM.USBDIV" locked="false"/>
|
||||||
|
<setting id="USBClkConfig" value="yes" locked="false"/>
|
||||||
|
</clock_settings>
|
||||||
|
<called_from_default_init>true</called_from_default_init>
|
||||||
|
</clock_configuration>
|
||||||
|
</clock_configurations>
|
||||||
|
</clocks>
|
||||||
|
<dcdx name="DCDx" version="3.0" enabled="false" update_project_code="true">
|
||||||
|
<generated_project_files/>
|
||||||
|
<dcdx_profile>
|
||||||
|
<processor_version>N/A</processor_version>
|
||||||
|
</dcdx_profile>
|
||||||
|
<dcdx_configurations/>
|
||||||
|
</dcdx>
|
||||||
|
<periphs name="Peripherals" version="12.0" enabled="false" update_project_code="true">
|
||||||
|
<generated_project_files/>
|
||||||
|
<peripherals_profile>
|
||||||
|
<processor_version>13.0.1</processor_version>
|
||||||
|
</peripherals_profile>
|
||||||
|
<functional_groups>
|
||||||
|
<functional_group name="BOARD_InitPeripherals" uuid="7465f6d1-08aa-48d8-91d5-05023b3186dd" called_from_default_init="true" id_prefix="" core="core0">
|
||||||
|
<description></description>
|
||||||
|
<options/>
|
||||||
|
<dependencies/>
|
||||||
|
<instances>
|
||||||
|
<instance name="NVIC" uuid="84184268-649a-4026-9585-21289f314135" type="nvic" type_id="nvic_57b5eef3774cc60acaede6f5b8bddc67" mode="general" peripheral="NVIC" enabled="true" comment="" custom_name_enabled="false" editing_lock="false">
|
||||||
|
<config_set name="nvic">
|
||||||
|
<array name="interrupt_table"/>
|
||||||
|
<array name="interrupts"/>
|
||||||
|
</config_set>
|
||||||
|
</instance>
|
||||||
|
</instances>
|
||||||
|
</functional_group>
|
||||||
|
</functional_groups>
|
||||||
|
<components>
|
||||||
|
<component name="system" uuid="069bcce2-44e2-4d92-af51-398354938128" type_id="system_54b53072540eeeb8f8e9343e71f28176">
|
||||||
|
<config_set_global name="global_system_definitions">
|
||||||
|
<setting name="user_definitions" value=""/>
|
||||||
|
<setting name="user_includes" value=""/>
|
||||||
|
</config_set_global>
|
||||||
|
</component>
|
||||||
|
<component name="msg" uuid="53b11db5-341e-452e-9e8e-d62a780aca7b" type_id="msg_6e2baaf3b97dbeef01c0043275f9a0e7">
|
||||||
|
<config_set_global name="global_messages"/>
|
||||||
|
</component>
|
||||||
|
<component name="gpio_adapter_common" uuid="038e164b-8b7a-4d53-8d64-b52445aa6477" type_id="gpio_adapter_common_57579b9ac814fe26bf95df0a384c36b6">
|
||||||
|
<config_set_global name="global_gpio_adapter_common" quick_selection="default"/>
|
||||||
|
</component>
|
||||||
|
<component name="generic_uart" uuid="e2176f5e-bfae-44bf-9ae7-5253becdddfa" type_id="generic_uart_8cae00565451cf2346eb1b8c624e73a6">
|
||||||
|
<config_set_global name="global_uart"/>
|
||||||
|
</component>
|
||||||
|
<component name="generic_can" uuid="a8335235-50ea-4aca-a006-aa73fcd95f74" type_id="generic_can_1bfdd78b1af214566c1f23cf6a582d80">
|
||||||
|
<config_set_global name="global_can"/>
|
||||||
|
</component>
|
||||||
|
<component name="uart_cmsis_common" uuid="dd55e60e-66c0-4980-808e-fe1c012d40fc" type_id="uart_cmsis_common_9cb8e302497aa696fdbb5a4fd622c2a8">
|
||||||
|
<config_set_global name="global_USART_CMSIS_common" quick_selection="default"/>
|
||||||
|
</component>
|
||||||
|
<component name="generic_enet" uuid="1a0aebd1-595c-442c-9741-c377be3f6029" type_id="generic_enet_74db5c914f0ddbe47d86af40cb77a619">
|
||||||
|
<config_set_global name="global_enet"/>
|
||||||
|
</component>
|
||||||
|
</components>
|
||||||
|
</periphs>
|
||||||
|
<tee name="TEE" version="4.0" enabled="false" update_project_code="true">
|
||||||
|
<generated_project_files/>
|
||||||
|
<tee_profile>
|
||||||
|
<processor_version>N/A</processor_version>
|
||||||
|
</tee_profile>
|
||||||
|
</tee>
|
||||||
|
</tools>
|
||||||
|
</configuration>
|
142
hw/bsp/kinetis_k/family.c
Normal file
142
hw/bsp/kinetis_k/family.c
Normal file
@ -0,0 +1,142 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2018, hathach (tinyusb.org)
|
||||||
|
* Copyright (c) 2020, Koji Kitayama
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "bsp/board.h"
|
||||||
|
#include "board.h"
|
||||||
|
#include "fsl_device_registers.h"
|
||||||
|
#include "fsl_gpio.h"
|
||||||
|
#include "fsl_port.h"
|
||||||
|
#include "fsl_clock.h"
|
||||||
|
#include "fsl_uart.h"
|
||||||
|
|
||||||
|
#include "board/clock_config.h"
|
||||||
|
#include "board/pin_mux.h"
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Forward USB interrupt events to TinyUSB IRQ Handler
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
void USB0_IRQHandler(void) {
|
||||||
|
#if CFG_TUH_ENABLED
|
||||||
|
tuh_int_handler(0);
|
||||||
|
#endif
|
||||||
|
#if CFG_TUD_ENABLED
|
||||||
|
tud_int_handler(0);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void board_init(void) {
|
||||||
|
BOARD_InitBootPins();
|
||||||
|
BOARD_BootClockRUN();
|
||||||
|
SystemCoreClockUpdate();
|
||||||
|
|
||||||
|
#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(USB0_IRQn, configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
// LED
|
||||||
|
gpio_pin_config_t led_config = { kGPIO_DigitalOutput, 0 };
|
||||||
|
GPIO_PinInit(LED_PORT, LED_PIN, &led_config);
|
||||||
|
board_led_write(false);
|
||||||
|
|
||||||
|
#if defined(BUTTON_PORT) && defined(BUTTON_PIN)
|
||||||
|
// Button
|
||||||
|
CLOCK_EnableClock(BUTTON_PIN_CLOCK);
|
||||||
|
port_pin_config_t button_port = {
|
||||||
|
.pullSelect = kPORT_PullUp,
|
||||||
|
.mux = BUTTON_PIN_FUNCTION,
|
||||||
|
};
|
||||||
|
PORT_SetPinConfig(BUTTON_PIN_PORT, BUTTON_PIN, &button_port);
|
||||||
|
gpio_pin_config_t button_config = { kGPIO_DigitalInput, 0 };
|
||||||
|
GPIO_PinInit(BUTTON_PORT, BUTTON_PIN, &button_config);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// UART
|
||||||
|
CLOCK_EnableClock(UART_PIN_CLOCK);
|
||||||
|
PORT_SetPinMux(UART_PIN_PORT, UART_PIN_RX, UART_PIN_FUNCTION);
|
||||||
|
PORT_SetPinMux(UART_PIN_PORT, UART_PIN_TX, UART_PIN_FUNCTION);
|
||||||
|
SIM->SOPT5 = ((SIM->SOPT5 &
|
||||||
|
(~(SIM_SOPT5_UART0TXSRC_MASK | SIM_SOPT5_UART0RXSRC_MASK)))
|
||||||
|
| SIM_SOPT5_UART0TXSRC(SOPT5_UART0TXSRC_UART_TX)
|
||||||
|
| SIM_SOPT5_UART0RXSRC(SOPT5_UART0RXSRC_UART_RX)
|
||||||
|
);
|
||||||
|
|
||||||
|
lpuart_config_t uart_config;
|
||||||
|
LPUART_GetDefaultConfig(&uart_config);
|
||||||
|
uart_config.baudRate_Bps = CFG_BOARD_UART_BAUDRATE;
|
||||||
|
uart_config.enableTx = true;
|
||||||
|
uart_config.enableRx = true;
|
||||||
|
LPUART_Init(UART_PORT, &uart_config, CLOCK_GetFreq(kCLOCK_McgIrc48MClk));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// USB
|
||||||
|
CLOCK_EnableUsbfs0Clock(kCLOCK_UsbSrcPll0, CLOCK_GetFreq(kCLOCK_PllFllSelClk));
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
// Board porting API
|
||||||
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
|
void board_led_write(bool state) {
|
||||||
|
GPIO_PinWrite(LED_PORT, LED_PIN, state ? LED_STATE_ON : (1 - LED_STATE_ON));
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t board_button_read(void) {
|
||||||
|
#if defined(BUTTON_PORT) && defined(BUTTON_PIN)
|
||||||
|
return BUTTON_STATE_ACTIVE == GPIO_PinRead(BUTTON_PORT, BUTTON_PIN);
|
||||||
|
#else
|
||||||
|
return 0;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int board_uart_read(uint8_t *buf, int len) {
|
||||||
|
(void) buf;
|
||||||
|
(void) len;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int board_uart_write(void const *buf, int len) {
|
||||||
|
(void) buf;
|
||||||
|
(void) len;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#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
|
112
hw/bsp/kinetis_k/family.cmake
Normal file
112
hw/bsp/kinetis_k/family.cmake
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
include_guard()
|
||||||
|
|
||||||
|
if (NOT BOARD)
|
||||||
|
message(FATAL_ERROR "BOARD not specified")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
set(SDK_DIR ${TOP}/hw/mcu/nxp/mcux-sdk)
|
||||||
|
set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
|
||||||
|
|
||||||
|
# include board specific
|
||||||
|
include(${CMAKE_CURRENT_LIST_DIR}/boards/${BOARD}/board.cmake)
|
||||||
|
|
||||||
|
# toolchain set up
|
||||||
|
set(CMAKE_SYSTEM_PROCESSOR cortex-m4 CACHE INTERNAL "System Processor")
|
||||||
|
set(CMAKE_TOOLCHAIN_FILE ${TOP}/tools/cmake/toolchain/arm_${TOOLCHAIN}.cmake)
|
||||||
|
|
||||||
|
set(FAMILY_MCUS KINETIS_K CACHE INTERNAL "")
|
||||||
|
|
||||||
|
|
||||||
|
#------------------------------------
|
||||||
|
# BOARD_TARGET
|
||||||
|
#------------------------------------
|
||||||
|
# only need to be built ONCE for all examples
|
||||||
|
function(add_board_target BOARD_TARGET)
|
||||||
|
if (NOT TARGET ${BOARD_TARGET})
|
||||||
|
add_library(${BOARD_TARGET} STATIC
|
||||||
|
# driver
|
||||||
|
${SDK_DIR}/drivers/gpio/fsl_gpio.c
|
||||||
|
${SDK_DIR}/drivers/uart/fsl_uart.c
|
||||||
|
${SDK_DIR}/devices/${MCU_VARIANT}/drivers/fsl_clock.c
|
||||||
|
${SDK_DIR}/devices/${MCU_VARIANT}/system_${MCU_VARIANT}.c
|
||||||
|
)
|
||||||
|
target_compile_definitions(${BOARD_TARGET} PUBLIC
|
||||||
|
)
|
||||||
|
target_include_directories(${BOARD_TARGET} PUBLIC
|
||||||
|
${CMSIS_DIR}/CMSIS/Core/Include
|
||||||
|
${SDK_DIR}/devices/${MCU_VARIANT}
|
||||||
|
${SDK_DIR}/devices/${MCU_VARIANT}/drivers
|
||||||
|
${SDK_DIR}/drivers/common
|
||||||
|
${SDK_DIR}/drivers/gpio
|
||||||
|
${SDK_DIR}/drivers/port
|
||||||
|
${SDK_DIR}/drivers/smc
|
||||||
|
${SDK_DIR}/drivers/uart
|
||||||
|
)
|
||||||
|
|
||||||
|
update_board(${BOARD_TARGET})
|
||||||
|
|
||||||
|
# LD_FILE and STARTUP_FILE can be defined in board.cmake
|
||||||
|
set(STARTUP_FILE_GNU ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S)
|
||||||
|
|
||||||
|
target_sources(${BOARD_TARGET} PUBLIC
|
||||||
|
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
|
"LINKER:--script=${LD_FILE_GNU}"
|
||||||
|
# nanolib
|
||||||
|
--specs=nosys.specs
|
||||||
|
--specs=nano.specs
|
||||||
|
)
|
||||||
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
||||||
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
|
"LINKER:--config=${LD_FILE_IAR}"
|
||||||
|
)
|
||||||
|
endif ()
|
||||||
|
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}
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add TinyUSB target and port source
|
||||||
|
family_add_tinyusb(${TARGET} OPT_MCU_KINETIS_K ${RTOS})
|
||||||
|
target_sources(${TARGET}-tinyusb PUBLIC
|
||||||
|
${TOP}/src/portable/chipidea/ci_fs/dcd_ci_fs.c
|
||||||
|
${TOP}/src/portable/nxp/khci/hcd_khci.c
|
||||||
|
)
|
||||||
|
target_link_libraries(${TARGET}-tinyusb PUBLIC board_${BOARD})
|
||||||
|
|
||||||
|
# Link dependencies
|
||||||
|
target_link_libraries(${TARGET} PUBLIC board_${BOARD} ${TARGET}-tinyusb)
|
||||||
|
|
||||||
|
# Flashing
|
||||||
|
family_flash_jlink(${TARGET})
|
||||||
|
|
||||||
|
if (DEFINED TEENSY_MCU)
|
||||||
|
family_add_bin_hex(${TARGET})
|
||||||
|
family_flash_teensy(${TARGET})
|
||||||
|
endif ()
|
||||||
|
endfunction()
|
34
hw/bsp/kinetis_k/family.mk
Normal file
34
hw/bsp/kinetis_k/family.mk
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
SDK_DIR = hw/mcu/nxp/mcux-sdk
|
||||||
|
DEPS_SUBMODULES += $(SDK_DIR) lib/CMSIS_5
|
||||||
|
|
||||||
|
MCU_DIR = $(SDK_DIR)/devices/${MCU_VARIANT}
|
||||||
|
include $(TOP)/$(BOARD_PATH)/board.mk
|
||||||
|
CPU_CORE ?= cortex-m4
|
||||||
|
|
||||||
|
CFLAGS += \
|
||||||
|
-DCFG_TUSB_MCU=OPT_MCU_KINETIS_K \
|
||||||
|
|
||||||
|
LDFLAGS += \
|
||||||
|
-Wl,--defsym,__stack_size__=0x400 \
|
||||||
|
-Wl,--defsym,__heap_size__=0
|
||||||
|
|
||||||
|
SRC_C += \
|
||||||
|
src/portable/nxp/khci/dcd_khci.c \
|
||||||
|
src/portable/nxp/khci/hcd_khci.c \
|
||||||
|
$(MCU_DIR)/system_${MCU_VARIANT}.c \
|
||||||
|
$(MCU_DIR)/drivers/fsl_clock.c \
|
||||||
|
$(SDK_DIR)/drivers/gpio/fsl_gpio.c \
|
||||||
|
$(SDK_DIR)/drivers/uart/fsl_uart.c \
|
||||||
|
|
||||||
|
INC += \
|
||||||
|
$(TOP)/$(BOARD_PATH) \
|
||||||
|
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
|
||||||
|
$(TOP)/$(MCU_DIR) \
|
||||||
|
$(TOP)/$(MCU_DIR)/drivers \
|
||||||
|
$(TOP)/$(SDK_DIR)/drivers/common \
|
||||||
|
$(TOP)/$(SDK_DIR)/drivers/gpio \
|
||||||
|
$(TOP)/$(SDK_DIR)/drivers/port \
|
||||||
|
$(TOP)/$(SDK_DIR)/drivers/smc \
|
||||||
|
$(TOP)/$(SDK_DIR)/drivers/uart \
|
||||||
|
|
||||||
|
SRC_S += ${SDK_DIR}/devices/${MCU_VARIANT}/gcc/startup_${MCU_VARIANT}.S
|
@ -52,7 +52,7 @@ deps_optional = {
|
|||||||
'lpc11 lpc13 lpc15 lpc17 lpc18 lpc40 lpc43'],
|
'lpc11 lpc13 lpc15 lpc17 lpc18 lpc40 lpc43'],
|
||||||
'hw/mcu/nxp/mcux-sdk': ['https://github.com/hathach/mcux-sdk.git',
|
'hw/mcu/nxp/mcux-sdk': ['https://github.com/hathach/mcux-sdk.git',
|
||||||
'950819b7de9b32f92c3edf396bc5ffb8d66e7009',
|
'950819b7de9b32f92c3edf396bc5ffb8d66e7009',
|
||||||
'kinetis_k32l2 kinetis_kl lpc51 lpc54 lpc55 mcx imxrt'],
|
'kinetis_k kinetis_k32l2 kinetis_kl lpc51 lpc54 lpc55 mcx imxrt'],
|
||||||
'hw/mcu/raspberry_pi/Pico-PIO-USB': ['https://github.com/sekigon-gonnoc/Pico-PIO-USB.git',
|
'hw/mcu/raspberry_pi/Pico-PIO-USB': ['https://github.com/sekigon-gonnoc/Pico-PIO-USB.git',
|
||||||
'58879cfa0eca5725d8db6443ec17f8896a321042',
|
'58879cfa0eca5725d8db6443ec17f8896a321042',
|
||||||
'rp2040'],
|
'rp2040'],
|
||||||
|
Loading…
x
Reference in New Issue
Block a user