Skip to content

Commit 7607807

Browse files
committed
Adds Espressif Component Registry support
1 parent 2257204 commit 7607807

File tree

9 files changed

+116
-83
lines changed

9 files changed

+116
-83
lines changed

CMakeLists.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
if(ESP_PLATFORM)
2+
include(${CMAKE_CURRENT_LIST_DIR}/kernelports/ESP-IDF_FreeRTOS/esp.cmake)
3+
endif()

Kconfig

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,36 @@
11
# Copyright (c) 2021 Percepio AB
22
# SPDX-License-Identifier: Apache-2.0
33

4-
menu "Trace Recorder"
5-
choice PERCEPIO_TRC_CFG_RECORDER_RTOS
6-
prompt "Recorder RTOS"
7-
default PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
4+
if !IDF_CMAKE
5+
menu "Trace Recorder"
6+
choice PERCEPIO_TRC_CFG_RECORDER_RTOS
7+
prompt "Recorder RTOS"
8+
default PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
89

9-
config PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
10-
bool "FreeRTOS"
11-
12-
config PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
13-
bool "ThreadX"
14-
15-
config PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
16-
bool "Zephyr"
17-
endchoice
10+
config PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
11+
bool "FreeRTOS"
12+
13+
config PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
14+
bool "ThreadX"
15+
16+
config PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
17+
bool "Zephyr"
18+
endchoice
1819

19-
if PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
20-
rsource "kernelports/FreeRTOS/config/Kconfig"
21-
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
20+
if PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
21+
# rsource "kernelports/FreeRTOS/config/Kconfig"
22+
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
2223

23-
if PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
24-
rsource "kernelports/ThreadX/config/Kconfig"
25-
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
24+
if PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
25+
# rsource "kernelports/ThreadX/config/Kconfig"
26+
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
2627

27-
if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
28-
rsource "kernelports/Zephyr/config/Kconfig"
29-
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
30-
endmenu # "Trace Recorder"
28+
if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
29+
# rsource "kernelports/Zephyr/config/Kconfig"
30+
endif # PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
31+
endmenu # "Trace Recorder"
32+
endif
33+
34+
if IDF_CMAKE
35+
rsource "kernelports/ESP-IDF_FreeRTOS/Kconfig.projbuild"
36+
endif

idf_component.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
version: "4.10.3"
2+
description: "This is a Percepio TraceRecorder component"
3+
url: "https://github.com/percepio/TraceRecorderSource"
4+
license: "Apache"
5+
6+
files:
7+
exclude:
8+
# Exclude code for other RTOSes
9+
- "kernelports/BareMetal/**/*"
10+
- "kernelports/FreeRTOS/**/*"
11+
- "kernelports/ThreadX/**/*"
12+
- "kernelports/Zephyr/**/*"
13+
# Exclude code for unsuported streamports
14+
- "streamports/ARM_ITM/**/*"
15+
- "streamports/File/**/*"
16+
- "streamports/STM32_USB_CDC/**/*"
17+
- "streamports/TCPIP/**/*"
18+
- "streamports/TCPIP_Win32/**/*"
19+
- "streamports/UDP/**/*"
20+
- "streamports/XMOS_xScope/**/*"
Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,5 @@
1-
# Only add the source/header files if the Tracerecorder is enables. By doing
2-
# this we avoid having a lot of conditional checks for configuration
3-
# options in the configuration files that use parameters from the KConfig,
4-
# parameters that are missing when the Tracerecorder is disabled.
5-
if(CONFIG_PERCEPIO_TRACERECORDER_ENABLED)
6-
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER)
7-
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/../../streamports/RingBuffer" ${CMAKE_CURRENT_LIST_DIR}/../../)
8-
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/../../streamports/RingBuffer/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/RingBuffer/config" ${CMAKE_CURRENT_LIST_DIR}/../../include)
9-
endif()
10-
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RTT)
11-
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/../../streamports/Jlink_RTT" ${CMAKE_CURRENT_LIST_DIR}/../../)
12-
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/../../streamports/Jlink_RTT/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/Jlink_RTT/config" ${CMAKE_CURRENT_LIST_DIR}/../../include)
13-
endif()
14-
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_ESP_IDF_APPTRACE)
15-
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/streamports/ESP_IDF_APPTRACE" ${CMAKE_CURRENT_LIST_DIR}/../../)
16-
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/ESP_IDF_APPTRACE/include" ${CMAKE_CURRENT_LIST_DIR}/../../include)
17-
endif()
18-
else()
19-
set(src_dirs "")
20-
set(inc_dirs "")
21-
endif()
221

23-
idf_component_register(SRC_DIRS "${src_dirs}"
24-
INCLUDE_DIRS "${inc_dirs}"
25-
LDFRAGMENTS "lifra.fr"
26-
PRIV_REQUIRES
27-
app_trace
28-
)
2+
include(${CMAKE_CURRENT_LIST_DIR}/esp.cmake)
293

