Просмотр исходного кода

add CFG_TUSB_OS_INC_PATH for os include path

useful for freertos/ prefix with esp IDF
hathach 4 лет назад
Родитель
Сommit
73872a5df0

+ 7 - 1
examples/device/cdc_msc_freertos/Makefile

@@ -7,12 +7,18 @@ FREERTOS_SRC = lib/FreeRTOS-Kernel
 
 INC += \
 	src \
+	src/FreeRTOSConfig \
 	$(TOP)/hw \
 	$(TOP)/$(FREERTOS_SRC)/include \
 	$(TOP)/$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)
 	
 # Example source
-EXAMPLE_SOURCE += $(wildcard src/*.c)
+EXAMPLE_SOURCE = \
+	src/freertos_hook.c \
+	src/main.c \
+	src/msc_disk.c \
+	src/usb_descriptors.c
+
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 
 # FreeRTOS source, all files in port folder

+ 0 - 2
examples/device/cdc_msc_freertos/src/CMakeLists.txt

@@ -8,9 +8,7 @@ if(EXISTS ${board_cmake})
     include(${board_cmake})
 endif()
 
-idf_component_get_property( FREERTOS_ORIG_INCLUDE_PATH freertos ORIG_INCLUDE_PATH)
 target_include_directories(${COMPONENT_TARGET} PUBLIC
-  "${FREERTOS_ORIG_INCLUDE_PATH}"
   "${TOP}/hw"
   "${TOP}/src"
 )

+ 4 - 0
examples/device/cdc_msc_freertos/src/FreeRTOSConfig.h → examples/device/cdc_msc_freertos/src/FreeRTOSConfig/FreeRTOSConfig.h

@@ -45,6 +45,10 @@
 // Include MCU header
 #include "bsp/board_mcu.h"
 
+#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3
+#error "ESP32-Sx should use IDF's FreeRTOSConfig.h"
+#endif
+
 extern uint32_t SystemCoreClock;
 
 /* Cortex M23/M33 port configuration. */

+ 9 - 7
examples/device/cdc_msc_freertos/src/main.c

@@ -27,15 +27,17 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "FreeRTOS.h"
-#include "task.h"
-#include "timers.h"
-#include "queue.h"
-#include "semphr.h"
-
 #include "bsp/board.h"
 #include "tusb.h"
 
+// FreeRTOS headers, MCUs such as esp32sx requires "freertos/" prefix in include path.
+// CFG_TUSB_OS_INC_PATH should be defined accordingly.
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,FreeRTOS.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,semphr.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,queue.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,task.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,timers.h)
+
 //--------------------------------------------------------------------+
 // MACRO CONSTANT TYPEDEF PROTYPES
 //--------------------------------------------------------------------+
@@ -95,7 +97,7 @@ int main(void)
   (void) xTaskCreateStatic( cdc_task, "cdc", CDC_STACK_SZIE, NULL, configMAX_PRIORITIES-2, cdc_stack, &cdc_taskdef);
 
   // skip starting scheduler (and return) for ESP32-S2 or ESP32-S3
-#if CFG_TUSB_MCU != OPT_MCU_ESP32S2 && CFG_TUSB_MCU != OPT_MCU_ESP32S3
+#if !( TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3) )
   vTaskStartScheduler();
 #endif
 

+ 5 - 0
examples/device/cdc_msc_freertos/src/tusb_config.h

@@ -67,6 +67,11 @@
 // This examples use FreeRTOS
 #define CFG_TUSB_OS               OPT_OS_FREERTOS
 
+// Espressif IDF requires "freertos/" prefix in include path
+#if TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3)
+  #define CFG_TUSB_OS_INC_PATH    freertos/
+#endif
+
 // can be defined by compiler in DEBUG build
 #ifndef CFG_TUSB_DEBUG
   #define CFG_TUSB_DEBUG           0

+ 1 - 1
examples/device/hid_boot_interface/Makefile

@@ -6,7 +6,7 @@ INC += \
 	$(TOP)/hw \
 
 # Example source
-EXAMPLE_SOURCE += \
+EXAMPLE_SOURCE = \
 	src/main.c \
 	src/usb_descriptors.c
 	

+ 6 - 1
examples/device/hid_composite_freertos/Makefile

@@ -7,12 +7,17 @@ FREERTOS_SRC = lib/FreeRTOS-Kernel
 
 INC += \
 	src \
+	src/FreeRTOSConfig \
 	$(TOP)/hw \
 	$(TOP)/$(FREERTOS_SRC)/include \
 	$(TOP)/$(FREERTOS_SRC)/portable/GCC/$(FREERTOS_PORT)	
 
 # Example source
