diff options
| author | sakimisu <[email protected]> | 2023-01-15 16:51:28 +0800 |
|---|---|---|
| committer | sakimisu <[email protected]> | 2023-01-15 16:55:29 +0800 |
| commit | 2c24b54bf103cabd01890dc1a4f2583b1fadf64d (patch) | |
| tree | 6afc2e774467067dca203b5262f6e0df3d806e2a | |
| parent | e475dd730b1b544f0e57f9011d744af4ccc10db0 (diff) | |
split tx_rx_thread into tx_thread and rx_thread
| -rw-r--r-- | cherryusb_config_template.h | 22 | ||||
| -rw-r--r-- | core/usbd_core.c | 67 | ||||
| -rw-r--r-- | demo/stm32/usb_device/stm32f429igt6/Core/Inc/FreeRTOSConfig.h | 312 | ||||
| -rw-r--r-- | demo/stm32/usb_device/stm32f429igt6/Core/Inc/usb_config.h | 54 | ||||
| -rw-r--r-- | demo/stm32/usb_device/stm32f429igt6/Core/Src/main.c | 2 |
5 files changed, 414 insertions, 43 deletions
diff --git a/cherryusb_config_template.h b/cherryusb_config_template.h index adec67eb..972ada04 100644 --- a/cherryusb_config_template.h +++ b/cherryusb_config_template.h @@ -44,14 +44,24 @@ /* Enable test mode */ // #define CONFIG_USBDEV_TEST_MODE -//#define CONFIG_USBDEV_TX_RX_THREAD +//#define CONFIG_USBDEV_TX_THREAD +//#define CONFIG_USBDEV_RX_THREAD -#ifdef CONFIG_USBDEV_TX_RX_THREAD -#ifndef CONFIG_USBDEV_TX_RX_PRIO -#define CONFIG_USBDEV_TX_RX_PRIO 4 +#ifdef CONFIG_USBDEV_TX_THREAD +#ifndef CONFIG_USBDEV_TX_PRIO +#define CONFIG_USBDEV_TX_PRIO 4 #endif -#ifndef CONFIG_USBDEV_TX_RX_STACKSIZE -#define CONFIG_USBDEV_TX_RX_STACKSIZE 2048 +#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 #endif diff --git a/core/usbd_core.c b/core/usbd_core.c index cd91ea00..cbe7a97b 100644 --- a/core/usbd_core.c +++ b/core/usbd_core.c @@ -6,7 +6,7 @@ * SPDX-License-Identifier: Apache-2.0 */ #include "usbd_core.h" -#ifdef CONFIG_USBDEV_TX_RX_THREAD +#if defined(CONFIG_USBDEV_TX_THREAD) || defined(CONFIG_USBDEV_RX_THREAD) #include "usb_osal.h" #endif @@ -72,9 +72,13 @@ static struct usb_bos_descriptor *bos_desc; struct usbd_tx_rx_msg tx_msg[USB_EP_IN_NUM]; struct usbd_tx_rx_msg rx_msg[USB_EP_OUT_NUM]; -#ifdef CONFIG_USBDEV_TX_RX_THREAD -usb_osal_mq_t usbd_tx_rx_mq; -usb_osal_thread_t usbd_tx_rx_thread; +#if defined(CONFIG_USBDEV_TX_THREAD) +usb_osal_mq_t usbd_tx_mq; +usb_osal_thread_t usbd_tx_thread; +#endif +#if defined(CONFIG_USBDEV_RX_THREAD) +usb_osal_mq_t usbd_rx_mq; +usb_osal_thread_t usbd_rx_thread; #endif static void usbd_class_event_notify_handler(uint8_t event, void *arg); @@ -1094,36 +1098,55 @@ void usbd_event_ep0_out_complete_handler(uint8_t ep, uint32_t nbytes) void usbd_event_ep_in_complete_handler(uint8_t ep, uint32_t nbytes) { -#ifndef CONFIG_USBDEV_TX_RX_THREAD +#ifndef CONFIG_USBDEV_TX_THREAD if (tx_msg[ep & 0x7f].cb) { tx_msg[ep & 0x7f].cb(ep, nbytes); } #else tx_msg[ep & 0x7f].nbytes = nbytes; - usb_osal_mq_send(usbd_tx_rx_mq, (uint32_t)&tx_msg[ep & 0x7f]); + usb_osal_mq_send(usbd_tx_mq, (uint32_t)&tx_msg[ep & 0x7f]); #endif } void usbd_event_ep_out_complete_handler(uint8_t ep, uint32_t nbytes) { -#ifndef CONFIG_USBDEV_TX_RX_THREAD +#ifndef CONFIG_USBDEV_RX_THREAD if (rx_msg[ep & 0x7f].cb) { rx_msg[ep & 0x7f].cb(ep, nbytes); } #else rx_msg[ep & 0x7f].nbytes = nbytes; - usb_osal_mq_send(usbd_tx_rx_mq, (uint32_t)&rx_msg[ep & 0x7f]); + usb_osal_mq_send(usbd_rx_mq, (uint32_t)&rx_msg[ep & 0x7f]); #endif } -#ifdef CONFIG_USBDEV_TX_RX_THREAD -static void usbdev_tx_rx_thread(void *argument) +#ifdef CONFIG_USBDEV_TX_THREAD +static void usbdev_tx_thread(void *argument) +{ + struct usbd_tx_rx_msg *msg; + int ret; + + while (1) { + ret = usb_osal_mq_recv(usbd_tx_mq, (uint32_t *)&msg, 0xffffffff); + if (ret < 0) { + continue; + } + + if (msg->cb) { + msg->cb(msg->ep, msg->nbytes); + } + } +} +#endif + +#ifdef CONFIG_USBDEV_RX_THREAD +static void usbdev_rx_thread(void *argument) { struct usbd_tx_rx_msg *msg; int ret; while (1) { - ret = usb_osal_mq_recv(usbd_tx_rx_mq, (uint32_t *)&msg, 0xffffffff); + ret = usb_osal_mq_recv(usbd_rx_mq, (uint32_t *)&msg, 0xffffffff); if (ret < 0) { continue; } @@ -1199,13 +1222,23 @@ bool usb_device_is_configured(void) int usbd_initialize(void) { -#ifdef CONFIG_USBDEV_TX_RX_THREAD - usbd_tx_rx_mq = usb_osal_mq_create(32); - if (usbd_tx_rx_mq == NULL) { +#ifdef CONFIG_USBDEV_TX_THREAD + usbd_tx_mq = usb_osal_mq_create(16); + if (usbd_tx_mq == NULL) { + return -1; + } + usbd_tx_thread = usb_osal_thread_create("usbd_tx", CONFIG_USBDEV_TX_STACKSIZE, CONFIG_USBDEV_TX_PRIO, usbdev_tx_thread, NULL); + if (usbd_tx_thread == NULL) { + return -1; + } +#endif +#ifdef CONFIG_USBDEV_RX_THREAD + usbd_rx_mq = usb_osal_mq_create(16); + if (usbd_rx_mq == NULL) { return -1; } - usbd_tx_rx_thread = usb_osal_thread_create("usbd_tx_rx", CONFIG_USBDEV_TX_RX_STACKSIZE, CONFIG_USBDEV_TX_RX_PRIO, usbdev_tx_rx_thread, NULL); - if (usbd_tx_rx_thread == NULL) { + usbd_rx_thread = usb_osal_thread_create("usbd_rx", CONFIG_USBDEV_RX_STACKSIZE, CONFIG_USBDEV_RX_PRIO, usbdev_rx_thread, NULL); + if (usbd_rx_thread == NULL) { return -1; } #endif @@ -1217,7 +1250,7 @@ int usbd_deinitialize(void) usbd_core_cfg.intf_offset = 0; usb_slist_init(&usbd_intf_head); usb_dc_deinit(); -#ifdef CONFIG_USBDEV_TX_RX_THREAD +#if defined(CONFIG_USBDEV_TX_THREAD) || defined(CONFIG_USBDEV_RX_THREAD) #endif return 0; } diff --git a/demo/stm32/usb_device/stm32f429igt6/Core/Inc/FreeRTOSConfig.h b/demo/stm32/usb_device/stm32f429igt6/Core/Inc/FreeRTOSConfig.h new file mode 100644 index 00000000..5226adc9 --- /dev/null +++ b/demo/stm32/usb_device/stm32f429igt6/Core/Inc/FreeRTOSConfig.h @@ -0,0 +1,312 @@ +/* + FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd. + All rights reserved + + VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION. + + This file is part of the FreeRTOS distribution. + + FreeRTOS is free software; you can redistribute it and/or modify it under + the terms of the GNU General Public License (version 2) as published by the + Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception. + + *************************************************************************** + >>! NOTE: The modification to the GPL is included to allow you to !<< + >>! distribute a combined work that includes FreeRTOS without being !<< + >>! obliged to provide the source code for proprietary components !<< + >>! outside of the FreeRTOS kernel. !<< + *************************************************************************** + + FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + FOR A PARTICULAR PURPOSE. Full license text is available on the following + link: http://www.freertos.org/a00114.html + + *************************************************************************** + * * + * FreeRTOS provides completely free yet professionally developed, * + * robust, strictly quality controlled, supported, and cross * + * platform software that is more than just the market leader, it * + * is the industry's de facto standard. * + * * + * Help yourself get started quickly while simultaneously helping * + * to support the FreeRTOS project by purchasing a FreeRTOS * + * tutorial book, reference manual, or both: * + * http://www.FreeRTOS.org/Documentation * + * * + *************************************************************************** + + http://www.FreeRTOS.org/FAQHelp.html - Having a problem? Start by reading + the FAQ page "My application does not run, what could be wrong?". Have you + defined configASSERT()? + + http://www.FreeRTOS.org/support - In return for receiving this top quality + embedded software for free we request you assist our global community by + participating in the support forum. + + http://www.FreeRTOS.org/training - Investing in training allows your team to + be as productive as possible as early as possible. Now you can receive + FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers + Ltd, and the world's leading authority on the world's leading RTOS. + + http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products, + including FreeRTOS+Trace - an indispensable productivity tool, a DOS + compatible FAT file system, and our tiny thread aware UDP/IP stack. + + http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate. + Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS. + + http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High + Integrity Systems ltd. to sell under the OpenRTOS brand. Low cost OpenRTOS + licenses offer ticketed support, indemnification and commercial middleware. + + http://www.SafeRTOS.com - High Integrity Systems also provide a safety + engineered and independently SIL3 certified version for use in safety and + mission critical applications that require provable dependability. + +*/ + + +#ifndef FREERTOS_CONFIG_H +#define FREERTOS_CONFIG_H + +#include "stm32f4xx_hal.h" + +//��Բ�ͬ�ı��������ò�ͬ��stdint.h�ļ� +#if defined(__ICCARM__) || defined(__CC_ARM) || defined(__GNUC__) + #include <stdint.h> + extern uint32_t SystemCoreClock; +#endif + +//���� + +#define configASSERT(x) +/************************************************************************ + * FreeRTOS������������ѡ�� + *********************************************************************/ +/* ��1��RTOSʹ����ռʽ����������0��RTOSʹ��Э��ʽ��������ʱ��Ƭ�� + * + * ע���ڶ�������������ϣ�����ϵͳ���Է�Ϊ��ռʽ��Э��ʽ���֡� + * Э��ʽ����ϵͳ�����������ͷ�CPU���л�����һ������ + * �����л���ʱ����ȫȡ�����������е����� + */ +#define configUSE_PREEMPTION 1 + +//1ʹ��ʱ��Ƭ����(Ĭ��ʽʹ�ܵ�) +#define configUSE_TIME_SLICING 1 + +/* ijЩ����FreeRTOS��Ӳ�������ַ���ѡ����һ��Ҫִ�е����� + * ͨ�÷������ض���Ӳ���ķ��������¼�ơ����ⷽ�������� + * + * ͨ�÷����� + * 1.configUSE_PORT_OPTIMISED_TASK_SELECTION Ϊ 0 ����Ӳ����֧���������ⷽ���� + * 2.������������FreeRTOS֧�ֵ�Ӳ�� + * 3.��ȫ��Cʵ�֣�Ч���Ե������ⷽ���� + * 4.��ǿ��Ҫ���������������ȼ���Ŀ + * ���ⷽ���� + * 1.���뽫configUSE_PORT_OPTIMISED_TASK_SELECTION����Ϊ1�� + * 2.����һ�������ض��ܹ��Ļ��ָ�һ�������Ƽ���ǰ����[CLZ]ָ��� + * 3.��ͨ�÷�������Ч + * 4.һ��ǿ�������������ȼ���ĿΪ32 + * һ����Ӳ������ǰ����ָ������ʹ�õģ�MCUû����ЩӲ��ָ��Ļ��˺�Ӧ������Ϊ0�� + */ +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 + +/* ��1��ʹ�ܵ���ticklessģʽ����0������ϵͳ���ģ�tick���ж�һֱ���� + * ���迪�����ĵĻ����ܻᵼ�����س������⣬��Ϊ������˯����,�������°취��� + * + * ���ط����� + * 1.���������������Ӻ� + * 2.��ס��λ�������������˲���ɿ���λ���� + * + * 1.ͨ������ñ�� BOOT 0 �Ӹߵ�ƽ(3.3V) + * 2.�����ϵ磬���� + * + * 1.ʹ��FlyMcu����һ��оƬ��Ȼ��������� + * STMISP -> ���оƬ(z) + */ +#define configUSE_TICKLESS_IDLE 0 + +/* + * д��ʵ�ʵ�CPU�ں�ʱ��Ƶ�ʣ�Ҳ����CPUָ��ִ��Ƶ�ʣ�ͨ����ΪFclk + * FclkΪ����CPU�ں˵�ʱ���źţ�������˵��cpu��ƵΪ XX MHz�� + * ����ָ�����ʱ���źţ���Ӧ�ģ�1/Fclk��Ϊcpuʱ�����ڣ� + */ +#define configCPU_CLOCK_HZ (SystemCoreClock) + +//RTOSϵͳ�����жϵ�Ƶ�ʡ���һ���жϵĴ�����ÿ���ж�RTOS�������������� +#define configTICK_RATE_HZ (( TickType_t )1000) + +//��ʹ�õ�������ȼ� +#define configMAX_PRIORITIES (32) + +//��������ʹ�õĶ�ջ��С +#define configMINIMAL_STACK_SIZE ((unsigned short)128) + +//���������ַ������� +#define configMAX_TASK_NAME_LEN (16) + + //ϵͳ���ļ����������������ͣ�1��ʾΪ16λ�������Σ�0��ʾΪ32λ�������� +#define configUSE_16_BIT_TICKS 0 + +//�����������CPUʹ��Ȩ������ͬ���ȼ����û����� +#define configIDLE_SHOULD_YIELD 1 + +//���ö��� +#define configUSE_QUEUE_SETS 1 + +//��������֪ͨ���ܣ�Ĭ�Ͽ��� +#define configUSE_TASK_NOTIFICATIONS 1 + +//ʹ�û����ź��� +#define configUSE_MUTEXES 1 + +//ʹ�õݹ黥���ź��� +#define configUSE_RECURSIVE_MUTEXES 0 + +//Ϊ1ʱʹ�ü����ź��� +#define configUSE_COUNTING_SEMAPHORES 1 + +/* ���ÿ���ע����ź�������Ϣ���и��� */ +#define configQUEUE_REGISTRY_SIZE 10 + +#define configUSE_APPLICATION_TASK_TAG 0 + + +/***************************************************************** + FreeRTOS���ڴ������й�����ѡ�� +*****************************************************************/ +//֧�ֶ�̬�ڴ����� +#define configSUPPORT_DYNAMIC_ALLOCATION 1 +//֧�־�̬�ڴ� +#define configSUPPORT_STATIC_ALLOCATION 0 +//ϵͳ�����ܵĶѴ�С +#define configTOTAL_HEAP_SIZE ((size_t)(36*1024)) + + +/*************************************************************** + FreeRTOS�빳�Ӻ����йص�����ѡ�� +**************************************************************/ +/* ��1��ʹ�ÿ��й��ӣ�Idle Hook�����ڻص�����������0�����Կ��й��� + * + * ������������һ������������������û���ʵ�֣� + * FreeRTOS�涨�˺��������ֺͲ�����void vApplicationIdleHook(void )�� + * ���������ÿ�������������ڶ��ᱻ���� + * �����Ѿ�ɾ����RTOS��������������ͷŷ�������ǵĶ�ջ�ڴ档 + * ��˱��뱣֤����������Ա�CPUִ�� + * ʹ�ÿ��й��Ӻ�������CPU����ʡ��ģʽ�Ǻܳ����� + * �����Ե��û������������������API���� + */ +#define configUSE_IDLE_HOOK 0 + +/* ��1��ʹ��ʱ��Ƭ���ӣ�Tick Hook������0������ʱ��Ƭ���� + * + * + * ʱ��Ƭ������һ������������������û���ʵ�֣� + * FreeRTOS�涨�˺��������ֺͲ�����void vApplicationTickHook(void ) + * ʱ��Ƭ�жϿ��������Եĵ��� + * ��������dz���С�����ܴ���ʹ�ö�ջ�� + * ���ܵ����ԡ�FromISR" �� "FROM_ISR����β��API���� + */ + /*xTaskIncrementTick��������xPortSysTickHandler�жϺ����б����õġ���ˣ�vApplicationTickHook()����ִ�е�ʱ�����̲ܶ���*/ +#define configUSE_TICK_HOOK 0 + +//ʹ���ڴ�����ʧ�ܹ��Ӻ��� +#define configUSE_MALLOC_FAILED_HOOK 0 + +/* + * ����0ʱ���ö�ջ������ܣ����ʹ�ô˹��� + * �û������ṩһ��ջ������Ӻ��������ʹ�õĻ� + * ��ֵ����Ϊ1����2����Ϊ������ջ�����ⷽ�� */ +#define configCHECK_FOR_STACK_OVERFLOW 0 + + +/******************************************************************** + FreeRTOS������ʱ�������״̬�ռ��йص�����ѡ�� +**********************************************************************/ +//��������ʱ��ͳ�ƹ��� +#define configGENERATE_RUN_TIME_STATS 0 + //���ÿ��ӻ����ٵ��� +#define configUSE_TRACE_FACILITY 0 +/* ���configUSE_TRACE_FACILITYͬʱΪ1ʱ���������3������ + * prvWriteNameToBuffer() + * vTaskList(), + * vTaskGetRunTimeStats() +*/ +#define configUSE_STATS_FORMATTING_FUNCTIONS 1 + + +/******************************************************************** + FreeRTOS��Э���йص�����ѡ�� +*********************************************************************/ +//����Э�̣�����Э���Ժ���������ļ�croutine.c +#define configUSE_CO_ROUTINES 0 +//Э�̵���Ч���ȼ���Ŀ +#define configMAX_CO_ROUTINE_PRIORITIES ( 2 ) + + +/*********************************************************************** + FreeRTOS��������ʱ���йص�����ѡ�� +**********************************************************************/ + //����������ʱ�� +#define configUSE_TIMERS 1 +//������ʱ�����ȼ� +#define configTIMER_TASK_PRIORITY (configMAX_PRIORITIES-1) +//������ʱ�����г��� +#define configTIMER_QUEUE_LENGTH 10 +//������ʱ�������ջ��С +#define configTIMER_TASK_STACK_DEPTH (configMINIMAL_STACK_SIZE*2) + +/************************************************************ + FreeRTOS��ѡ��������ѡ�� +************************************************************/ +#define INCLUDE_xTaskGetSchedulerState 1 +#define INCLUDE_vTaskPrioritySet 1 +#define INCLUDE_uxTaskPriorityGet 1 +#define INCLUDE_vTaskDelete 1 +#define INCLUDE_vTaskCleanUpResources 1 +#define INCLUDE_vTaskSuspend 1 +#define INCLUDE_vTaskDelayUntil 1 +#define INCLUDE_vTaskDelay 1 +#define INCLUDE_eTaskGetState 1 +#define INCLUDE_xTimerPendFunctionCall 1 +//#define INCLUDE_xTaskGetCurrentTaskHandle 1 +//#define INCLUDE_uxTaskGetStackHighWaterMark 0 +//#define INCLUDE_xTaskGetIdleTaskHandle 0 + + +/****************************************************************** + FreeRTOS���ж��йص�����ѡ�� +******************************************************************/ +#ifdef __NVIC_PRIO_BITS + #define configPRIO_BITS __NVIC_PRIO_BITS +#else + #define configPRIO_BITS 4 +#endif +//�ж�������ȼ� +#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY 15 + +//ϵͳ�ɹ���������ж����ȼ� +#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY 5 + +#define configKERNEL_INTERRUPT_PRIORITY ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) ) /* 240 */ + +#define configMAX_SYSCALL_INTERRUPT_PRIORITY ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - 4) ) + + +/**************************************************************** + FreeRTOS���жϷ������йص�����ѡ�� +****************************************************************/ +#define xPortPendSVHandler PendSV_Handler +#define vPortSVCHandler SVC_Handler + + +/* ����Ϊʹ��Percepio Tracealyzer��Ҫ�Ķ���������Ҫʱ�� configUSE_TRACE_FACILITY ����Ϊ 0 */ +#if ( configUSE_TRACE_FACILITY == 1 ) +#include "trcRecorder.h" +#define INCLUDE_xTaskGetCurrentTaskHandle 1 // ����һ����ѡ�������ú����� TraceԴ��ʹ�ã�Ĭ�ϸ�ֵΪ0 ��ʾ���ã� +#endif + + +#endif /* FREERTOS_CONFIG_H */ + diff --git a/demo/stm32/usb_device/stm32f429igt6/Core/Inc/usb_config.h b/demo/stm32/usb_device/stm32f429igt6/Core/Inc/usb_config.h index c55bf494..972ada04 100644 --- a/demo/stm32/usb_device/stm32f429igt6/Core/Inc/usb_config.h +++ b/demo/stm32/usb_device/stm32f429igt6/Core/Inc/usb_config.h @@ -44,14 +44,24 @@ /* Enable test mode */ // #define CONFIG_USBDEV_TEST_MODE -//#define CONFIG_USBDEV_TX_RX_THREAD +//#define CONFIG_USBDEV_TX_THREAD +//#define CONFIG_USBDEV_RX_THREAD -#ifdef CONFIG_USBDEV_TX_RX_THREAD -#ifndef CONFIG_USBDEV_TX_RX_PRIO -#define CONFIG_USBDEV_TX_RX_PRIO 4 +#ifdef CONFIG_USBDEV_TX_THREAD +#ifndef CONFIG_USBDEV_TX_PRIO +#define CONFIG_USBDEV_TX_PRIO 4 #endif -#ifndef CONFIG_USBDEV_TX_RX_STACKSIZE -#define CONFIG_USBDEV_TX_RX_STACKSIZE 2048 +#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 #endif @@ -71,26 +81,32 @@ #define CONFIG_USBDEV_MSC_VERSION_STRING "0.01" #endif -// #define CONFIG_USBDEV_MSC_THREAD +#ifndef CONFIG_USBDEV_AUDIO_VERSION +#define CONFIG_USBDEV_AUDIO_VERSION 0x0100 +#endif -#ifdef CONFIG_USBDEV_MSC_THREAD -#ifndef CONFIG_USBDEV_MSC_STACKSIZE -#define CONFIG_USBDEV_MSC_STACKSIZE 2048 +#ifndef CONFIG_USBDEV_AUDIO_MAX_CHANNEL +#define CONFIG_USBDEV_AUDIO_MAX_CHANNEL 8 #endif -#ifndef CONFIG_USBDEV_MSC_PRIO -#define CONFIG_USBDEV_MSC_PRIO 4 +#ifndef CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE +#define CONFIG_USBDEV_RNDIS_RESP_BUFFER_SIZE 128 #endif + +#ifndef CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE +#define CONFIG_USBDEV_RNDIS_ETH_MAX_FRAME_SIZE 1536 #endif -#ifndef CONFIG_USBDEV_AUDIO_VERSION -#define CONFIG_USBDEV_AUDIO_VERSION 0x0100 +#ifndef CONFIG_USBDEV_RNDIS_VENDOR_ID +#define CONFIG_USBDEV_RNDIS_VENDOR_ID 0x0000ffff #endif -#ifndef CONFIG_USBDEV_AUDIO_MAX_CHANNEL -#define CONFIG_USBDEV_AUDIO_MAX_CHANNEL 8 +#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 @@ -134,9 +150,9 @@ /* ================ EHCI Configuration ================ */ -#define CONFIG_USB_EHCI_HCCR_BASE (0x20072000) -#define CONFIG_USB_EHCI_HCOR_BASE (0x20072000 + 0x10) -#define CONFIG_EHCI_FRAME_LIST_SIZE 1024 +#define CONFIG_USB_EHCI_HCCR_BASE (0x20072000) +#define CONFIG_USB_EHCI_HCOR_BASE (0x20072000 + 0x10) +#define CONFIG_USB_EHCI_FRAME_LIST_SIZE 1024 // #define CONFIG_USB_EHCI_INFO_ENABLE // #define CONFIG_USB_ECHI_HCOR_RESERVED_DISABLE // #define CONFIG_USB_EHCI_CONFIGFLAG diff --git a/demo/stm32/usb_device/stm32f429igt6/Core/Src/main.c b/demo/stm32/usb_device/stm32f429igt6/Core/Src/main.c index 3e4f60ed..0a417ffa 100644 --- a/demo/stm32/usb_device/stm32f429igt6/Core/Src/main.c +++ b/demo/stm32/usb_device/stm32f429igt6/Core/Src/main.c @@ -132,7 +132,7 @@ int main(void) extern void cdc_acm_msc_init(void); cdc_acm_msc_init(); -#ifdef CONFIG_USBDEV_TX_RX_THREAD +#if defined(CONFIG_USBDEV_TX_THREAD) || defined(CONFIG_USBDEV_RX_THREAD) vTaskStartScheduler(); #endif /* USER CODE END 2 */ |