304
# Since we inject Trace Recorder in the ESP-IDF we must expose the includes to ESP-IDF.
315
if(CONFIG_PERCEPIO_TRACERECORDER_ENABLED)
@@ -43,4 +17,4 @@ if(CONFIG_PERCEPIO_TRACERECORDER_ENABLED)
4317
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_ESP_IDF_APPTRACE)
4418
idf_build_set_property(INCLUDE_DIRECTORIES ${CMAKE_CURRENT_LIST_DIR}/streamports/ESP_IDF_APPTRACE/include APPEND)
4519
endif()
46-
endif()
20+
endif()

kernelports/ESP-IDF_FreeRTOS/config/trcConfig.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -323,6 +323,11 @@ extern "C" {
323323
#define TRC_CFG_CORE_COUNT 2
324324
#endif
325325

326+
/**
327+
* Force usage of GCC statement expressions. Avoid `-Werror=unused-value`.
328+
*/
329+
#define TRC_CFG_USE_GCC_STATEMENT_EXPR 1
330+
326331
#ifdef __cplusplus
327332
}
328333
#endif
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Only add the source/header files if the Tracerecorder is enables. By doing
2+
# this we avoid having a lot of conditional checks for configuration
3+
# options in the configuration files that use parameters from the KConfig,
4+
# parameters that are missing when the Tracerecorder is disabled.
5+
if(CONFIG_PERCEPIO_TRACERECORDER_ENABLED)
6+
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER)
7+
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/../../streamports/RingBuffer" ${CMAKE_CURRENT_LIST_DIR}/../../)
8+
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/../../streamports/RingBuffer/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/RingBuffer/config" ${CMAKE_CURRENT_LIST_DIR}/../../include)
9+
endif()
10+
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_RTT)
11+
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/../../streamports/Jlink_RTT" ${CMAKE_CURRENT_LIST_DIR}/../../)
12+
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/../../streamports/Jlink_RTT/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/Jlink_RTT/config" ${CMAKE_CURRENT_LIST_DIR}/../../include)
13+
endif()
14+
if(CONFIG_PERCEPIO_TRC_CFG_STREAM_PORT_ESP_IDF_APPTRACE)
15+
set(src_dirs ${CMAKE_CURRENT_LIST_DIR} "${CMAKE_CURRENT_LIST_DIR}/streamports/ESP_IDF_APPTRACE" ${CMAKE_CURRENT_LIST_DIR}/../../)
16+
set(inc_dirs "${CMAKE_CURRENT_LIST_DIR}/config" "${CMAKE_CURRENT_LIST_DIR}/include" "${CMAKE_CURRENT_LIST_DIR}/streamports/ESP_IDF_APPTRACE/include" ${CMAKE_CURRENT_LIST_DIR}/../../include)
17+
endif()
18+
else()
19+
set(src_dirs "")
20+
set(inc_dirs "")
21+
endif()
22+
23+
idf_component_register(SRC_DIRS "${src_dirs}"
24+
INCLUDE_DIRS "${inc_dirs}"
25+
LDFRAGMENTS "${CMAKE_CURRENT_LIST_DIR}/lifra.fr"
26+
PRIV_REQUIRES
27+
app_trace
28+
)

kernelports/ESP-IDF_FreeRTOS/include/trcKernelPort.h

