Boot Linux faster!

Check our new training course

Boot Linux faster!

Check our new training course
and Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
# Console driver configuration options

# Copyright (c) 2014-2015 Wind River Systems, Inc.
# Copyright (c) 2016 Cadence Design Systems, Inc.
# SPDX-License-Identifier: Apache-2.0

# Setting shared by different subsystems

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_CONSOLE := zephyr,console

config UART_CONSOLE_ON_DEV_NAME
	string "Device Name of UART Device for UART Console"
	default "$(dt_chosen_label,$(DT_CHOSEN_Z_CONSOLE))" if HAS_DTS
	default "UART_0"
	depends on (UART_CONSOLE || CONSOLE_SUBSYS)
	help
	  This option specifies the name of UART device to be used for
	  UART console.

menuconfig CONSOLE
	bool "Console drivers"

if CONSOLE

config CONSOLE_INPUT_MAX_LINE_LEN
	int "Console maximum input line length"
	default 128
	help
	  This option can be used to modify the maximum length a console input
	  can be.

config CONSOLE_HAS_DRIVER
	bool
	help
	  This is an option to be enabled by console drivers to signal
	  that some kind of console exists.

config CONSOLE_HANDLER
	bool "Enable console input handler"
	depends on UART_CONSOLE && SERIAL_SUPPORT_INTERRUPT
	select UART_INTERRUPT_DRIVEN
	help
	  This option enables console input handler allowing to write simple
	  interaction between serial console and the OS.

config UART_CONSOLE
	bool "Use UART for console"
	depends on SERIAL && SERIAL_HAS_DRIVER
	select CONSOLE_HAS_DRIVER
	help
	  Enable this option to use one UART for console. Make sure
	  CONFIG_UART_CONSOLE_ON_DEV_NAME is also set correctly.

config UART_CONSOLE_INIT_PRIORITY
	int "Init priority"
	default 95 if USB_UART_CONSOLE
	default 60
	depends on UART_CONSOLE
	help
	  Device driver initialization priority.
	  Console has to be initialized after the UART driver
	  it uses.

config UART_CONSOLE_DEBUG_SERVER_HOOKS
	bool "Debug server hooks in debug console"
	depends on UART_CONSOLE
	help
	  This option allows a debug server agent such as GDB to take over the
	  handling of traffic that goes through the console logic. The debug
	  server looks at characters received and decides to handle them itself if
	  they are some sort of control characters, or let the regular console
	  code handle them if they are of no special significance to it.

config UART_CONSOLE_MCUMGR
	bool "Enable UART console mcumgr passthrough"
	depends on UART_CONSOLE
	help
	  Enables the UART console to receive mcumgr frames for image upgrade
	  and device management.  When enabled, the UART console does not
	  process mcumgr frames, but it hands them up to a higher level module
	  (e.g., the shell).  If unset, incoming mcumgr frames are dropped.

config UART_CONSOLE_INPUT_EXPIRED
	bool "Enable support for UART console input expired mechanism"
	default y
	depends on UART_CONSOLE && PM
	help
	  This option allows a notification to the power management module that
	  the module for UART console is in use now. If the interval of console
	  module doesn't receive any input message exceeds expired timeout, such
	  as UART_CONSOLE_INPUT_EXPIRED_TIMEOUT, the power management module is
	  allowed to enter sleep/deep sleep state and turn off the clock of UART
	  console module. This mechanism gives a window in which the users can
	  organize input message if CONFIG_PM is enabled.

config UART_CONSOLE_INPUT_EXPIRED_TIMEOUT
	int "Fixed amount of time to keep the UART console in use flag true"
	default 15000
	depends on UART_CONSOLE_INPUT_EXPIRED
	help
	  Fixed amount of time which unit is milliseconds to keep the UART
	  console in use flag true.

config USB_UART_CONSOLE
	bool "Use USB port for console outputs"
	select UART_CONSOLE
	select USB_CDC_ACM
	help
	  Enable this option to use the USB UART for console output. The output
	  can be viewed from the USB host via /dev/ttyACM* port. Note that console
	  inputs from the USB UART are not functional yet. Also since the USB
	  layer currently doesn't support multiple interfaces, this shouldn't be
	  selected in conjunction with, say, USB Mass Storage.

config RAM_CONSOLE
	bool "Use RAM console"
	select CONSOLE_HAS_DRIVER
	help
	  Emit console messages to a RAM buffer "ram_console" which can
	  be examined at runtime with a debugger. Useful in board bring-up
	  if there aren't any working serial drivers.

config RAM_CONSOLE_BUFFER_SIZE
	int "Ram Console buffer size"
	default 1024
	depends on RAM_CONSOLE
	help
	  Size of the RAM console buffer. Messages will wrap around if the
	  length is exceeded.

config RTT_CONSOLE
	bool "Use RTT console"
	depends on USE_SEGGER_RTT
	select CONSOLE_HAS_DRIVER
	help
	  Emit console messages to a RAM buffer that is then read by the
	  Segger J-Link software and displayed on a computer in real-time.
	  Requires support for Segger J-Link on the companion IC onboard.

