1# Copyright (c) 2021 Percepio AB
2# SPDX-License-Identifier: Apache-2.0
3
4config PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
5    bool
6     default n
7
8config PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
9    bool
10    default n
11
12config PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
13    bool
14    default n
15
16config PERCEPIO_TRC_CFG_RECORDER_RTOS_BAREMETAL
17    bool
18     default n
19
20choice PERCEPIO_TRC_CFG_START_MODE
21	prompt "Recorder Start Mode"
22	default PERCEPIO_TRC_START_MODE_START_FROM_HOST
23	help
24	  TRC_START: Starts the tracing directly. In snapshot mode this allows for
25	  starting the trace at any point in your code, assuming vTraceEnable(TRC_INIT)
26	  has been called in the startup.
27	  Can also be used for streaming without Tracealyzer control, e.g. to a local
28	  flash file system (assuming such a "stream port", see trcStreamingPort.h).
29
30	  TRC_START_AWAIT_HOST: For streaming mode only. Initializes the trace recorder
31	  if necessary and waits for a Start command from Tracealyzer ("Start Recording"
32	  button). This call is intentionally blocking! By calling vTraceEnable with
33	  this option from the startup code, you start tracing at this point and capture
34	  the early events.
35
36	  TRC_START_FROM_HOST: Initializes the trace recorder, but does not start the tracing.
37	  In snapshot mode, this must be followed by a vTraceEnable(TRC_START) sometime
38	  later.
39
40config PERCEPIO_TRC_START_MODE_START
41	bool "Start"
42
43config PERCEPIO_TRC_START_MODE_START_AWAIT_HOST
44	bool "Start Await Host"
45	depends on PERCEPIO_TRC_RECORDER_MODE_STREAMING && !PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER
46
47config PERCEPIO_TRC_START_MODE_START_FROM_HOST
48	bool "Start From Host"
49endchoice
50
51choice PERCEPIO_TRC_CFG_STREAM_PORT
52    prompt "Stream Port"
53    depends on PERCEPIO_TRC_RECORDER_MODE_STREAMING
54    default PERCEPIO_TRC_CFG_STREAM_PORT_RTT
55
56config PERCEPIO_TRC_CFG_STREAM_PORT_RTT
57	bool "RTT"
58	depends on (ARM && PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR) || \
59	PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX || \
60	PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
61	select USE_SEGGER_RTT if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
62
63config PERCEPIO_TRC_CFG_STREAM_PORT_ITM
64	bool "ITM"
65	depends on (ARM && PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR) || \
66	PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX || \
67	PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS
68
69config PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER
70	bool "Ring Buffer"
71
72config PERCEPIO_TRC_CFG_STREAM_PORT_FILE
73	bool "File"
74	depends on !PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
75
76config PERCEPIO_TRC_CFG_STREAM_PORT_TCPIP
77	bool "TCP/IP"
78	depends on !PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
79
80config PERCEPIO_TRC_CFG_STREAM_PORT_STM32_USB_CDC
81	bool "STM32 USB CDC"
82	depends on !PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
83
84config PERCEPIO_TRC_CFG_STREAM_PORT_ZEPHYR_SEMIHOST
85	bool "Semihost"
86	depends on PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR && \
87	QEMU_TARGET && SEMIHOST
88
89endchoice
90
91if PERCEPIO_TRC_CFG_STREAM_PORT_RTT
92rsource "../streamports/Jlink_RTT/Kconfig"
93endif
94if PERCEPIO_TRC_CFG_STREAM_PORT_ITM
95rsource "../streamports/ARM_ITM/Kconfig"
96endif
97if PERCEPIO_TRC_CFG_STREAM_PORT_RINGBUFFER
98rsource "../streamports/RingBuffer/Kconfig"
99endif
100if PERCEPIO_TRC_CFG_STREAM_PORT_ZEPHYR_SEMIHOST
101rsource "../kernelports/Zephyr/streamports/Semihost/Kconfig"
102endif
103
104choice PERCEPIO_TRC_CFG_RECORDER_BUFFER_ALLOCATION
105    prompt "Recorder Allocation Mode"
106    default PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_STATIC
107    help
108      Specifies how the recorder buffer is allocated (also in case of streaming, in
109      port using the recorders internal temporary buffer)
110
111      Values:
112        PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_STATIC  - Static allocation (internal)
113        PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC - Malloc in vTraceEnable
114        PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_CUSTOM  - Use vTraceSetRecorderDataBuffer
115
116      Static and dynamic mode does the allocation for you, either in compile time
117      (static) or in runtime (malloc).
118      The custom mode allows you to control how and where the allocation is made,
119      for details see PERCEPIO_TRC_ALLOC_CUSTOM_BUFFER and vTraceSetRecorderDataBuffer().
120
121config PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_STATIC
122	bool "Static allocation"
123
124config PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_DYNAMIC
125	bool "Dynamic allocation"
126
127config PERCEPIO_TRC_RECORDER_BUFFER_ALLOCATION_CUSTOM
128	bool "Custom allocation"
129endchoice
130
131
132menu "Coverage"
133	depends on !PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
134config PERCEPIO_TRC_CFG_SCHEDULING_ONLY
135    bool "Only Record Scheduling Events"
136    default n
137
138config PERCEPIO_TRC_CFG_INCLUDE_MEMMANG_EVENTS
139    bool "Trace Memory Management Events"
140    depends on !PERCEPIO_TRC_CFG_SCHEDULING_ONLY
141    default y
142    help
143      This controls if malloc and free calls should be traced. Disable this to exclude
144      malloc/free calls, or enable it to include such events in the trace.
145
146config PERCEPIO_TRC_CFG_INCLUDE_USER_EVENTS
147    bool "Trace User Events"
148    depends on !PERCEPIO_TRC_CFG_SCHEDULING_ONLY
149    default y
150    help
151      If this is disabled, all code related to User Events is excluded in order
152      to reduce code size. Any attempts to store User Events are then silently
153      ignored.
154
155      User Events are application-generated events, like "printf" but for the
156      trace log, generated using vTracePrint and vTracePrintF.
157      The formatting is done on host-side, by Tracealyzer. User Events are
158      therefore much faster than a console printf and can often be used
159      in timing critical code without problems.
160
161      Note: In streaming mode, User Events are used to provide error messages
162      and warnings from the recorder (in case of incorrect configuration) for
163      display in Tracealyzer. Disabling user events will also disable these
164      warnings. You can however still catch them by calling xTraceGetLastError
165      or by putting breakpoints in prvTraceError and prvTraceWarning.
166
167config PERCEPIO_TRC_CFG_INCLUDE_ISR_TRACING
168    bool "Trace ISR Events"
169    depends on !PERCEPIO_TRC_CFG_SCHEDULING_ONLY
170    default y
171    help
172      If this is disabled, the code for recording Interrupt Service Routines is
173      excluded, in order to reduce code size. This means that any calls to
174      vTraceStoreISRBegin/vTraceStoreISREnd will be ignored.
175      This does not completely disable ISR tracing, in cases where an ISR is
176      calling a traced kernel service. These events will still be recorded and
177      show up in anonymous ISR instances in Tracealyzer, with names such as
178      "ISR sending to <queue name>".
179      To disable such tracing, please refer to vTraceSetFilterGroup and vTraceSetFilterMask.
180
181config PERCEPIO_TRC_CFG_INCLUDE_READY_EVENTS
182    bool "Trace Task Ready Events"
183    depends on !PERCEPIO_TRC_CFG_SCHEDULING_ONLY
184    default y
185    help
186      If enabled, events are recorded when tasks enter scheduling state "ready".
187      This allows Tracealyzer to show the initial pending time before tasks enter
188      the execution state, and present accurate response times.
189      If disabled, "ready events" are not created, which allows for recording
190      longer traces in the same amount of RAM.
191
192config PERCEPIO_TRC_CFG_INCLUDE_OSTICK_EVENTS
193    bool "Trace OS Tick Events"
194    depends on !PERCEPIO_TRC_CFG_SCHEDULING_ONLY
195    default y
196    help
197      If this is enabled, events will be generated whenever the OS clock is
198      increased. If disabled, OS tick events are not generated, which allows for
199      recording longer traces in the same amount of RAM.
200endmenu
201
202
203menu "Control Task"
204config PERCEPIO_TRC_CFG_CTRL_TASK_PRIORITY
205	int "Control Task Priority"
206	range 0 32 if PERCEPIO_TRC_CFG_RECORDER_RTOS_FREERTOS || PERCEPIO_TRC_CFG_RECORDER_RTOS_THREADX
207  	range -32 32 if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
208	default 4
209	help
210	  In streaming mode, TzCtrl is used to receive start/stop commands from
211	  Tracealyzer and in some cases also to transmit the trace data (for stream
212	  ports that uses the internal buffer, like TCP/IP). For such stream ports,
213	  make sure the TzCtrl priority is high enough to ensure reliable periodic
214	  execution and transfer of the data, but low enough to avoid disturbing any
215	  time-sensitive functions.
216
217	  In Snapshot mode, TzCtrl is only used for the stack usage monitoring and is
218	  not created if stack monitoring is disabled. PERCEPIO_TRC_CFG_CTRL_TASK_PRIORITY should
219	  be low, to avoid disturbing any time-sensitive tasks.
220
221config PERCEPIO_TRC_CFG_CTRL_TASK_DELAY
222	int "Control Task Delay"
223	range 1 1000000000
224	default 10
225	help
226	  The delay between loops of the TzCtrl task (see PERCEPIO_TRC_CFG_CTRL_TASK_PRIORITY),
227	  which affects the frequency of the stack monitoring.
228
229	  In streaming mode, this also affects the trace data transfer if you are using
230	  a stream port leveraging the internal buffer (like TCP/IP). A shorter delay
231	  increases the CPU load of TzCtrl somewhat, but may improve the performance of
232	  of the trace streaming, especially if the trace buffer is small.
233
234config PERCEPIO_TRC_CFG_CTRL_TASK_STACK_SIZE
235	int "Control Task Stack Size"
236	range 1 1048576
237	default 256
238	help
239	  The stack size of the Tracealyzer Control (TzCtrl) task.
240	  See PERCEPIO_TRC_CFG_CTRL_TASK_PRIORITY for further information about TzCtrl.
241endmenu
242
243menuconfig PERCEPIO_TRC_CFG_ENABLE_STACK_MONITOR
244	bool "Stack Monitor"
245  	select TRACING_STACK if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
246	select THREAD_STACK_INFO if PERCEPIO_TRC_CFG_RECORDER_RTOS_ZEPHYR
247	default y
248	help
249	  If enabled (1), the recorder periodically reports the unused stack space of
250	  all active tasks. The stack monitoring runs in the Tracealyzer Control task,
251	  TzCtrl. This task is always created by the recorder when in streaming mode.
252	  In snapshot mode, the TzCtrl task is only used for stack monitoring and is
253	  not created unless this is enabled.
254
255if PERCEPIO_TRC_CFG_ENABLE_STACK_MONITOR
256
257config PERCEPIO_TRC_CFG_STACK_MONITOR_MAX_TASKS
258	int "Stack Monitor Max Tasks"
259	range 1 64
260	default 15
261	help
262	  This controls how many tasks that can be monitored by the stack monitor.
263	  If this is too small, some tasks will be excluded and a warning is shown.
264
265config PERCEPIO_TRC_CFG_STACK_MONITOR_MAX_REPORTS
266	int "Stack Monitor Max Reports"
267	range 1 64
268	default 1
269	help
270	  This defines how many tasks that will be subject to stack usage analysis for
271	  each execution of the Tracealyzer Control task (TzCtrl). Note that the stack
272	  monitoring cycles between the tasks, so this does not affect WHICH tasks that
273	  are monitored, but HOW OFTEN each task stack is analyzed.
274
275	  This setting can be combined with PERCEPIO_TRC_CFG_CTRL_TASK_DELAY to tune the
276	  frequency of the stack monitoring. This is motivated since the stack analysis
277	  can take some time to execute.
278	  However, note that the stack analysis runs in a separate task (TzCtrl) that
279	  can be executed on low priority. This way, you can avoid that the stack
280	  analysis disturbs any time-sensitive tasks.
281
282endif # PERCEPIO_TRC_CFG_ENABLE_STACK_MONITOR
283
284
285menu "ISR"
286config PERCEPIO_TRC_CFG_MAX_ISR_NESTING
287	int "Max ISR Nesting"
288	range 1 1048576
289	default 8
290	help
291	  Defines how many levels of interrupt nesting the recorder can handle, in
292	  case multiple ISRs are traced and ISR nesting is possible. If this
293	  is exceeded, the particular ISR will not be traced and the recorder then
294	  logs an error message. This setting is used to allocate an internal stack
295	  for keeping track of the previous execution context (4 byte per entry).
296
297config PERCEPIO_TRC_CFG_ISR_TAILCHAINING_THRESHOLD
298	int "ISR Tailchaining Threshold"
299	range 0 4194304
300	default 0
301	help
302	  If tracing multiple ISRs, this setting allows for accurate display of the
303	  context-switching also in cases when the ISRs execute in direct sequence.
304
305	  vTraceStoreISREnd normally assumes that the ISR returns to the previous
306	  context, i.e., a task or a preempted ISR. But if another traced ISR
307	  executes in direct sequence, Tracealyzer may incorrectly display a minimal
308	  fragment of the previous context in between the ISRs.
309
310	  By using PERCEPIO_TRC_CFG_ISR_TAILCHAINING_THRESHOLD you can avoid this. This is
311	  however a threshold value that must be measured for your specific setup.
312	  See http://percepio.com/2014/03/21/isr_tailchaining_threshold/
313
314	  The default setting is 0, meaning "disabled" and that you may get an
315	  extra fragments of the previous context in between tail-chained ISRs.
316endmenu
317
318
319menu "Debug"
320config PERCEPIO_TRC_CFG_RECORDER_DATA_INIT
321  int "Data Init"
322  default 1
323  help
324    Macro that states wether the recorder data should have an initial value.
325
326    In very specific cases where traced objects are created before main(),
327    the recorder will need to be started even before that. In these cases,
328    the recorder data would be initialized by xTraceInitialize() but could
329    then later be overwritten by the initialization value.
330    If this is an issue for you, set PERCEPIO_TRC_CFG_RECORDER_DATA_INIT to 0.
331    The following code can then be used before any traced objects are created:
332
333    extern uint32_t RecorderEnabled;
334    RecorderEnabled = 0;
335    xTraceInitialize();
336
337    After the clocks are properly initialized, use vTraceEnable(...) to start
338    the tracing.
339
340config PERCEPIO_TRC_CFG_USE_TRACE_ASSERT
341  bool "Trace Asserts"
342  default n
343  help
344    Enable or disable debug asserts. Information regarding any assert that is
345    triggered will be in trcAssert.c.
346endmenu
347
348
349if PERCEPIO_TRC_RECORDER_MODE_SNAPSHOT
350
351menu "Snapshot Config"
352choice PERCEPIO_TRC_CFG_SNAPSHOT_MODE
353	prompt "Snapshot Mode"
354	default PERCEPIO_TRC_SNAPSHOT_MODE_RING_BUFFER
355	help
356	  With PERCEPIO_TRC_CFG_SNAPSHOT_MODE set to PERCEPIO_TRC_CFG_SNAPSHOT_MODE_RING_BUFFER, the
357	  events are stored in a ring buffer, i.e., where the oldest events are
358	  overwritten when the buffer becomes full. This allows you to get the last
359	  events leading up to an interesting state, e.g., an error, without having
360	  to store the whole run since startup.
361
362	  When PERCEPIO_TRC_CFG_SNAPSHOT is PERCEPIO_TRC_SNAPSHOT_MODE_STOP_WHEN_FULL, the
363	  recording is stopped when the buffer becomes full. This is useful for
364	  recording events following a specific state, e.g., the startup sequence.
365
366config PERCEPIO_TRC_SNAPSHOT_MODE_RING_BUFFER
367	bool "Ring buffer mode"
368
369config PERCEPIO_TRC_SNAPSHOT_MODE_RING_STOP_WHEN_FULL
370	bool "Stop when full"
371endchoice
372
373config PERCEPIO_TRC_CFG_EVENT_BUFFER_SIZE
374	int "Event Buffer Size"
375	range 1 4194304
376	default 1000
377	help
378	  This defines the capacity of the event buffer, i.e., the number of records
379	  it may store. Most events use one record (4 byte), although some events
380	  require multiple 4-byte records. You should adjust this to the amount of RAM
381	  available in the target system.
382
383	  Default value is 1000, which means that 4000 bytes is allocated for the
384	  event buffer.
385
386config PERCEPIO_TRC_CFG_INCLUDE_FLOAT_SUPPORT
387	bool "Include Float Support"
388	default 0
389	help
390	  If this is zero (0), the support for logging floating point values in
391	  vTracePrintF is stripped out, in case floating point values are not used or
392	  supported by the platform used.
393
394	  Floating point values are only used in vTracePrintF and its subroutines, to
395	  allow for storing float (%f) or double (%lf) arguments.
396
397	  vTracePrintF can be used with integer and string arguments in either case.
398
399config PERCEPIO_TRC_CFG_SYMBOL_TABLE_SIZE
400	int "Symbol Table Size"
401	range 1 4194304
402	default 800
403	help
404	  This defines the capacity of the symbol table, in bytes. This symbol table
405	  stores User Event labels and names of deleted tasks, queues, or other kernel
406	  objects. If you don't use User Events or delete any kernel
407	  objects you set this to a very low value. The minimum recommended value is 4.
408	  A size of zero (0) is not allowed since a zero-sized array may result in a
409	  32-bit pointer, i.e., using 4 bytes rather than 0.
410
411menu "Advanced Settings"
412config PERCEPIO_TRC_CFG_HEAP_SIZE_BELOW_16M
413	bool "Heap Size Below 16M"
414	default n
415	help
416	  An integer constant that can be used to reduce the buffer usage of memory
417	  allocation events (malloc/free). This value should be 1 if the heap size is
418	  below 16 MB (2^24 byte), and you can live with reported addresses showing the
419	  lower 24 bits only. If set to 0, you get the full 32-bit addresses.
420
421config PERCEPIO_TRC_CFG_USE_IMPLICIT_IFE_RULES
422	bool "Use Implicit IFE Rules"
423	default y
424	help
425	  Tracealyzer groups the events into "instances" based on Instance Finish
426	  Events (IFEs), produced either by default rules or calls to the recorder
427	  functions vTraceInstanceFinishedNow and vTraceInstanceFinishedNext.
428
429	  If PERCEPIO_TRC_CFG_USE_IMPLICIT_IFE_RULES is one (1), the default IFE rules are
430	  used, resulting in a "typical" grouping of events into instances.
431	  If these rules don't give appropriate instances in your case, you can
432	  override the default rules using vTraceInstanceFinishedNow/Next for one
433	  or several tasks. The default IFE rules are then disabled for those tasks.
434
435	  If PERCEPIO_TRC_CFG_USE_IMPLICIT_IFE_RULES is zero (0), the implicit IFE rules are
436	  disabled globally. You must then call vTraceInstanceFinishedNow or
437	  vTraceInstanceFinishedNext to manually group the events into instances,
438	  otherwise the tasks will appear a single long instance.
439
440	  The default IFE rules count the following events as "instance finished":
441	    - Task delay, delay until
442	    - Task suspend
443	    - Blocking on "input" operations, i.e., when the task is waiting for the
444	    next a message/signal/event. But only if this event is blocking.
445
446config PERCEPIO_TRC_CFG_USE_16BIT_OBJECT_HANDLES
447	bool "Use 16 Bit Object Handles"
448	default n
449	help
450	  If set to 0 (zero), the recorder uses 8-bit handles to identify kernel
451	  objects such as tasks and queues. This limits the supported number of
452	  concurrently active objects to 255 of each type (tasks, queues, mutexes,
453	  etc.) Note: 255, not 256, since handle 0 is reserved.
454
455	  If set to 1 (one), the recorder uses 16-bit handles to identify kernel
456	  objects such as tasks and queues. This limits the supported number of
457	  concurrent objects to 65535 of each type (object class). However, since the
458	  object property table is limited to 64 KB, the practical limit is about
459	  3000 objects in total.
460
461	  Default is 0 (8-bit handles)
462
463	  NOTE: An object with handle above 255 will use an extra 4-byte record in
464	  the event buffer whenever the object is referenced. Moreover, some internal
465	  tables in the recorder gets slightly larger when using 16-bit handles.
466
467config PERCEPIO_TRC_CFG_USE_SEPARATE_USER_EVENT_BUFFER
468	bool "Use Separate User Event Buffer"
469	default n
470	help
471	  Set PERCEPIO_TRC_CFG_USE_SEPARATE_USER_EVENT_BUFFER to 1 to enable the
472	  separate user event buffer (UB).
473	  In this mode, user events are stored separately from other events,
474	  e.g., RTOS events. Thereby you can get a much longer history of
475	  user events as they don't need to share the buffer space with more
476	  frequent events.
477
478	  The UB is typically used with the snapshot ring-buffer mode, so the
479	  recording can continue when the main buffer gets full. And since the
480	  main buffer then overwrites the earliest events, Tracealyzer displays
481	  "Unknown Actor" instead of task scheduling for periods with UB data only.
482
483	  In UB mode, user events are structured as UB channels, which contains
484	  a channel name and a default format string. Register a UB channel using
485	  xTraceRegisterUBChannel.
486
487	  Events and data arguments are written using vTraceUBEvent and
488	  vTraceUBData. They are designed to provide efficient logging of
489	  repeating events, using the same format string within each channel.
490
491	  Examples:
492	    traceString chn1 = xTraceRegisterString("Channel 1");
493	    traceString fmt1 = xTraceRegisterString("Event!");
494	    traceUBChannel UBCh1 = xTraceRegisterUBChannel(chn1, fmt1);
495
496	    traceString chn2 = xTraceRegisterString("Channel 2");
497	    traceString fmt2 = xTraceRegisterString("X: %d, Y: %d");
498	    traceUBChannel UBCh2 = xTraceRegisterUBChannel(chn2, fmt2);
499
500	    // Result in "[Channel 1] Event!"
501	    vTraceUBEvent(UBCh1);
502
503	    // Result in "[Channel 2] X: 23, Y: 19"
504	    vTraceUBData(UBCh2, 23, 19);
505
506	    You can also use the other user event functions, like vTracePrintF.
507	    as they are then rerouted to the UB instead of the main event buffer.
508	    vTracePrintF then looks up the correct UB channel based on the
509	    provided channel name and format string, or creates a new UB channel
510	    if no match is found. The format string should therefore not contain
511	    "random" messages but mainly format specifiers. Random strings should
512	    be stored using %s and with the string as an argument.
513
514	    // Creates a new UB channel ("Channel 2", "%Z: %d")
515	    vTracePrintF(chn2, "%Z: %d", value1);
516
517	    // Finds the existing UB channel
518	    vTracePrintF(chn2, "%Z: %d", value2);
519
520config PERCEPIO_TRC_CFG_SEPARATE_USER_EVENT_BUFFER_SIZE
521	int "Separate User Event Buffer Size"
522	depends on PERCEPIO_TRC_CFG_USE_SEPARATE_USER_EVENT_BUFFER
523	range 1 4194304
524	default 200
525	help
526	  This defines the capacity of the user event buffer (UB), in number of slots.
527	  A single user event can use multiple slots, depending on its arguments.
528
529config PERCEPIO_TRC_CFG_UB_CHANNELS
530	int "User Event Buffer Channels"
531	depends on PERCEPIO_TRC_CFG_USE_SEPARATE_USER_EVENT_BUFFER
532	range 0 4194304
533	default 32
534	help
535	  This defines the number of User Event Buffer Channels (UB channels).
536	  These are used to structure the events when using the separate user
537	  event buffer, and contains both a User Event Channel (the name) and
538	  a default format string for the channel.
539endmenu # "Advanced Settings"
540endmenu # "Snapshot Config"
541
542endif # PERCEPIO_TRC_RECORDER_MODE_SNAPSHOT
543
544
545if PERCEPIO_TRC_RECORDER_MODE_STREAMING
546
547menu "Streaming Config"
548config PERCEPIO_TRC_CFG_ENTRY_SLOTS
549	int "Entry Slots"
550	range 1 4194304
551	default 50
552	help
553      The maximum number of objects and symbols that can be stored. This includes:
554       - Task names
555       - Named ISRs (vTraceSetISRProperties)
556       - Named kernel objects (vTraceStoreKernelObjectName)
557       - User event channels (xTraceStringRegister)
558
559      If this value is too small, not all symbol names will be stored and the
560      trace display will be affected. In that case, there will be warnings
561      (logged as User Events) from the TzCtrl task, which monitors this.
562
563config PERCEPIO_TRC_CFG_ENTRY_SYMBOL_MAX_LENGTH
564	int "Symbol Max Length"
565	range 1 28
566	default 28
567	help
568      The maximum length of symbol names, including:
569       - Task names
570       - Named ISRs (vTraceSetISRProperties)
571       - Named kernel objects (vTraceStoreKernelObjectName)
572       - User event channel names (xTraceStringRegister)
573
574      If longer symbol names are used, they will be truncated by the recorder,
575      which will affect the trace display. In that case, there will be warnings
576      (logged as User Events) from the TzCtrl task, which monitors this.
577endmenu # "Streaming Config"
578
579endif # PERCEPIO_TRC_RECORDER_MODE_STREAMING
580