kind of work with zephyr with pca10056 with cmake -DBUILD_ZEPHYR
This commit is contained in:
3
.idea/cmake.xml
generated
3
.idea/cmake.xml
generated
@@ -85,7 +85,8 @@
|
|||||||
<configuration PROFILE_NAME="same54_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=same54_xplained -DLOG=1 -DLOGGER=RTT" />
|
<configuration PROFILE_NAME="same54_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=same54_xplained -DLOG=1 -DLOGGER=RTT" />
|
||||||
<configuration PROFILE_NAME="samg55_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=samg55_xplained" />
|
<configuration PROFILE_NAME="samg55_xplained" ENABLED="false" GENERATION_OPTIONS="-DBOARD=samg55_xplained" />
|
||||||
<configuration PROFILE_NAME="feather_nrf52840_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_nrf52840_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
|
<configuration PROFILE_NAME="feather_nrf52840_express" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=feather_nrf52840_express -DLOG=1 -DLOGGER=RTT -DMAX3421_HOST=1" />
|
||||||
<configuration PROFILE_NAME="pca10056" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10056 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
<configuration PROFILE_NAME="pca10056" ENABLED="true" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10056 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
|
<configuration PROFILE_NAME="pca10056-zephyr" ENABLED="true" CONFIG_NAME="Debug" TOOLCHAIN_NAME="arm-zephyr" GENERATION_OPTIONS="-DBOARD=pca10056 -DLOG=1 -DTRACE_ETM=1 -DBUILD_ZEPHYR=1" BUILD_OPTIONS="-v" />
|
||||||
<configuration PROFILE_NAME="pca10095" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10095 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
<configuration PROFILE_NAME="pca10095" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=pca10095 -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="metro m7 1011 sd" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011_sd -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
<configuration PROFILE_NAME="metro m7 1011 sd" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011_sd -DLOG=1 -DLOGGER=RTT -DTRACE_ETM=1" />
|
||||||
<configuration PROFILE_NAME="metro_m7_1011" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011 -DLOG=1 -DLOGGER=RTT" />
|
<configuration PROFILE_NAME="metro_m7_1011" ENABLED="false" CONFIG_NAME="Debug" GENERATION_OPTIONS="-DBOARD=metro_m7_1011 -DLOG=1 -DLOGGER=RTT" />
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
[manifest]
|
[manifest]
|
||||||
path = examples
|
path = lib/zephyr
|
||||||
file = west.yml
|
file = west.yml
|
||||||
|
|
||||||
[zephyr]
|
[zephyr]
|
||||||
|
@@ -1,3 +1,7 @@
|
|||||||
|
if (BUILD_ZEPHYR)
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
|
||||||
include(CMakePrintHelpers)
|
include(CMakePrintHelpers)
|
||||||
|
|
||||||
# ----------------------------------------------------------------------------
|
# ----------------------------------------------------------------------------
|
||||||
|
@@ -185,7 +185,7 @@ static void fill_color_bar(uint8_t* buffer, unsigned start_position) {
|
|||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void video_send_frame(void) {
|
static void video_send_frame(void) {
|
||||||
static unsigned start_ms = 0;
|
static unsigned start_ms = 0;
|
||||||
static unsigned already_sent = 0;
|
static unsigned already_sent = 0;
|
||||||
|
|
||||||
|
@@ -62,15 +62,13 @@
|
|||||||
#include "bsp/board_api.h"
|
#include "bsp/board_api.h"
|
||||||
#include "tusb.h"
|
#include "tusb.h"
|
||||||
|
|
||||||
|
#include "msc_app.h"
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// MACRO CONSTANT TYPEDEF PROTYPES
|
// MACRO CONSTANT TYPEDEF PROTYPES
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
void led_blinking_task(void);
|
void led_blinking_task(void);
|
||||||
|
|
||||||
// from msc_app.c
|
|
||||||
extern bool msc_app_init(void);
|
|
||||||
extern void msc_app_task(void);
|
|
||||||
|
|
||||||
/*------------- MAIN -------------*/
|
/*------------- MAIN -------------*/
|
||||||
int main(void) {
|
int main(void) {
|
||||||
board_init();
|
board_init();
|
||||||
|
@@ -67,7 +67,9 @@ bool cli_init(void);
|
|||||||
|
|
||||||
bool msc_app_init(void)
|
bool msc_app_init(void)
|
||||||
{
|
{
|
||||||
for(size_t i=0; i<CFG_TUH_DEVICE_MAX; i++) _disk_busy[i] = false;
|
for(size_t i=0; i<CFG_TUH_DEVICE_MAX; i++) {
|
||||||
|
_disk_busy[i] = false;
|
||||||
|
}
|
||||||
|
|
||||||
// disable stdout buffered for echoing typing command
|
// disable stdout buffered for echoing typing command
|
||||||
#ifndef __ICCARM__ // TODO IAR doesn't support stream control ?
|
#ifndef __ICCARM__ // TODO IAR doesn't support stream control ?
|
||||||
@@ -81,7 +83,9 @@ bool msc_app_init(void)
|
|||||||
|
|
||||||
void msc_app_task(void)
|
void msc_app_task(void)
|
||||||
{
|
{
|
||||||
if (!_cli) return;
|
if (!_cli) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
int ch = board_getchar();
|
int ch = board_getchar();
|
||||||
if ( ch > 0 )
|
if ( ch > 0 )
|
||||||
@@ -99,8 +103,7 @@ void msc_app_task(void)
|
|||||||
//
|
//
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data)
|
static bool inquiry_complete_cb(uint8_t dev_addr, tuh_msc_complete_data_t const * cb_data) {
|
||||||
{
|
|
||||||
msc_cbw_t const* cbw = cb_data->cbw;
|
msc_cbw_t const* cbw = cb_data->cbw;
|
||||||
msc_csw_t const* csw = cb_data->csw;
|
msc_csw_t const* csw = cb_data->csw;
|
||||||
|
|
||||||
@@ -294,18 +297,11 @@ void cli_cmd_mkdir(EmbeddedCli *cli, char *args, void *context);
|
|||||||
void cli_cmd_mv(EmbeddedCli *cli, char *args, void *context);
|
void cli_cmd_mv(EmbeddedCli *cli, char *args, void *context);
|
||||||
void cli_cmd_rm(EmbeddedCli *cli, char *args, void *context);
|
void cli_cmd_rm(EmbeddedCli *cli, char *args, void *context);
|
||||||
|
|
||||||
void cli_write_char(EmbeddedCli *cli, char c)
|
static void cli_write_char(EmbeddedCli *cli, char c) {
|
||||||
{
|
|
||||||
(void) cli;
|
(void) cli;
|
||||||
putchar((int) c);
|
putchar((int) c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void cli_cmd_unknown(EmbeddedCli *cli, CliCommand *command)
|
|
||||||
{
|
|
||||||
(void) cli;
|
|
||||||
printf("%s: command not found\r\n", command->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool cli_init(void)
|
bool cli_init(void)
|
||||||
{
|
{
|
||||||
EmbeddedCliConfig *config = embeddedCliDefaultConfig();
|
EmbeddedCliConfig *config = embeddedCliDefaultConfig();
|
||||||
|
35
examples/host/msc_file_explorer/src/msc_app.h
Normal file
35
examples/host/msc_file_explorer/src/msc_app.h
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2025 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.
|
||||||
|
*
|
||||||
|
* This file is part of the TinyUSB stack.
|
||||||
|
*/
|
||||||
|
#ifndef MSC_APP_H
|
||||||
|
#define MSC_APP_H
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
|
bool msc_app_init(void);
|
||||||
|
void msc_app_task(void);
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
@@ -1,12 +0,0 @@
|
|||||||
manifest:
|
|
||||||
remotes:
|
|
||||||
- name: zephyrproject-rtos
|
|
||||||
url-base: https://github.com/zephyrproject-rtos
|
|
||||||
projects:
|
|
||||||
- name: zephyr
|
|
||||||
remote: zephyrproject-rtos
|
|
||||||
revision: v4.0.0
|
|
||||||
path: lib/zephyr
|
|
||||||
import: true
|
|
||||||
self:
|
|
||||||
path: .
|
|
@@ -170,7 +170,7 @@ function(family_add_rtos TARGET RTOS)
|
|||||||
elseif (RTOS STREQUAL "zephyr")
|
elseif (RTOS STREQUAL "zephyr")
|
||||||
target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_ZEPHYR)
|
target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_ZEPHYR)
|
||||||
target_include_directories(${TARGET} PUBLIC ${ZEPHYR_BASE}/include)
|
target_include_directories(${TARGET} PUBLIC ${ZEPHYR_BASE}/include)
|
||||||
target_link_libraries(${TARGET} PUBLIC zephyr_interface kernel)
|
# target_link_libraries(${TARGET} PUBLIC kernel)
|
||||||
endif ()
|
endif ()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
@@ -201,12 +201,9 @@ function(family_configure_common TARGET RTOS)
|
|||||||
target_compile_definitions(${TARGET} PUBLIC LOGGER_${LOGGER})
|
target_compile_definitions(${TARGET} PUBLIC LOGGER_${LOGGER})
|
||||||
# Add segger rtt to example
|
# Add segger rtt to example
|
||||||
if(LOGGER STREQUAL "RTT" OR LOGGER STREQUAL "rtt")
|
if(LOGGER STREQUAL "RTT" OR LOGGER STREQUAL "rtt")
|
||||||
if (NOT TARGET segger_rtt)
|
target_sources(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
|
||||||
add_library(segger_rtt STATIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
|
target_include_directories(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
|
||||||
target_include_directories(segger_rtt PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
|
# target_compile_definitions(${TARGET} PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
|
||||||
# target_compile_definitions(segger_rtt PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
|
|
||||||
endif()
|
|
||||||
target_link_libraries(${TARGET} PUBLIC segger_rtt)
|
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
@@ -239,7 +236,8 @@ function(family_configure_common TARGET RTOS)
|
|||||||
-Wmissing-prototypes
|
-Wmissing-prototypes
|
||||||
)
|
)
|
||||||
target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
|
target_link_options(${TARGET} PUBLIC "LINKER:-Map=$<TARGET_FILE:${TARGET}>.map")
|
||||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0 AND NO_WARN_RWX_SEGMENTS_SUPPORTED)
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU" AND CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0
|
||||||
|
AND NO_WARN_RWX_SEGMENTS_SUPPORTED AND (NOT BUILD_ZEPHYR))
|
||||||
target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
||||||
endif ()
|
endif ()
|
||||||
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
||||||
@@ -255,7 +253,7 @@ function(family_configure_common TARGET RTOS)
|
|||||||
# endif ()
|
# endif ()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
||||||
# Add tinyusb to target with RTOS
|
# Add tinyusb to target (TODO remove RTOS)
|
||||||
function(family_add_tinyusb TARGET OPT_MCU RTOS)
|
function(family_add_tinyusb TARGET OPT_MCU RTOS)
|
||||||
# tinyusb's CMakeList.txt
|
# tinyusb's CMakeList.txt
|
||||||
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
|
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
|
||||||
@@ -364,7 +362,7 @@ function(family_add_default_example_warnings TARGET)
|
|||||||
|
|
||||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0 AND NO_WARN_RWX_SEGMENTS_SUPPORTED)
|
if (CMAKE_C_COMPILER_VERSION VERSION_GREATER_EQUAL 12.0 AND NO_WARN_RWX_SEGMENTS_SUPPORTED)
|
||||||
# target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
target_link_options(${TARGET} PUBLIC "LINKER:--no-warn-rwx-segments")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# GCC 10
|
# GCC 10
|
||||||
|
@@ -2,6 +2,6 @@ set(MCU_VARIANT nrf5340_application)
|
|||||||
|
|
||||||
function(update_board TARGET)
|
function(update_board TARGET)
|
||||||
target_sources(${TARGET} PRIVATE
|
target_sources(${TARGET} PRIVATE
|
||||||
${NRFX_DIR}/drivers/src/nrfx_usbreg.c
|
${NRFX_PATH}/drivers/src/nrfx_usbreg.c
|
||||||
)
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -44,10 +44,10 @@
|
|||||||
|
|
||||||
#include "nrfx.h"
|
#include "nrfx.h"
|
||||||
#include "hal/nrf_gpio.h"
|
#include "hal/nrf_gpio.h"
|
||||||
#include "drivers/include/nrfx_gpiote.h"
|
#include "nrfx_gpiote.h"
|
||||||
#include "drivers/include/nrfx_power.h"
|
#include "nrfx_power.h"
|
||||||
#include "drivers/include/nrfx_uarte.h"
|
#include "nrfx_uarte.h"
|
||||||
#include "drivers/include/nrfx_spim.h"
|
#include "nrfx_spim.h"
|
||||||
|
|
||||||
#ifdef SOFTDEVICE_PRESENT
|
#ifdef SOFTDEVICE_PRESENT
|
||||||
#include "nrf_sdm.h"
|
#include "nrf_sdm.h"
|
||||||
@@ -67,8 +67,6 @@
|
|||||||
#define NRFX_VER 3
|
#define NRFX_VER 3
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern void nrfx_isr(const void *irq_handler);
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Forward USB interrupt events to TinyUSB IRQ Handler
|
// Forward USB interrupt events to TinyUSB IRQ Handler
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
@@ -148,12 +146,10 @@ void board_init(void) {
|
|||||||
// irq_enable(USBREGULATOR_IRQn);
|
// irq_enable(USBREGULATOR_IRQn);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// IRQ_CONNECT(CLOCK_POWER_IRQn, 0, nrfx_isr, nrfx_power_irq_handler, 0);
|
|
||||||
|
|
||||||
/* USB device controller access from devicetree */
|
/* USB device controller access from devicetree */
|
||||||
// #define DT_DRV_COMPAT nordic_nrf_usbd
|
#define DT_DRV_COMPAT nordic_nrf_usbd
|
||||||
// IRQ_CONNECT(DT_INST_IRQN(0), DT_INST_IRQ(0, priority), nrfx_isr, nrf_usbd_common_irq_handler, 0);
|
IRQ_CONNECT(DT_INST_IRQN(0), DT_INST_IRQ(0, priority), nrfx_isr, USBD_IRQHandler, 0);
|
||||||
|
irq_enable(DT_INST_IRQN(0));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// UART
|
// UART
|
||||||
@@ -187,7 +183,7 @@ void board_init(void) {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
nrfx_uarte_init(&_uart_id, &uart_cfg, NULL); //uart_handler);
|
nrfx_uarte_init(&_uart_id, &uart_cfg, NULL);
|
||||||
|
|
||||||
//------------- USB -------------//
|
//------------- USB -------------//
|
||||||
#if CFG_TUD_ENABLED
|
#if CFG_TUD_ENABLED
|
||||||
@@ -231,8 +227,12 @@ void board_init(void) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( usb_reg & VBUSDETECT_Msk ) tusb_hal_nrf_power_event(USB_EVT_DETECTED);
|
if ( usb_reg & VBUSDETECT_Msk ) {
|
||||||
if ( usb_reg & OUTPUTRDY_Msk ) tusb_hal_nrf_power_event(USB_EVT_READY);
|
tusb_hal_nrf_power_event(USB_EVT_DETECTED);
|
||||||
|
}
|
||||||
|
if ( usb_reg & OUTPUTRDY_Msk ) {
|
||||||
|
tusb_hal_nrf_power_event(USB_EVT_READY);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CFG_TUH_ENABLED && defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421
|
#if CFG_TUH_ENABLED && defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421
|
||||||
@@ -244,7 +244,6 @@ void board_init(void) {
|
|||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
// Board porting API
|
// Board porting API
|
||||||
//--------------------------------------------------------------------+
|
//--------------------------------------------------------------------+
|
||||||
|
|
||||||
void board_led_write(bool state) {
|
void board_led_write(bool state) {
|
||||||
nrf_gpio_pin_write(LED_PIN, state ? LED_STATE_ON : (1 - LED_STATE_ON));
|
nrf_gpio_pin_write(LED_PIN, state ? LED_STATE_ON : (1 - LED_STATE_ON));
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
include_guard()
|
include_guard()
|
||||||
|
|
||||||
set(NRFX_DIR ${TOP}/hw/mcu/nordic/nrfx)
|
set(NRFX_PATH ${TOP}/hw/mcu/nordic/nrfx)
|
||||||
set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
|
set(CMSIS_DIR ${TOP}/lib/CMSIS_5)
|
||||||
|
|
||||||
# include board specific
|
# include board specific
|
||||||
@@ -25,6 +25,10 @@ set(FAMILY_MCUS NRF5X CACHE INTERNAL "")
|
|||||||
#------------------------------------
|
#------------------------------------
|
||||||
# only need to be built ONCE for all examples
|
# only need to be built ONCE for all examples
|
||||||
function(add_board_target BOARD_TARGET)
|
function(add_board_target BOARD_TARGET)
|
||||||
|
if (BUILD_ZEPHYR)
|
||||||
|
return()
|
||||||
|
endif ()
|
||||||
|
|
||||||
if (TARGET ${BOARD_TARGET})
|
if (TARGET ${BOARD_TARGET})
|
||||||
return()
|
return()
|
||||||
endif ()
|
endif ()
|
||||||
@@ -40,18 +44,18 @@ function(add_board_target BOARD_TARGET)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
|
if (NOT DEFINED STARTUP_FILE_${CMAKE_C_COMPILER_ID})
|
||||||
set(STARTUP_FILE_GNU ${NRFX_DIR}/mdk/gcc_startup_${MCU_VARIANT}.S)
|
set(STARTUP_FILE_GNU ${NRFX_PATH}/mdk/gcc_startup_${MCU_VARIANT}.S)
|
||||||
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
|
set(STARTUP_FILE_Clang ${STARTUP_FILE_GNU})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
add_library(${BOARD_TARGET} STATIC
|
add_library(${BOARD_TARGET} STATIC
|
||||||
${NRFX_DIR}/helpers/nrfx_flag32_allocator.c
|
${NRFX_PATH}/helpers/nrfx_flag32_allocator.c
|
||||||
${NRFX_DIR}/drivers/src/nrfx_gpiote.c
|
${NRFX_PATH}/drivers/src/nrfx_gpiote.c
|
||||||
${NRFX_DIR}/drivers/src/nrfx_power.c
|
${NRFX_PATH}/drivers/src/nrfx_power.c
|
||||||
${NRFX_DIR}/drivers/src/nrfx_spim.c
|
${NRFX_PATH}/drivers/src/nrfx_spim.c
|
||||||
${NRFX_DIR}/drivers/src/nrfx_uarte.c
|
${NRFX_PATH}/drivers/src/nrfx_uarte.c
|
||||||
${NRFX_DIR}/mdk/system_${MCU_VARIANT}.c
|
${NRFX_PATH}/mdk/system_${MCU_VARIANT}.c
|
||||||
${NRFX_DIR}/soc/nrfx_atomic.c
|
${NRFX_PATH}/soc/nrfx_atomic.c
|
||||||
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
|
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
|
||||||
)
|
)
|
||||||
string(TOUPPER "${MCU_VARIANT_XXAA}" MCU_VARIANT_XXAA_UPPER)
|
string(TOUPPER "${MCU_VARIANT_XXAA}" MCU_VARIANT_XXAA_UPPER)
|
||||||
@@ -67,12 +71,10 @@ function(add_board_target BOARD_TARGET)
|
|||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
target_include_directories(${BOARD_TARGET} PUBLIC
|
target_include_directories(${BOARD_TARGET} PUBLIC
|
||||||
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
|
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/nrfx_config
|
||||||
${NRFX_DIR}
|
${NRFX_PATH}
|
||||||
${NRFX_DIR}/mdk
|
${NRFX_PATH}/mdk
|
||||||
${NRFX_DIR}/hal
|
${NRFX_PATH}/drivers/include
|
||||||
${NRFX_DIR}/drivers/include
|
|
||||||
${NRFX_DIR}/drivers/src
|
|
||||||
${CMSIS_DIR}/CMSIS/Core/Include
|
${CMSIS_DIR}/CMSIS/Core/Include
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -81,14 +83,14 @@ function(add_board_target BOARD_TARGET)
|
|||||||
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
|
||||||
target_link_options(${BOARD_TARGET} PUBLIC
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
"LINKER:--script=${LD_FILE_GNU}"
|
"LINKER:--script=${LD_FILE_GNU}"
|
||||||
-L${NRFX_DIR}/mdk
|
-L${NRFX_PATH}/mdk
|
||||||
--specs=nosys.specs --specs=nano.specs
|
--specs=nosys.specs --specs=nano.specs
|
||||||
-nostartfiles
|
-nostartfiles
|
||||||
)
|
)
|
||||||
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
|
||||||
target_link_options(${BOARD_TARGET} PUBLIC
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
"LINKER:--script=${LD_FILE_GNU}"
|
"LINKER:--script=${LD_FILE_GNU}"
|
||||||
-L${NRFX_DIR}/mdk
|
-L${NRFX_PATH}/mdk
|
||||||
)
|
)
|
||||||
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
|
||||||
target_link_options(${BOARD_TARGET} PUBLIC
|
target_link_options(${BOARD_TARGET} PUBLIC
|
||||||
@@ -113,6 +115,9 @@ endfunction()
|
|||||||
function(family_configure_example TARGET RTOS)
|
function(family_configure_example TARGET RTOS)
|
||||||
# Board target
|
# Board target
|
||||||
add_board_target(board_${BOARD})
|
add_board_target(board_${BOARD})
|
||||||
|
if (NOT BUILD_ZEPHYR)
|
||||||
|
target_link_libraries(${TARGET} PUBLIC board_${BOARD})
|
||||||
|
endif ()
|
||||||
|
|
||||||
family_configure_common(${TARGET} ${RTOS})
|
family_configure_common(${TARGET} ${RTOS})
|
||||||
|
|
||||||
@@ -132,16 +137,10 @@ function(family_configure_example TARGET RTOS)
|
|||||||
|
|
||||||
# Add TinyUSB target and port source
|
# Add TinyUSB target and port source
|
||||||
family_add_tinyusb(${TARGET} OPT_MCU_NRF5X ${RTOS})
|
family_add_tinyusb(${TARGET} OPT_MCU_NRF5X ${RTOS})
|
||||||
target_sources(${TARGET} PUBLIC
|
target_sources(${TARGET} PRIVATE
|
||||||
${TOP}/src/portable/nordic/nrf5x/dcd_nrf5x.c
|
${TOP}/src/portable/nordic/nrf5x/dcd_nrf5x.c
|
||||||
)
|
)
|
||||||
|
|
||||||
# if (BUILD_ZEPHYR)
|
|
||||||
# target_link_libraries(${TARGET} PUBLIC zephyr_interface kernel)
|
|
||||||
# elseif ()
|
|
||||||
target_link_libraries(${TARGET} PUBLIC board_${BOARD})
|
|
||||||
# endif ()
|
|
||||||
|
|
||||||
# Flashing
|
# Flashing
|
||||||
# family_add_bin_hex(${TARGET})
|
# family_add_bin_hex(${TARGET})
|
||||||
family_flash_jlink(${TARGET})
|
family_flash_jlink(${TARGET})
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
UF2_FAMILY_ID = 0xADA52840
|
UF2_FAMILY_ID = 0xADA52840
|
||||||
|
|
||||||
NRFX_DIR = hw/mcu/nordic/nrfx
|
NRFX_PATH = hw/mcu/nordic/nrfx
|
||||||
|
|
||||||
include $(TOP)/$(BOARD_PATH)/board.mk
|
include $(TOP)/$(BOARD_PATH)/board.mk
|
||||||
|
|
||||||
@@ -28,31 +28,31 @@ CFLAGS_GCC += \
|
|||||||
LDFLAGS_GCC += \
|
LDFLAGS_GCC += \
|
||||||
-nostartfiles \
|
-nostartfiles \
|
||||||
--specs=nosys.specs --specs=nano.specs \
|
--specs=nosys.specs --specs=nano.specs \
|
||||||
-L$(TOP)/${NRFX_DIR}/mdk
|
-L$(TOP)/${NRFX_PATH}/mdk
|
||||||
|
|
||||||
LDFLAGS_CLANG += \
|
LDFLAGS_CLANG += \
|
||||||
-L$(TOP)/${NRFX_DIR}/mdk \
|
-L$(TOP)/${NRFX_PATH}/mdk \
|
||||||
|
|
||||||
SRC_C += \
|
SRC_C += \
|
||||||
src/portable/nordic/nrf5x/dcd_nrf5x.c \
|
src/portable/nordic/nrf5x/dcd_nrf5x.c \
|
||||||
${NRFX_DIR}/helpers/nrfx_flag32_allocator.c \
|
${NRFX_PATH}/helpers/nrfx_flag32_allocator.c \
|
||||||
${NRFX_DIR}/drivers/src/nrfx_gpiote.c \
|
${NRFX_PATH}/drivers/src/nrfx_gpiote.c \
|
||||||
${NRFX_DIR}/drivers/src/nrfx_power.c \
|
${NRFX_PATH}/drivers/src/nrfx_power.c \
|
||||||
${NRFX_DIR}/drivers/src/nrfx_spim.c \
|
${NRFX_PATH}/drivers/src/nrfx_spim.c \
|
||||||
${NRFX_DIR}/drivers/src/nrfx_uarte.c \
|
${NRFX_PATH}/drivers/src/nrfx_uarte.c \
|
||||||
${NRFX_DIR}/mdk/system_$(MCU_VARIANT).c \
|
${NRFX_PATH}/mdk/system_$(MCU_VARIANT).c \
|
||||||
${NRFX_DIR}/soc/nrfx_atomic.c
|
${NRFX_PATH}/soc/nrfx_atomic.c
|
||||||
|
|
||||||
INC += \
|
INC += \
|
||||||
$(TOP)/$(BOARD_PATH) \
|
$(TOP)/$(BOARD_PATH) \
|
||||||
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
|
$(TOP)/lib/CMSIS_5/CMSIS/Core/Include \
|
||||||
$(TOP)/${NRFX_DIR} \
|
$(TOP)/${NRFX_PATH} \
|
||||||
$(TOP)/${NRFX_DIR}/mdk \
|
$(TOP)/${NRFX_PATH}/mdk \
|
||||||
$(TOP)/${NRFX_DIR}/hal \
|
$(TOP)/${NRFX_PATH}/hal \
|
||||||
$(TOP)/${NRFX_DIR}/drivers/include \
|
$(TOP)/${NRFX_PATH}/drivers/include \
|
||||||
$(TOP)/${NRFX_DIR}/drivers/src \
|
$(TOP)/${NRFX_PATH}/drivers/src \
|
||||||
|
|
||||||
SRC_S += ${NRFX_DIR}/mdk/gcc_startup_$(MCU_VARIANT).S
|
SRC_S += ${NRFX_PATH}/mdk/gcc_startup_$(MCU_VARIANT).S
|
||||||
|
|
||||||
ASFLAGS += -D__HEAP_SIZE=0
|
ASFLAGS += -D__HEAP_SIZE=0
|
||||||
|
|
||||||
|
@@ -39,8 +39,8 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include "nrf.h"
|
#include "nrf.h"
|
||||||
#include "nrf_clock.h"
|
#include "nrfx_clock.h"
|
||||||
#include "nrfx_usbd_errata.h"
|
#include "nrf_erratas.h"
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#pragma GCC diagnostic pop
|
#pragma GCC diagnostic pop
|
||||||
@@ -926,7 +926,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
|
|||||||
|
|
||||||
#ifdef NRF52_SERIES // NRF53 does not need this errata
|
#ifdef NRF52_SERIES // NRF53 does not need this errata
|
||||||
// ERRATA 171, 187, 166
|
// ERRATA 171, 187, 166
|
||||||
if (nrfx_usbd_errata_187()) {
|
if (nrf52_errata_187()) {
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
||||||
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
||||||
@@ -938,7 +938,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
|
|||||||
// CRITICAL_REGION_EXIT();
|
// CRITICAL_REGION_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nrfx_usbd_errata_171()) {
|
if (nrf52_errata_171()) {
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
||||||
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
||||||
@@ -974,7 +974,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
|
|||||||
__DSB(); // for sync
|
__DSB(); // for sync
|
||||||
|
|
||||||
#ifdef NRF52_SERIES
|
#ifdef NRF52_SERIES
|
||||||
if (nrfx_usbd_errata_171()) {
|
if (nrf52_errata_171()) {
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
||||||
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
||||||
@@ -987,7 +987,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
|
|||||||
// CRITICAL_REGION_EXIT();
|
// CRITICAL_REGION_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nrfx_usbd_errata_187()) {
|
if (nrf52_errata_187()) {
|
||||||
// CRITICAL_REGION_ENTER();
|
// CRITICAL_REGION_ENTER();
|
||||||
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
if (*((volatile uint32_t*) (0x4006EC00)) == 0x00000000) {
|
||||||
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
*((volatile uint32_t*) (0x4006EC00)) = 0x00009375;
|
||||||
@@ -999,7 +999,7 @@ void tusb_hal_nrf_power_event(uint32_t event) {
|
|||||||
// CRITICAL_REGION_EXIT();
|
// CRITICAL_REGION_EXIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (nrfx_usbd_errata_166()) {
|
if (nrf52_errata_166()) {
|
||||||
*((volatile uint32_t*) (NRF_USBD_BASE + 0x800)) = 0x7E3;
|
*((volatile uint32_t*) (NRF_USBD_BASE + 0x800)) = 0x7E3;
|
||||||
*((volatile uint32_t*) (NRF_USBD_BASE + 0x804)) = 0x40;
|
*((volatile uint32_t*) (NRF_USBD_BASE + 0x804)) = 0x40;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user