if RTT_CONSOLE

config RTT_TX_RETRY_CNT
	int "Number of TX retries"
	default 2
	help
	  Number of TX retries before dropping the byte and assuming that
	  RTT session is inactive.

config RTT_TX_RETRY_DELAY_MS
	int "Delay between TX retries in milliseconds"
	default 2
	help
	  Sleep period between TX retry attempts. During RTT session, host pulls data
	  periodically. Period starts from 1-2 milliseconds and can be increased
	  if traffic on RTT increases (also from host to device). In case of
	  heavy traffic data can be lost and it may be necessary to increase
	  delay or number of retries.

config RTT_TX_RETRY_IN_INTERRUPT
	bool "Busy wait in the interrupt context for TX retry"
	help
	  If enabled RTT console will busy wait between TX retries when console
	  assumes that RTT session is active. In case of heavy traffic data can
	  be lost and it may be necessary to increase delay or number of
	  retries.

endif

config IPM_CONSOLE_SENDER
	bool "Inter-processor Mailbox console sender"
	select CONSOLE_HAS_DRIVER
	help
	  Enable the sending side of IPM console

config IPM_CONSOLE_RECEIVER
	bool "Inter-processor Mailbox console receiver"
	select RING_BUFFER
	help
	  Enable the receiving side of IPM console

config IPM_CONSOLE_STACK_SIZE
	int "Stack size for IPM console receiver thread"
	depends on IPM_CONSOLE_RECEIVER
	default 2048 if COVERAGE
	default 512
	help
	  Each instance of the IPM console receiver driver creates a worker
	  thread to print out incoming messages from the remote CPU. Specify the
	  stack size for these threads here.

config IPM_CONSOLE
	bool "Inter-processor Mailbox console"
	depends on IPM
	select CONSOLE_HAS_DRIVER
	help
	  Enable console over Inter-processor Mailbox.

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_IPM_CONSOLE := zephyr,console

config IPM_CONSOLE_ON_DEV_NAME
	string "IPM device name used by console"
	default "$(dt_chosen_label,$(DT_CHOSEN_Z_IPM_CONSOLE))" if HAS_DTS
	default "IPM_0"
	depends on IPM_CONSOLE
	help
	  IPM device name used by IPM console driver.

config IPM_CONSOLE_LINE_BUF_LEN
	int "IPM console line buffer length"
	default 128
	depends on IPM_CONSOLE
	help
	  IPM console line buffer length specify amount of the buffer
	  where characters are stored before sending the whole line.

config UART_PIPE
	bool "Enable pipe UART driver"
	select UART_INTERRUPT_DRIVEN
	help
	  Enable pipe UART driver. This driver allows application to communicate
	  over UART with custom defined protocol. Driver doesn't inspect received
	  data (as contrary to console UART driver) and all aspects of received
	  protocol data are handled by application provided callback.

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_UART_PIPE := zephyr,uart-pipe

config UART_PIPE_ON_DEV_NAME
	string "Device Name of UART Device for pipe UART"
	default "$(dt_chosen_label,$(DT_CHOSEN_Z_UART_PIPE))" if HAS_DTS
	default "UART_0"
	depends on UART_PIPE
	help
	  This option specifies the name of UART device to be used
	  for pipe UART.

config UART_MCUMGR
	bool "Enable mcumgr UART driver"
	select UART_INTERRUPT_DRIVEN
	help
	  Enable the mcumgr UART driver. This driver allows the application to
	  communicate over UART using the mcumgr protocol for image upgrade and
	  device management. The driver doesn't inspect received data (as
	  contrary to console UART driver) and all aspects of received protocol
	  data are handled by an application provided callback.

if UART_MCUMGR

# Workaround for not being able to have commas in macro arguments
DT_CHOSEN_Z_UART_MCUMGR := zephyr,uart-mcumgr

config UART_MCUMGR_ON_DEV_NAME
	string "Device Name of UART Device for mcumgr UART"
	default "$(dt_chosen_label,$(DT_CHOSEN_Z_UART_MCUMGR))" if HAS_DTS
	default "UART_0"
	help
	  This option specifies the name of UART device to be used
	  for mcumgr UART.

config UART_MCUMGR_RX_BUF_SIZE
	int "Size of receive buffer for mcumgr fragments received over UART, in bytes"
	default 128
	help
	  Specifies the size of the mcumgr UART receive buffer, in bytes. This
	  value must be large enough to accommodate any line sent by an mcumgr
	  client.

config UART_MCUMGR_RX_BUF_COUNT
	int "Number of receive buffers for mcumgr fragments received over UART"
	default 2
	help
	  Specifies the number of the mcumgr UART receive buffers.  Receive
	  buffers hold received mcumgr fragments prior to reassembly.  This
	  setting's value must satisfy the following relation:
	  UART_MCUMGR_RX_BUF_COUNT * UART_MCUMGR_RX_BUF_SIZE >=
	  MCUMGR_SMP_UART_MTU