Lines changed: 25 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,21 @@ extern "C" {
2727
#endif
2828

2929
/*** FreeRTOS version codes **************************************************/
30-
#define TRC_ESP_IDF_VERSION_NOT_SET 0
31-
#define TRC_ESP_IDF_VERSION_4_2_0 420
32-
#define TRC_ESP_IDF_VERSION_4_3_0 430
33-
#define TRC_ESP_IDF_VERSION_4_4_0 440
34-
#define TRC_ESP_IDF_VERSION_4_5_0 450
35-
#define TRC_ESP_IDF_VERSION_5_0_0 500
36-
#define TRC_ESP_IDF_VERSION_5_1_0 510
37-
#define TRC_ESP_IDF_VERSION_5_2_0 520
38-
39-
#if ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 0
40-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_0_0
41-
#elif ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 1
42-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_1_0
43-
#elif ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 2
44-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_2_0
45-
#elif ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 3
46-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_3_0
47-
#elif ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 4
48-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_4_0
49-
#elif ESP_IDF_VERSION_MAJOR == 4 && ESP_IDF_VERSION_MINOR == 5
50-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_4_5_0
51-
#elif ESP_IDF_VERSION_MAJOR == 5 && ESP_IDF_VERSION_MINOR == 0
52-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_5_0_0
53-
#elif ESP_IDF_VERSION_MAJOR == 5 && ESP_IDF_VERSION_MINOR == 1
54-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_5_1_0
55-
#elif ESP_IDF_VERSION_MAJOR == 5 && ESP_IDF_VERSION_MINOR == 2
56-
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_5_2_0
57-
#else
30+
#define TRC_ESP_IDF_VERSION_MAKE(_maj_, _min_) ((_maj_)*100+(_min_)*10)
31+
#define TRC_ESP_IDF_VERSION_NOT_SET TRC_ESP_IDF_VERSION_MAKE(0,0)
32+
#define TRC_ESP_IDF_VERSION_4_2_0 TRC_ESP_IDF_VERSION_MAKE(4,2)
33+
#define TRC_ESP_IDF_VERSION_4_3_0 TRC_ESP_IDF_VERSION_MAKE(4,3)
34+
#define TRC_ESP_IDF_VERSION_4_4_0 TRC_ESP_IDF_VERSION_MAKE(4,4)
35+
#define TRC_ESP_IDF_VERSION_4_5_0 TRC_ESP_IDF_VERSION_MAKE(4,5)
36+
#define TRC_ESP_IDF_VERSION_5_0_0 TRC_ESP_IDF_VERSION_MAKE(5,0)
37+
#define TRC_ESP_IDF_VERSION_5_1_0 TRC_ESP_IDF_VERSION_MAKE(5,1)
38+
#define TRC_ESP_IDF_VERSION_5_2_0 TRC_ESP_IDF_VERSION_MAKE(5,2)
39+
40+
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_MAKE(ESP_IDF_VERSION_MAJOR, ESP_IDF_VERSION_MINOR)
41+
42+
/* Sanity check that current IDF version is supported. */
43+
#if TRC_CFG_ESP_IDF_VERSION < TRC_ESP_IDF_VERSION_MAKE(4, 0) || \
44+
TRC_CFG_ESP_IDF_VERSION > TRC_ESP_IDF_VERSION_MAKE(5, 5)
5845
#define TRC_CFG_ESP_IDF_VERSION TRC_ESP_IDF_VERSION_NOT_SET
5946
#endif
6047

@@ -64,6 +51,12 @@ extern "C" {
6451
#define prvGetStreamBufferType(x) 0
6552
#endif
6653

54+
#if (TRC_CFG_ESP_IDF_VERSION < TRC_ESP_IDF_VERSION_MAKE(5,3))
55+
#define TRC_KERNEL_PORT_SYSTEM_INIT_FN(f, c, priority) ESP_SYSTEM_INIT_FN(f, c, priority)
56+
#else
57+
#define TRC_KERNEL_PORT_SYSTEM_INIT_FN(f, c, priority) ESP_SYSTEM_INIT_FN(f, SECONDARY, c, priority)
58+
#endif
59+
6760
#define STRING_CAST(x) x
6861
#define TraceKernelPortTickType_t TickType_t
6962
#define TraceKernelPortTaskHandle_t TaskHandle_t
@@ -73,6 +66,10 @@ extern "C" {
7366
#define TRC_CFG_GET_CURRENT_CORE() (xPortGetCoreID())
7467
#endif
7568

69+
#if !CONFIG_FREERTOS_SMP
70+
#define pxCurrentTCB pxCurrentTCBs
71+
#endif
72+
7673
#if !CONFIG_FREERTOS_UNICORE
7774
extern portMUX_TYPE xTraceMutex;
7875

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[mapping:TraceRecorder]
2-
archive: libESP-IDF_FreeRTOS.a
1+
[mapping:percepio_tracerecorder]
2+
archive: libpercepio_tracerecorder.a
33
entries:
44
* (noflash)

kernelports/ESP-IDF_FreeRTOS/trcKernelPort.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -333,12 +333,12 @@ esp_err_t xTraceEspKernelPortEnable()
333333

334334
#include <esp_private/startup_internal.h>
335335

336-
ESP_SYSTEM_INIT_FN(xTraceEspKernelPortInitialize, ESP_SYSTEM_INIT_ALL_CORES, 102)
336+
TRC_KERNEL_PORT_SYSTEM_INIT_FN(xTraceEspKernelPortInitialize, ESP_SYSTEM_INIT_ALL_CORES, 102)
337337
{
338338
return xTraceEspKernelPortInitialize();
339339
}
340340

341-
ESP_SYSTEM_INIT_FN(xTraceEspKernelPortEnable, ESP_SYSTEM_INIT_ALL_CORES, 240)
341+
TRC_KERNEL_PORT_SYSTEM_INIT_FN(xTraceEspKernelPortEnable, ESP_SYSTEM_INIT_ALL_CORES, 240)
342342
{
343343
return xTraceEspKernelPortEnable();
344344
}

0 commit comments

Comments
 (0)