Skip to content

Commit

Permalink
kind of work with zephyr with pca10056 with cmake -DBUILD_ZEPHYR
Browse files Browse the repository at this point in the history
  • Loading branch information
hathach committed Jan 23, 2025
1 parent 6080f89 commit 31071cc
Show file tree
Hide file tree
Showing 17 changed files with 122 additions and 104 deletions.
3 changes: 2 additions & 1 deletion .idea/cmake.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .west/config
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[manifest]
path = examples
path = lib/zephyr
file = west.yml

[zephyr]
Expand Down
4 changes: 4 additions & 0 deletions examples/build_system/cmake/toolchain/common.cmake
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
if (BUILD_ZEPHYR)
return()
endif()

include(CMakePrintHelpers)

# ----------------------------------------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion examples/device/video_capture/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ static void fill_color_bar(uint8_t* buffer, unsigned start_position) {

#endif

void video_send_frame(void) {
static void video_send_frame(void) {
static unsigned start_ms = 0;
static unsigned already_sent = 0;

Expand Down
6 changes: 2 additions & 4 deletions examples/host/msc_file_explorer/src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -62,15 +62,13 @@
#include "bsp/board_api.h"
#include "tusb.h"

#include "msc_app.h"

//--------------------------------------------------------------------+
// MACRO CONSTANT TYPEDEF PROTYPES
//--------------------------------------------------------------------+
void led_blinking_task(void);

// from msc_app.c
extern bool msc_app_init(void);
extern void msc_app_task(void);

/*------------- MAIN -------------*/
int main(void) {
board_init();
Expand Down
20 changes: 8 additions & 12 deletions examples/host/msc_file_explorer/src/msc_app.c
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,9 @@ bool cli_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
#ifndef __ICCARM__ // TODO IAR doesn't support stream control ?
Expand All @@ -81,7 +83,9 @@ bool msc_app_init(void)

void msc_app_task(void)
{
if (!_cli) return;
if (!_cli) {
return;
}

int ch = board_getchar();
if ( ch > 0 )
Expand All @@ -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_csw_t const* csw = cb_data->csw;

Expand Down Expand Up @@ -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_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;
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)
{
EmbeddedCliConfig *config = embeddedCliDefaultConfig();
Expand Down
35 changes: 35 additions & 0 deletions examples/host/msc_file_explorer/src/msc_app.h
Original file line number Diff line number Diff line change
@@ -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
12 changes: 0 additions & 12 deletions examples/west.yml

This file was deleted.

18 changes: 8 additions & 10 deletions hw/bsp/family_support.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ function(family_add_rtos TARGET RTOS)
elseif (RTOS STREQUAL "zephyr")
target_compile_definitions(${TARGET} PUBLIC CFG_TUSB_OS=OPT_OS_ZEPHYR)
target_include_directories(${TARGET} PUBLIC ${ZEPHYR_BASE}/include)
target_link_libraries(${TARGET} PUBLIC zephyr_interface kernel)
# target_link_libraries(${TARGET} PUBLIC kernel)
endif ()
endfunction()

Expand Down Expand Up @@ -201,12 +201,9 @@ function(family_configure_common TARGET RTOS)
target_compile_definitions(${TARGET} PUBLIC LOGGER_${LOGGER})
# Add segger rtt to example
if(LOGGER STREQUAL "RTT" OR LOGGER STREQUAL "rtt")
if (NOT TARGET segger_rtt)
add_library(segger_rtt STATIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
target_include_directories(segger_rtt PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
# 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)
target_sources(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT/SEGGER_RTT.c)
target_include_directories(${TARGET} PUBLIC ${TOP}/lib/SEGGER_RTT/RTT)
# target_compile_definitions(${TARGET} PUBLIC SEGGER_RTT_MODE_DEFAULT=SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL)
endif ()
endif ()

Expand Down Expand Up @@ -239,7 +236,8 @@ function(family_configure_common TARGET RTOS)
-Wmissing-prototypes
)
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")
endif ()
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
Expand All @@ -255,7 +253,7 @@ function(family_configure_common TARGET RTOS)
# endif ()
endfunction()

# Add tinyusb to target with RTOS
# Add tinyusb to target (TODO remove RTOS)
function(family_add_tinyusb TARGET OPT_MCU RTOS)
# tinyusb's CMakeList.txt
add_subdirectory(${TOP}/src ${CMAKE_CURRENT_BINARY_DIR}/tinyusb)
Expand Down Expand Up @@ -364,7 +362,7 @@ function(family_add_default_example_warnings TARGET)

if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
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()

# GCC 10
Expand Down
2 changes: 1 addition & 1 deletion hw/bsp/nrf/boards/pca10095/board.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@ set(MCU_VARIANT nrf5340_application)

function(update_board TARGET)
target_sources(${TARGET} PRIVATE
${NRFX_DIR}/drivers/src/nrfx_usbreg.c
${NRFX_PATH}/drivers/src/nrfx_usbreg.c
)
endfunction()
29 changes: 14 additions & 15 deletions hw/bsp/nrf/family.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,10 @@

#include "nrfx.h"
#include "hal/nrf_gpio.h"
#include "drivers/include/nrfx_gpiote.h"
#include "drivers/include/nrfx_power.h"
#include "drivers/include/nrfx_uarte.h"
#include "drivers/include/nrfx_spim.h"
#include "nrfx_gpiote.h"
#include "nrfx_power.h"
#include "nrfx_uarte.h"
#include "nrfx_spim.h"

#ifdef SOFTDEVICE_PRESENT
#include "nrf_sdm.h"
Expand All @@ -67,8 +67,6 @@
#define NRFX_VER 3
#endif

extern void nrfx_isr(const void *irq_handler);

//--------------------------------------------------------------------+
// Forward USB interrupt events to TinyUSB IRQ Handler
//--------------------------------------------------------------------+
Expand Down Expand Up @@ -148,12 +146,10 @@ void board_init(void) {
// irq_enable(USBREGULATOR_IRQn);
#endif

// IRQ_CONNECT(CLOCK_POWER_IRQn, 0, nrfx_isr, nrfx_power_irq_handler, 0);

/* USB device controller access from devicetree */
// #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);

#define DT_DRV_COMPAT nordic_nrf_usbd
IRQ_CONNECT(DT_INST_IRQN(0), DT_INST_IRQ(0, priority), nrfx_isr, USBD_IRQHandler, 0);
irq_enable(DT_INST_IRQN(0));
#endif

// UART
Expand Down Expand Up @@ -187,7 +183,7 @@ void board_init(void) {
};
#endif

nrfx_uarte_init(&_uart_id, &uart_cfg, NULL); //uart_handler);
nrfx_uarte_init(&_uart_id, &uart_cfg, NULL);

//------------- USB -------------//
#if CFG_TUD_ENABLED
Expand Down Expand Up @@ -231,8 +227,12 @@ void board_init(void) {
#endif
}

if ( usb_reg & VBUSDETECT_Msk ) tusb_hal_nrf_power_event(USB_EVT_DETECTED);
if ( usb_reg & OUTPUTRDY_Msk ) tusb_hal_nrf_power_event(USB_EVT_READY);
if ( usb_reg & VBUSDETECT_Msk ) {
tusb_hal_nrf_power_event(USB_EVT_DETECTED);
}
if ( usb_reg & OUTPUTRDY_Msk ) {
tusb_hal_nrf_power_event(USB_EVT_READY);
}
#endif

#if CFG_TUH_ENABLED && defined(CFG_TUH_MAX3421) && CFG_TUH_MAX3421
Expand All @@ -244,7 +244,6 @@ void board_init(void) {
//--------------------------------------------------------------------+
// Board porting API
//--------------------------------------------------------------------+

void board_led_write(bool state) {
nrf_gpio_pin_write(LED_PIN, state ? LED_STATE_ON : (1 - LED_STATE_ON));
}
Expand Down
47 changes: 23 additions & 24 deletions hw/bsp/nrf/family.cmake
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
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)

# include board specific
Expand All @@ -25,6 +25,10 @@ set(FAMILY_MCUS NRF5X CACHE INTERNAL "")
#------------------------------------
# only need to be built ONCE for all examples
function(add_board_target BOARD_TARGET)
if (BUILD_ZEPHYR)
return()
endif ()

if (TARGET ${BOARD_TARGET})
return()
endif ()
Expand All @@ -40,18 +44,18 @@ function(add_board_target BOARD_TARGET)
endif ()

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})
endif ()

add_library(${BOARD_TARGET} STATIC
${NRFX_DIR}/helpers/nrfx_flag32_allocator.c
${NRFX_DIR}/drivers/src/nrfx_gpiote.c
${NRFX_DIR}/drivers/src/nrfx_power.c
${NRFX_DIR}/drivers/src/nrfx_spim.c
${NRFX_DIR}/drivers/src/nrfx_uarte.c
${NRFX_DIR}/mdk/system_${MCU_VARIANT}.c
${NRFX_DIR}/soc/nrfx_atomic.c
${NRFX_PATH}/helpers/nrfx_flag32_allocator.c
${NRFX_PATH}/drivers/src/nrfx_gpiote.c
${NRFX_PATH}/drivers/src/nrfx_power.c
${NRFX_PATH}/drivers/src/nrfx_spim.c
${NRFX_PATH}/drivers/src/nrfx_uarte.c
${NRFX_PATH}/mdk/system_${MCU_VARIANT}.c
${NRFX_PATH}/soc/nrfx_atomic.c
${STARTUP_FILE_${CMAKE_C_COMPILER_ID}}
)
string(TOUPPER "${MCU_VARIANT_XXAA}" MCU_VARIANT_XXAA_UPPER)
Expand All @@ -67,12 +71,10 @@ function(add_board_target BOARD_TARGET)
endif ()

target_include_directories(${BOARD_TARGET} PUBLIC
${CMAKE_CURRENT_FUNCTION_LIST_DIR}
${NRFX_DIR}
${NRFX_DIR}/mdk
${NRFX_DIR}/hal
${NRFX_DIR}/drivers/include
${NRFX_DIR}/drivers/src
${CMAKE_CURRENT_FUNCTION_LIST_DIR}/nrfx_config
${NRFX_PATH}
${NRFX_PATH}/mdk
${NRFX_PATH}/drivers/include
${CMSIS_DIR}/CMSIS/Core/Include
)

Expand All @@ -81,14 +83,14 @@ function(add_board_target BOARD_TARGET)
if (CMAKE_C_COMPILER_ID STREQUAL "GNU")
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
-L${NRFX_DIR}/mdk
-L${NRFX_PATH}/mdk
--specs=nosys.specs --specs=nano.specs
-nostartfiles
)
elseif (CMAKE_C_COMPILER_ID STREQUAL "Clang")
target_link_options(${BOARD_TARGET} PUBLIC
"LINKER:--script=${LD_FILE_GNU}"
-L${NRFX_DIR}/mdk
-L${NRFX_PATH}/mdk
)
elseif (CMAKE_C_COMPILER_ID STREQUAL "IAR")
target_link_options(${BOARD_TARGET} PUBLIC
Expand All @@ -113,6 +115,9 @@ endfunction()
function(family_configure_example TARGET RTOS)
# Board target
add_board_target(board_${BOARD})
if (NOT BUILD_ZEPHYR)
target_link_libraries(${TARGET} PUBLIC board_${BOARD})
endif ()

family_configure_common(${TARGET} ${RTOS})

Expand All @@ -132,16 +137,10 @@ function(family_configure_example TARGET RTOS)

# Add TinyUSB target and port source
family_add_tinyusb(${TARGET} OPT_MCU_NRF5X ${RTOS})
target_sources(${TARGET} PUBLIC
target_sources(${TARGET} PRIVATE
${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
# family_add_bin_hex(${TARGET})
family_flash_jlink(${TARGET})
Expand Down
Loading

0 comments on commit 31071cc

Please sign in to comment.