diff --git a/examples/device/board_test/CMakeLists.txt b/examples/device/board_test/CMakeLists.txt index 62759c49..f02f83f7 100644 --- a/examples/device/board_test/CMakeLists.txt +++ b/examples/device/board_test/CMakeLists.txt @@ -20,15 +20,16 @@ pico_sdk_init() add_executable(${PROJECT}) -target_sources(${PROJECT} PRIVATE +target_sources(${PROJECT} PUBLIC src/main.c - "${TOP}/hw/bsp/rp2040/boards/raspberry_pi_pico/board_raspberry_pi_pico.c" + "${TOP}/hw/bsp/${FAMILY}/family.c" ) -target_include_directories(${PROJECT} PRIVATE +target_include_directories(${PROJECT} PUBLIC "src/" "${TOP}/hw" "${TOP}/src" + "${TOP}/hw/bsp/${FAMILY}/boards/${BOARD}" ) target_compile_definitions(${PROJECT} PUBLIC diff --git a/examples/rules.mk b/examples/rules.mk index b61af1d5..ab0373ba 100644 --- a/examples/rules.mk +++ b/examples/rules.mk @@ -37,7 +37,7 @@ monitor: else ifeq ($(FAMILY),rp2040) all: - [ -d $(BUILD) ] || cmake -S . -B $(BUILD) -DFAMILY=$(FAMILY) -DPICO_BUILD_DOCS=0 + [ -d $(BUILD) ] || cmake -S . -B $(BUILD) -DFAMILY=$(FAMILY) -DBOARD=$(BOARD) -DPICO_BUILD_DOCS=0 $(MAKE) -C $(BUILD) clean: diff --git a/hw/bsp/rp2040/boards/raspberry_pi_pico/board.h b/hw/bsp/rp2040/boards/raspberry_pi_pico/board.h new file mode 100644 index 00000000..61532d8c --- /dev/null +++ b/hw/bsp/rp2040/boards/raspberry_pi_pico/board.h @@ -0,0 +1,46 @@ +/* + * The MIT License (MIT) + * + * Copyright (c) 2021, 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 BOARD_H_ +#define BOARD_H_ + +#ifdef __cplusplus + extern "C" { +#endif + +#define LED_PIN PICO_DEFAULT_LED_PIN +#define LED_STATE_ON 1 + +// Button pin is BOOTSEL which is flash CS pin + +#define BUTTON_BOOTSEL +#define BUTTON_STATE_ACTIVE 0 + +#ifdef __cplusplus + } +#endif + +#endif /* BOARD_H_ */ diff --git a/hw/bsp/rp2040/boards/raspberry_pi_pico/board_raspberry_pi_pico.c b/hw/bsp/rp2040/family.c similarity index 85% rename from hw/bsp/rp2040/boards/raspberry_pi_pico/board_raspberry_pi_pico.c rename to hw/bsp/rp2040/family.c index 606d9a04..bb9e88e3 100644 --- a/hw/bsp/rp2040/boards/raspberry_pi_pico/board_raspberry_pi_pico.c +++ b/hw/bsp/rp2040/family.c @@ -2,6 +2,7 @@ * The MIT License (MIT) * * Copyright (c) 2020 Raspberry Pi (Trading) Ltd. + * Copyright (c) 2021, 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 @@ -31,14 +32,9 @@ #include "hardware/structs/sio.h" #include "bsp/board.h" +#include "board.h" -#define LED_PIN PICO_DEFAULT_LED_PIN -#define LED_STATE_ON 1 - -// Button pin is BOOTSEL which is flash CS pin -// #define BUTTON_PIN -#define BUTTON_STATE_ACTIVE 0 - +#ifdef BUTTON_BOOTSEL // This example blinks the Picoboard LED when the BOOTSEL button is pressed. // // Picoboard has a button attached to the flash CS pin, which the bootrom @@ -49,7 +45,6 @@ // // This doesn't work if others are trying to access flash at the same time, // e.g. XIP streamer, or the other core. - bool __no_inline_not_in_flash_func(get_bootsel_button)() { const uint CS_PIN_INDEX = 1; @@ -79,22 +74,23 @@ bool __no_inline_not_in_flash_func(get_bootsel_button)() { return button_state; } +#endif void board_init(void) { - setup_default_uart(); - gpio_init(LED_PIN); - gpio_set_dir(LED_PIN, GPIO_OUT); + setup_default_uart(); + gpio_init(LED_PIN); + gpio_set_dir(LED_PIN, GPIO_OUT); - // Button + // Button - // todo probably set up device mode? + // todo probably set up device mode? #if TUSB_OPT_DEVICE_ENABLED #endif #if TUSB_OPT_HOST_ENABLED - // set portfunc to host !!! + // set portfunc to host !!! #endif } @@ -118,26 +114,30 @@ void board_init(void) void board_led_write(bool state) { - gpio_put(LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON)); + gpio_put(LED_PIN, state ? LED_STATE_ON : (1-LED_STATE_ON)); } uint32_t board_button_read(void) { - return BUTTON_STATE_ACTIVE == get_bootsel_button(); +#ifdef BUTTON_BOOTSEL + return BUTTON_STATE_ACTIVE == get_bootsel_button(); +#else + return 0; +#endif } int board_uart_read(uint8_t* buf, int len) { - for(int i=0;i