-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[bsp/stm32f407-rt-spark/stm32l496zg-st-nucleo] add cherryusb support (#…
…9929) [bsp/stm32f407-rt-spark/l496zg] add cherryusb support
- Loading branch information
1 parent
5886e26
commit d9947e5
Showing
22 changed files
with
1,585 additions
and
447 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
16 changes: 16 additions & 0 deletions
16
bsp/stm32/stm32f407-rt-spark/board/ports/cherryusb/SConscript
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
from building import * | ||
import os | ||
|
||
cwd = GetCurrentDir() | ||
group = [] | ||
src = Glob('*.c') | ||
CPPPATH = [cwd] | ||
|
||
list = os.listdir(cwd) | ||
for d in list: | ||
path = os.path.join(cwd, d) | ||
if os.path.isfile(os.path.join(path, 'SConscript')): | ||
group = group + SConscript(os.path.join(d, 'SConscript')) | ||
|
||
group = group + DefineGroup('cherryusb-port', src, depend = ['RT_CHERRYUSB_DEVICE'], CPPPATH = CPPPATH) | ||
Return('group') |
54 changes: 54 additions & 0 deletions
54
bsp/stm32/stm32f407-rt-spark/board/ports/cherryusb/cherryusb.c
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
/* | ||
* Copyright (c) 2025, RT-Thread Development Team | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
* | ||
* Change Logs: | ||
* Date Author Notes | ||
* 2025-01-17 Supperthomas first version | ||
*/ | ||
#include "board.h" | ||
#include "rtthread.h" | ||
#include "drv_config.h" | ||
|
||
static PCD_HandleTypeDef hpcd_USB_OTG_FS; | ||
void usb_dc_low_level_init(uint8_t busid) | ||
{ | ||
hpcd_USB_OTG_FS.Instance = USB_OTG_FS; | ||
HAL_PCD_MspInit(&hpcd_USB_OTG_FS); | ||
} | ||
|
||
void usb_dc_low_level_deinit(uint8_t busid) | ||
{ | ||
HAL_PCD_MspDeInit(&hpcd_USB_OTG_FS); | ||
} | ||
|
||
#ifdef RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM | ||
/* Register the EMAC device */ | ||
static int rt_hw_stm32_cherryusb_cdc_init(void) | ||
{ | ||
extern void cdc_acm_init(uint8_t busid, uintptr_t reg_base); | ||
cdc_acm_init(0, USB_OTG_FS_PERIPH_BASE); | ||
|
||
return 0; | ||
} | ||
INIT_COMPONENT_EXPORT(rt_hw_stm32_cherryusb_cdc_init); | ||
static int cherry_usb_cdc_send(int argc, char **argv) | ||
{ | ||
extern void cdc_acm_data_send_with_dtr_test(uint8_t busid); | ||
cdc_acm_data_send_with_dtr_test(0); | ||
return 0; | ||
} | ||
MSH_CMD_EXPORT(cherry_usb_cdc_send, send the cdc data for test) | ||
#endif | ||
|
||
#ifdef USBD_IRQ_HANDLER | ||
void USBD_IRQ_HANDLER(void) | ||
{ | ||
extern void USBD_IRQHandler(uint8_t busid); | ||
USBD_IRQHandler(0); | ||
} | ||
#else | ||
#error USBD_IRQ_HANDLER need to USB IRQ like #define USBD_IRQ_HANDLER OTG_HS_IRQHandler | ||
#endif | ||
|
239 changes: 239 additions & 0 deletions
239
bsp/stm32/stm32f407-rt-spark/board/ports/cherryusb/usb_config.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,239 @@ | ||
/* | ||
* Copyright (c) 2025, RT-Thread Development Team | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
* | ||
* Change Logs: | ||
* Date Author Notes | ||
* 2025-01-17 Supperthomas first version | ||
*/ | ||
#ifndef CHERRYUSB_CONFIG_H | ||
#define CHERRYUSB_CONFIG_H | ||
|
||
/* ================ USB common Configuration ================ */ | ||
|
||
#define CONFIG_USB_PRINTF(...) printf(__VA_ARGS__) | ||
|
||
#ifndef CONFIG_USB_DBG_LEVEL | ||
#define CONFIG_USB_DBG_LEVEL USB_DBG_INFO | ||
#endif | ||
|
||
/* Enable print with color */ | ||
#define CONFIG_USB_PRINTF_COLOR_ENABLE | ||
|
||
/* data align size when use dma */ | ||
#ifndef CONFIG_USB_ALIGN_SIZE | ||
#define CONFIG_USB_ALIGN_SIZE 4 | ||
#endif | ||
|
||
/* attribute data into no cache ram */ | ||
#define USB_NOCACHE_RAM_SECTION __attribute__((section(".noncacheable"))) | ||
|
||
/* ================= USB Device Stack Configuration ================ */ | ||
|
||
/* 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 | ||
|
||
/* Check if the input descriptor is correct */ | ||
// #define CONFIG_USBDEV_DESC_CHECK | ||
|
||
/* Enable test mode */ | ||
// #define CONFIG_USBDEV_TEST_MODE | ||
|
||
#ifndef CONFIG_USBDEV_MSC_MAX_LUN | ||
#define CONFIG_USBDEV_MSC_MAX_LUN 1 | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_MSC_MAX_BUFSIZE | ||
#define CONFIG_USBDEV_MSC_MAX_BUFSIZE 512 | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_MSC_MANUFACTURER_STRING | ||
#define CONFIG_USBDEV_MSC_MANUFACTURER_STRING "" | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_MSC_PRODUCT_STRING | ||
#define CONFIG_USBDEV_MSC_PRODUCT_STRING "" | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_MSC_VERSION_STRING | ||
#define CONFIG_USBDEV_MSC_VERSION_STRING "0.01" | ||
#endif | ||
|
||
// #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 | ||
|
||
#ifndef CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE | ||
#define CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE 2048 | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_RNDIS_VENDOR_ID | ||
#define CONFIG_USBDEV_RNDIS_VENDOR_ID 0x0000ffff | ||
#endif | ||
|
||
#ifndef CONFIG_USBDEV_RNDIS_VENDOR_DESC | ||
#define CONFIG_USBDEV_RNDIS_VENDOR_DESC "CherryUSB" | ||
#endif | ||
|
||
#define CONFIG_USBDEV_RNDIS_USING_LWIP | ||
|
||
/* ================ USB HOST Stack Configuration ================== */ | ||
|
||
#define CONFIG_USBHOST_MAX_RHPORTS 1 | ||
#define CONFIG_USBHOST_MAX_EXTHUBS 1 | ||
#define CONFIG_USBHOST_MAX_EHPORTS 4 | ||
#define CONFIG_USBHOST_MAX_INTERFACES 8 | ||
#define CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 8 | ||
#define CONFIG_USBHOST_MAX_ENDPOINTS 4 | ||
|
||
#define CONFIG_USBHOST_MAX_CDC_ACM_CLASS 4 | ||
#define CONFIG_USBHOST_MAX_HID_CLASS 4 | ||
#define CONFIG_USBHOST_MAX_MSC_CLASS 2 | ||
#define CONFIG_USBHOST_MAX_AUDIO_CLASS 1 | ||
#define CONFIG_USBHOST_MAX_VIDEO_CLASS 1 | ||
|
||
#define CONFIG_USBHOST_DEV_NAMELEN 16 | ||
|
||
#ifndef CONFIG_USBHOST_PSC_PRIO | ||
#define CONFIG_USBHOST_PSC_PRIO 0 | ||
#endif | ||
#ifndef CONFIG_USBHOST_PSC_STACKSIZE | ||
#define CONFIG_USBHOST_PSC_STACKSIZE 2048 | ||
#endif | ||
|
||
//#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 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 with 2K,4K,8K,16K,default is 2K to get one TCP_MSS | ||
*/ | ||
#ifndef CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE | ||
#define CONFIG_USBHOST_RNDIS_ETH_MAX_RX_SIZE (2048) | ||
#endif | ||
#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 with 2K,4K,8K,16K,default is 2K to get one TCP_MSS | ||
*/ | ||
#ifndef CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE | ||
#define CONFIG_USBHOST_CDC_NCM_ETH_MAX_RX_SIZE (2048) | ||
#endif | ||
#ifndef CONFIG_USBHOST_CDC_NCM_ETH_MAX_TX_SIZE | ||
#define CONFIG_USBHOST_CDC_NCM_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 ================*/ | ||
|
||
#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 4 | ||
#endif | ||
|
||
/* ---------------- FSDEV Configuration ---------------- */ | ||
//#define CONFIG_USBDEV_FSDEV_PMA_ACCESS 2 // maybe 1 or 2, many chips may have a difference | ||
|
||
/* ---------------- DWC2 Configuration ---------------- */ | ||
// #define CONFIG_USB_DWC2_RXALL_FIFO_SIZE (1024 / 4) | ||
#define CONFIG_USB_DWC2_TX0_FIFO_SIZE (64 / 4) | ||
#define CONFIG_USB_DWC2_TX1_FIFO_SIZE (64 / 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 12 | ||
#endif | ||
|
||
/* ---------------- EHCI Configuration ---------------- */ | ||
|
||
#define CONFIG_USB_EHCI_HCCR_OFFSET (0x0) | ||
#define CONFIG_USB_EHCI_FRAME_LIST_SIZE 1024 | ||
#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_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)) | ||
|
||
/* ---------------- MUSB Configuration ---------------- */ | ||
// #define CONFIG_USB_MUSB_SUNXI | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.