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