-EXAMPLE_SOURCE += $(wildcard src/*.c)
+EXAMPLE_SOURCE = \
+	src/freertos_hook.c \
+	src/main.c \
+	src/usb_descriptors.c
+	
 SRC_C += $(addprefix $(CURRENT_PATH)/, $(EXAMPLE_SOURCE))
 
 # FreeRTOS source, all files in port folder

+ 0 - 2
examples/device/hid_composite_freertos/src/CMakeLists.txt

@@ -8,9 +8,7 @@ if(EXISTS ${board_cmake})
     include(${board_cmake})
 endif()
 
-idf_component_get_property( FREERTOS_ORIG_INCLUDE_PATH freertos ORIG_INCLUDE_PATH)
 target_include_directories(${COMPONENT_TARGET} PUBLIC
-  "${FREERTOS_ORIG_INCLUDE_PATH}"
   "${TOP}/hw"
   "${TOP}/src"
 )

+ 4 - 0
examples/device/hid_composite_freertos/src/FreeRTOSConfig.h → examples/device/hid_composite_freertos/src/FreeRTOSConfig/FreeRTOSConfig.h

@@ -45,6 +45,10 @@
 // Include MCU header
 #include "bsp/board_mcu.h"
 
+#if CFG_TUSB_MCU == OPT_MCU_ESP32S2 || CFG_TUSB_MCU == OPT_MCU_ESP32S3
+#error "ESP32-Sx should use IDF's FreeRTOSConfig.h"
+#endif
+
 extern uint32_t SystemCoreClock;
 
 /* Cortex M23/M33 port configuration. */

+ 9 - 8
examples/device/hid_composite_freertos/src/main.c

@@ -27,17 +27,18 @@
 #include <stdio.h>
 #include <string.h>
 
-#include "FreeRTOS.h"
-#include "task.h"
-#include "timers.h"
-#include "queue.h"
-#include "semphr.h"
-
 #include "bsp/board.h"
 #include "tusb.h"
-
 #include "usb_descriptors.h"
 
+// FreeRTOS headers, MCUs such as esp32sx requires "freertos/" prefix in include path.
+// CFG_TUSB_OS_INC_PATH should be defined accordingly.
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,FreeRTOS.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,semphr.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,queue.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,task.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,timers.h)
+
 //--------------------------------------------------------------------+
 // MACRO CONSTANT TYPEDEF PROTYPES
 //--------------------------------------------------------------------+
@@ -96,7 +97,7 @@ int main(void)
   (void) xTaskCreateStatic( hid_task, "hid", HID_STACK_SZIE, NULL, configMAX_PRIORITIES-2, hid_stack, &hid_taskdef);
 
   // skip starting scheduler (and return) for ESP32-S2 or ESP32-S3
-#if CFG_TUSB_MCU != OPT_MCU_ESP32S2 && CFG_TUSB_MCU != OPT_MCU_ESP32S3
+#if !( TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3) )
   vTaskStartScheduler();
 #endif
 

+ 6 - 0
examples/device/hid_composite_freertos/src/tusb_config.h

@@ -67,6 +67,12 @@
 // This examples use FreeRTOS
 #define CFG_TUSB_OS               OPT_OS_FREERTOS
 
+// Espressif IDF requires "freertos/" prefix in include path
+#if TU_CHECK_MCU(ESP32S2) || TU_CHECK_MCU(ESP32S3)
+  #define CFG_TUSB_OS_INC_PATH    freertos/
+#endif
+
+
 #ifndef CFG_TUSB_DEBUG
 #define CFG_TUSB_DEBUG           0
 #endif

+ 0 - 2
hw/bsp/esp32s2/boards/CMakeLists.txt

@@ -6,9 +6,7 @@ idf_component_register(SRCS esp32s2.c
 # Apply board specific content
 include("${BOARD}/board.cmake")
 
-idf_component_get_property( FREERTOS_ORIG_INCLUDE_PATH freertos ORIG_INCLUDE_PATH)
 target_include_directories(${COMPONENT_TARGET} PUBLIC
-  "${FREERTOS_ORIG_INCLUDE_PATH}"
   "${TOP}/hw"
   "${TOP}/src"  
 )

+ 3 - 0
src/common/tusb_compiler.h

@@ -32,6 +32,7 @@
 #ifndef _TUSB_COMPILER_H_
 #define _TUSB_COMPILER_H_
 
+#define TU_TOKEN(x)           x
 #define TU_STRING(x)          #x                  ///< stringify without expand
 #define TU_XSTRING(x)         TU_STRING(x)        ///< expand then stringify
 
@@ -41,6 +42,8 @@
 #define TU_XSTRCAT(a, b)      TU_STRCAT(a, b)     ///< expand then concat
 #define TU_XSTRCAT3(a, b, c)  TU_STRCAT3(a, b, c) ///< expand then concat 3 tokens
 
+#define TU_INCLUDE_PATH(_dir,_file) TU_XSTRING( TU_TOKEN(_dir)TU_TOKEN(_file) )
+
 #if defined __COUNTER__ && __COUNTER__ != __COUNTER__
   #define _TU_COUNTER_ __COUNTER__
 #else

+ 4 - 4
src/osal/osal_freertos.h

@@ -28,10 +28,10 @@
 #define _TUSB_OSAL_FREERTOS_H_
 
 // FreeRTOS Headers
-#include "FreeRTOS.h"
-#include "semphr.h"
-#include "queue.h"
-#include "task.h"
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,FreeRTOS.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,semphr.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,queue.h)
+#include TU_INCLUDE_PATH(CFG_TUSB_OS_INC_PATH,task.h)
 
 #ifdef __cplusplus
 extern "C" {

+ 6 - 0
src/tusb_option.h

@@ -203,14 +203,20 @@
   #define CFG_TUSB_MEM_SECTION
 #endif
 
+// alignment requirement of buffer used for endpoint transferring
 #ifndef CFG_TUSB_MEM_ALIGN
   #define CFG_TUSB_MEM_ALIGN      TU_ATTR_ALIGNED(4)
 #endif
 
+// OS selection
 #ifndef CFG_TUSB_OS
   #define CFG_TUSB_OS             OPT_OS_NONE
 #endif
 
+#ifndef CFG_TUSB_OS_INC_PATH
+  #define CFG_TUSB_OS_INC_PATH
+#endif
+
 //--------------------------------------------------------------------
 // DEVICE OPTIONS
 //--------------------------------------------------------------------