endif # UART_MCUMGR

config XTENSA_SIM_CONSOLE
	bool "Use Xtensa simulator console"
	depends on SIMULATOR_XTENSA
	select CONSOLE_HAS_DRIVER
	default y
	help
	  Use simulator console to print messages.

config NATIVE_POSIX_CONSOLE
	bool "Use the host terminal for console"
	depends on ARCH_POSIX
	select CONSOLE_HAS_DRIVER
	help
	  Use the host terminal (where the native_posix binary was launched) for the
	  Zephyr console

config NATIVE_POSIX_STDIN_CONSOLE
	bool "Use the host terminal stdin"
	depends on NATIVE_POSIX_CONSOLE
	help
	  No current use. Kept only as there is plans to start using these
	  drivers with the shell

config NATIVE_STDIN_POLL_PERIOD
	int "Polling period for stdin"
	depends on NATIVE_POSIX_STDIN_CONSOLE
	default 20
	help
	  In ms, polling period for stdin

config NATIVE_POSIX_STDOUT_CONSOLE
	bool "Print to the host terminal stdout"
	depends on NATIVE_POSIX_CONSOLE
	default y
	help
	  Zephyr's printk messages will be directed to the host terminal stdout.

config XTENSA_CONSOLE_INIT_PRIORITY
	int "Init priority"
	default 60
	depends on XTENSA_SIM_CONSOLE
	help
	  Device driver initialization priority.

config NATIVE_POSIX_CONSOLE_INIT_PRIORITY
	int "Init priority"
	default 60
	depends on NATIVE_POSIX_CONSOLE
	help
	  Device driver initialization priority.

config SEMIHOST_CONSOLE
	bool "Use semihosting for console"
	select CONSOLE_HAS_DRIVER
	depends on CPU_CORTEX_M || ARM64
	help
	  Enable this option to use semihosting for console.
	  Semihosting is a mechanism that enables code running on an ARM target
	  to communicate and use the Input/Output facilities on a host computer
	  that is running a debugger.
	  Additional information can be found in:
	  https://developer.arm.com/docs/dui0471/k/what-is-semihosting/what-is-semihosting
	  This option is compatible with hardware and with QEMU, through the
	  (automatic) use of the -semihosting-config switch when invoking it.

module = UART_CONSOLE
module-str = UART console
source "subsys/logging/Kconfig.template.log_config"

source "drivers/console/Kconfig.gsm_mux"

config UART_MUX
	bool "Enable UART muxing (GSM 07.10) support [EXPERIMENTAL]"
	depends on SERIAL_SUPPORT_INTERRUPT && GSM_MUX
	select UART_INTERRUPT_DRIVEN
	help
	  Enable this option to create UART muxer that run over a physical
	  UART. The GSM 07.10 muxing protocol is used to separate the data
	  between these muxed UARTs.

if UART_MUX

config UART_MUX_INIT_PRIORITY
	int "Init priority"
	default 95
	help
	  Device driver initialization priority. UART mux has to be
	  initialized after the UART driver it uses.

config UART_MUX_DEVICE_NAME
	string "UART mux device name template"
	default "GSM"
	help
	  Device name template for the UART mux Devices. First device would
	  have name $(UART_MUX_DEVICE_NAME)_0, etc. User will access muxed
	  UART using this name.

config UART_MUX_RINGBUF_SIZE
	int "UART mux ring buffer size"
	default 256
	help
	  UART mux ring buffer size when passing data from RX ISR to worker
	  thread that will do the unmuxing.

config UART_MUX_TEMP_BUF_SIZE
	int "Size of the temp buffer when reading data from real UART"
	default 32
	help
	  Size of the temporary RX buffer in receiving ISR.

config UART_MUX_DEVICE_COUNT
	int "Number of UART mux devices (DLCIs)"
	default GSM_MUX_DLCI_MAX
	range 1 64
	help
	  Number of instances of UART muxes. Default value is set by
	  maximum number of DLCIs (Data Link Connection Identifiers)
	  configured in the system.

config UART_MUX_REAL_DEVICE_COUNT
	int "Number of real UART devices"
	default 1
	help
	  Tells how many real UART devices there are. Typically there is
	  only one UART and the muxed UARTs are run on top of that. If you have
	  two modems for example, then you would need to increase this to two.

config UART_MUX_RX_STACK_SIZE
	int "Size of the stack allocated for receiving data from UART"
	default 512
	help
	  Sets the stack size which will be used by the PPP RX workqueue.

config UART_MUX_RX_PRIORITY
	int "RX workqueue thread priority"
	default 7
	help
	  Sets the priority of the RX workqueue thread.

module = UART_MUX
module-str = UART mux
source "subsys/logging/Kconfig.template.log_config"

endif # UART_MUX

config UART_MUX_VERBOSE_DEBUG
	bool "Print hexdump of sent and received packets"
	depends on UART_MUX_LOG_LEVEL_DBG
	help
	  As there might be lot of debug output printed, only enable
	  this if really needed.


endif # CONSOLE