From f5d35b80ef5557f273afba92cfcb98ce5c950a3a Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Thu, 5 Sep 2024 22:21:21 +0800 Subject: [PATCH] update(bl616): update bl616 board --- projects/bl616/CMakeLists.txt | 29 ++--- projects/bl616/main.c | 2 +- projects/bl616/usb_config.h | 199 +++++++++++++++++++++++++++------- 3 files changed, 173 insertions(+), 57 deletions(-) diff --git a/projects/bl616/CMakeLists.txt b/projects/bl616/CMakeLists.txt index b665523..0543294 100644 --- a/projects/bl616/CMakeLists.txt +++ b/projects/bl616/CMakeLists.txt @@ -4,14 +4,18 @@ include(proj.conf) find_package(bouffalo_sdk REQUIRED HINTS $ENV{BL_SDK_BASE}) -target_sources(app PRIVATE +target_sources(app PRIVATE usb2uart.c ${CMAKE_CURRENT_SOURCE_DIR}/../../dap_main.c -${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/DAP_vendor.c -${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/DAP.c -${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/JTAG_DP.c -${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/SW_DP.c +${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/DAP_vendor.c +${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/DAP.c +${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/JTAG_DP.c +${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Source/SW_DP.c ${CMAKE_CURRENT_SOURCE_DIR}/../../CherryRB/chry_ringbuffer.c +${CMAKE_CURRENT_SOURCE_DIR}/../../CherryUSB/core/usbd_core.c +${CMAKE_CURRENT_SOURCE_DIR}/../../CherryUSB/port/bouffalolab/usb_dc_bl.c +${CMAKE_CURRENT_SOURCE_DIR}/../../CherryUSB/class/cdc/usbd_cdc_acm.c +${CMAKE_CURRENT_SOURCE_DIR}/../../CherryUSB/class/hid/usbd_hid.c ) sdk_add_include_directories(.) @@ -19,16 +23,13 @@ sdk_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../CherryRB) sdk_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../..) sdk_add_include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../DAP/Include) -set(CONFIG_CHERRYUSB_DEVICE 1) -set(CONFIG_CHERRYUSB_DEVICE_CDC 1) -add_subdirectory(../../CherryUSB CherryUSB) -get_property(target_cherryusb_include_dirs TARGET cherryusb PROPERTY INTERFACE_INCLUDE_DIRECTORIES) -sdk_add_include_directories(${target_cherryusb_include_dirs}) -target_link_libraries(cherryusb sdk_intf_lib) -target_link_libraries(app cherryusb) - sdk_add_compile_definitions(-DCONFIG_USB_HS) -sdk_add_compile_definitions(-DCONFIG_CHERRYUSB) +sdk_add_include_directories(../../CherryUSB/common) +sdk_add_include_directories(../../CherryUSB/core) +sdk_add_include_directories(../../CherryUSB/class/cdc) +sdk_add_include_directories(../../CherryUSB/class/msc) +sdk_add_include_directories(../../CherryUSB/class/hid) + #sdk_add_compile_definitions(-DCONFIG_CHERRYDAP_USE_MSC) sdk_set_main_file(main.c) diff --git a/projects/bl616/main.c b/projects/bl616/main.c index c54f9f9..1830d04 100644 --- a/projects/bl616/main.c +++ b/projects/bl616/main.c @@ -9,7 +9,7 @@ int main(void) uartx_preinit(); - chry_dap_init(); + chry_dap_init(0, 0x20072000); while (1) { chry_dap_handle(); chry_dap_usb2uart_handle(); diff --git a/projects/bl616/usb_config.h b/projects/bl616/usb_config.h index 15177d2..5643723 100644 --- a/projects/bl616/usb_config.h +++ b/projects/bl616/usb_config.h @@ -6,15 +6,10 @@ #ifndef CHERRYUSB_CONFIG_H #define CHERRYUSB_CONFIG_H -#define CHERRYUSB_VERSION 0x001000 - /* ================ USB common Configuration ================ */ #define CONFIG_USB_PRINTF(...) printf(__VA_ARGS__) -#define usb_malloc(size) malloc(size) -#define usb_free(ptr) free(ptr) - #ifndef CONFIG_USB_DBG_LEVEL #define CONFIG_USB_DBG_LEVEL USB_DBG_INFO #endif @@ -32,41 +27,31 @@ /* ================= USB Device Stack Configuration ================ */ -/* Ep0 max transfer buffer, specially for receiving data from ep0 out */ -#define CONFIG_USBDEV_REQUEST_BUFFER_LEN 256 +/* Ep0 in and out transfer buffer */ +#ifndef CONFIG_USBDEV_REQUEST_BUFFER_LEN +#define CONFIG_USBDEV_REQUEST_BUFFER_LEN 512 +#endif /* Setup packet log for debug */ // #define CONFIG_USBDEV_SETUP_LOG_PRINT +/* Send ep0 in data from user buffer instead of copying into ep0 reqdata + * Please note that user buffer must be aligned with CONFIG_USB_ALIGN_SIZE +*/ +// #define CONFIG_USBDEV_EP0_INDATA_NO_COPY + /* Check if the input descriptor is correct */ // #define CONFIG_USBDEV_DESC_CHECK /* Enable test mode */ // #define CONFIG_USBDEV_TEST_MODE -//#define CONFIG_USBDEV_TX_THREAD -//#define CONFIG_USBDEV_RX_THREAD - -#ifdef CONFIG_USBDEV_TX_THREAD -#ifndef CONFIG_USBDEV_TX_PRIO -#define CONFIG_USBDEV_TX_PRIO 4 -#endif -#ifndef CONFIG_USBDEV_TX_STACKSIZE -#define CONFIG_USBDEV_TX_STACKSIZE 2048 -#endif -#endif - -#ifdef CONFIG_USBDEV_RX_THREAD -#ifndef CONFIG_USBDEV_RX_PRIO -#define CONFIG_USBDEV_RX_PRIO 4 -#endif -#ifndef CONFIG_USBDEV_RX_STACKSIZE -#define CONFIG_USBDEV_RX_STACKSIZE 2048 -#endif +#ifndef CONFIG_USBDEV_MSC_MAX_LUN +#define CONFIG_USBDEV_MSC_MAX_LUN 1 #endif -#ifndef CONFIG_USBDEV_MSC_BLOCK_SIZE -#define CONFIG_USBDEV_MSC_BLOCK_SIZE 512 +#ifndef CONFIG_USBDEV_MSC_MAX_BUFSIZE +#define CONFIG_USBDEV_MSC_MAX_BUFSIZE 512 #endif #ifndef CONFIG_USBDEV_MSC_MANUFACTURER_STRING @@ -81,12 +66,27 @@ #define CONFIG_USBDEV_MSC_VERSION_STRING "0.01" #endif +/* move msc read & write from isr to while(1), you should call usbd_msc_polling in while(1) */ +// #define CONFIG_USBDEV_MSC_POLLING + +/* move msc read & write from isr to thread */ +// #define CONFIG_USBDEV_MSC_THREAD + +#ifndef CONFIG_USBDEV_MSC_PRIO +#define CONFIG_USBDEV_MSC_PRIO 4 +#endif + +#ifndef CONFIG_USBDEV_MSC_STACKSIZE +#define CONFIG_USBDEV_MSC_STACKSIZE 2048 +#endif + #ifndef CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE #define CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE 156 #endif +/* rndis transfer buffer size, must be a multiple of (1536 + 44)*/ #ifndef CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE -#define CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE 1536 +#define CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE 1580 #endif #ifndef CONFIG_USBDEV_RNDIS_VENDOR_ID @@ -102,9 +102,9 @@ /* ================ USB HOST Stack Configuration ================== */ #define CONFIG_USBHOST_MAX_RHPORTS 1 -#define CONFIG_USBHOST_MAX_EXTHUBS 0 +#define CONFIG_USBHOST_MAX_EXTHUBS 1 #define CONFIG_USBHOST_MAX_EHPORTS 4 -#define CONFIG_USBHOST_MAX_INTERFACES 4 +#define CONFIG_USBHOST_MAX_INTERFACES 8 #define CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 8 #define CONFIG_USBHOST_MAX_ENDPOINTS 4 @@ -113,12 +113,11 @@ #define CONFIG_USBHOST_MAX_MSC_CLASS 2 #define CONFIG_USBHOST_MAX_AUDIO_CLASS 1 #define CONFIG_USBHOST_MAX_VIDEO_CLASS 1 -#define CONFIG_USBHOST_MAX_RNDIS_CLASS 1 #define CONFIG_USBHOST_DEV_NAMELEN 16 #ifndef CONFIG_USBHOST_PSC_PRIO -#define CONFIG_USBHOST_PSC_PRIO 28 +#define CONFIG_USBHOST_PSC_PRIO 0 #endif #ifndef CONFIG_USBHOST_PSC_STACKSIZE #define CONFIG_USBHOST_PSC_STACKSIZE 2048 @@ -126,35 +125,151 @@ //#define CONFIG_USBHOST_GET_STRING_DESC +// #define CONFIG_USBHOST_MSOS_ENABLE +#ifndef CONFIG_USBHOST_MSOS_VENDOR_CODE +#define CONFIG_USBHOST_MSOS_VENDOR_CODE 0x00 +#endif + /* Ep0 max transfer buffer */ +#ifndef CONFIG_USBHOST_REQUEST_BUFFER_LEN #define CONFIG_USBHOST_REQUEST_BUFFER_LEN 512 +#endif #ifndef CONFIG_USBHOST_CONTROL_TRANSFER_TIMEOUT -#define CONFIG_USBHOST_CONTROL_TRANSFER_TIMEOUT 1000 +#define CONFIG_USBHOST_CONTROL_TRANSFER_TIMEOUT 500 #endif #ifndef CONFIG_USBHOST_MSC_TIMEOUT #define CONFIG_USBHOST_MSC_TIMEOUT 5000 #endif +/* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, + * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. + */ +#ifndef CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE +#define CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE (2048) +#endif + +/* Because lwip do not support multi pbuf at a time, so increasing this variable has no performance improvement */ +#ifndef CONFIG_USBHOST_RNDIS_ETH_MAX_TX_SIZE +#define CONFIG_USBHOST_RNDIS_ETH_MAX_TX_SIZE (2048) +#endif + +/* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, + * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. + */ +#ifndef CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE +#define CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE (2048) +#endif +/* Because lwip do not support multi pbuf at a time, so increasing this variable has no performance improvement */ +#ifndef CONFIG_USBHOST_CDC_NCM_ETH_MAX_TX_SIZE +#define CONFIG_USBHOST_CDC_NCM_ETH_MAX_TX_SIZE (2048) +#endif + +/* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, + * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. + */ +#ifndef CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE +#define CONFIG_USBHOST_ASIX_ETH_MAX_RX_SIZE (2048) +#endif +/* Because lwip do not support multi pbuf at a time, so increasing this variable has no performance improvement */ +#ifndef CONFIG_USBHOST_ASIX_ETH_MAX_TX_SIZE +#define CONFIG_USBHOST_ASIX_ETH_MAX_TX_SIZE (2048) +#endif + +/* This parameter affects usb performance, and depends on (TCP_WND)tcp eceive windows size, + * you can change to 2K ~ 16K and must be larger than TCP RX windows size in order to avoid being overflow. + */ +#ifndef CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE +#define CONFIG_USBHOST_RTL8152_ETH_MAX_RX_SIZE (2048) +#endif +/* Because lwip do not support multi pbuf at a time, so increasing this variable has no performance improvement */ +#ifndef CONFIG_USBHOST_RTL8152_ETH_MAX_TX_SIZE +#define CONFIG_USBHOST_RTL8152_ETH_MAX_TX_SIZE (2048) +#endif + +#define CONFIG_USBHOST_BLUETOOTH_HCI_H4 +// #define CONFIG_USBHOST_BLUETOOTH_HCI_LOG + +#ifndef CONFIG_USBHOST_BLUETOOTH_TX_SIZE +#define CONFIG_USBHOST_BLUETOOTH_TX_SIZE 2048 +#endif +#ifndef CONFIG_USBHOST_BLUETOOTH_RX_SIZE +#define CONFIG_USBHOST_BLUETOOTH_RX_SIZE 2048 +#endif + /* ================ USB Device Port Configuration ================*/ -//#define USBD_IRQHandler USBD_IRQHandler -//#define USB_BASE (0x40080000UL) -//#define USB_NUM_BIDIR_ENDPOINTS 4 +#ifndef CONFIG_USBDEV_MAX_BUS +#define CONFIG_USBDEV_MAX_BUS 1 // for now, bus num must be 1 except hpm ip +#endif + +#ifndef CONFIG_USBDEV_EP_NUM +#define CONFIG_USBDEV_EP_NUM 5 +#endif + +/* ---------------- FSDEV Configuration ---------------- */ +//#define CONFIG_USBDEV_FSDEV_PMA_ACCESS 2 // maybe 1 or 2, many chips may have a difference + +/* ---------------- DWC2 Configuration ---------------- */ +/* (5 * number of control endpoints + 8) + ((largest USB packet used / 4) + 1 for + * status information) + (2 * number of OUT endpoints) + 1 for Global NAK + */ +// #define CONFIG_USB_DWC2_RXALL_FIFO_SIZE (1024 / 4) +/* IN Endpoints Max packet Size / 4 */ +// #define CONFIG_USB_DWC2_TX0_FIFO_SIZE (64 / 4) +// #define CONFIG_USB_DWC2_TX1_FIFO_SIZE (512 / 4) +// #define CONFIG_USB_DWC2_TX2_FIFO_SIZE (64 / 4) +// #define CONFIG_USB_DWC2_TX3_FIFO_SIZE (64 / 4) +// #define CONFIG_USB_DWC2_TX4_FIFO_SIZE (0 / 4) +// #define CONFIG_USB_DWC2_TX5_FIFO_SIZE (0 / 4) +// #define CONFIG_USB_DWC2_TX6_FIFO_SIZE (0 / 4) +// #define CONFIG_USB_DWC2_TX7_FIFO_SIZE (0 / 4) +// #define CONFIG_USB_DWC2_TX8_FIFO_SIZE (0 / 4) + +/* ---------------- MUSB Configuration ---------------- */ +// #define CONFIG_USB_MUSB_SUNXI /* ================ USB Host Port Configuration ==================*/ +#ifndef CONFIG_USBHOST_MAX_BUS +#define CONFIG_USBHOST_MAX_BUS 1 +#endif +#ifndef CONFIG_USBHOST_PIPE_NUM #define CONFIG_USBHOST_PIPE_NUM 10 +#endif -/* ================ EHCI Configuration ================ */ +/* ---------------- EHCI Configuration ---------------- */ -#define CONFIG_USB_EHCI_HCCR_BASE (0x20072000) -#define CONFIG_USB_EHCI_HCOR_BASE (0x20072000 + 0x10) +#define CONFIG_USB_EHCI_HCCR_OFFSET (0x0) #define CONFIG_USB_EHCI_FRAME_LIST_SIZE 1024 -// #define CONFIG_USB_EHCI_INFO_ENABLE +#define CONFIG_USB_EHCI_QH_NUM CONFIG_USBHOST_PIPE_NUM +#define CONFIG_USB_EHCI_QTD_NUM 3 +#define CONFIG_USB_EHCI_ITD_NUM 20 #define CONFIG_USB_EHCI_HCOR_RESERVED_DISABLE // #define CONFIG_USB_EHCI_CONFIGFLAG -// #define CONFIG_USB_EHCI_PORT_POWER +// #define CONFIG_USB_EHCI_ISO +// #define CONFIG_USB_EHCI_WITH_OHCI + +/* ---------------- OHCI Configuration ---------------- */ +#define CONFIG_USB_OHCI_HCOR_OFFSET (0x0) + +/* ---------------- XHCI Configuration ---------------- */ +#define CONFIG_USB_XHCI_HCCR_OFFSET (0x0) + +/* ---------------- DWC2 Configuration ---------------- */ +/* largest non-periodic USB packet used / 4 */ +// #define CONFIG_USB_DWC2_NPTX_FIFO_SIZE (512 / 4) +/* largest periodic USB packet used / 4 */ +// #define CONFIG_USB_DWC2_PTX_FIFO_SIZE (1024 / 4) +/* + * (largest USB packet used / 4) + 1 for status information + 1 transfer complete + + * 1 location each for Bulk/Control endpoint for handling NAK/NYET scenario + */ +// #define CONFIG_USB_DWC2_RX_FIFO_SIZE ((1012 - CONFIG_USB_DWC2_NPTX_FIFO_SIZE - CONFIG_USB_DWC2_PTX_FIFO_SIZE) / 4) + +/* ---------------- MUSB Configuration ---------------- */ +// #define CONFIG_USB_MUSB_SUNXI +#define CONFIG_USBDEV_ADVANCE_DESC #endif