-
Notifications
You must be signed in to change notification settings - Fork 8.2k
usb: patches to resolve issues around Kconfig option USB_UART_CONSOLE #40220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 8 commits
ee570c8
b0dc396
623ace0
9b88cba
4d53a79
1d52620
a92896b
561c894
461b174
74b92d7
9c03497
105e3da
6c32698
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| # Copyright (c) 2021 Nordic Semiconductor ASA | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| if SHIELD_CDC_ACM_CONSOLE || SHIELD_CDC_ACM_SHELL | ||
|
|
||
| # TEST_LOGGING_DEFAULTS option sets all log levels to INF, | ||
| # including the USB_CDC_ACM_LOG_LEVEL and that can not work. | ||
| config TEST_LOGGING_DEFAULTS | ||
| default n | ||
|
|
||
| config SERIAL | ||
| default y | ||
|
|
||
| config UART_LINE_CTRL | ||
| default y | ||
|
|
||
| config USB_DEVICE_STACK | ||
| default y | ||
|
|
||
| config USB_DEVICE_INITIALIZE_AT_BOOT | ||
| default y | ||
|
|
||
| endif #if SHIELD_CDC_ACM_CONSOLE || SHIELD_CDC_ACM_SHELL | ||
|
|
||
| if SHIELD_CDC_ACM_CONSOLE | ||
|
|
||
| config CONSOLE | ||
| default y | ||
|
|
||
| config UART_CONSOLE | ||
| default y | ||
|
|
||
| endif #if SHIELD_CDC_ACM_CONSOLE | ||
|
|
||
| if SHIELD_CDC_ACM_SHELL | ||
|
|
||
| config SHELL_BACKEND_SERIAL_CHECK_DTR | ||
| default y | ||
|
|
||
| config LOG_PRINTK | ||
| default y | ||
|
|
||
| endif #if SHIELD_CDC_ACM_SHELL |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| # Copyright (c) 2021 | ||
| # SPDX-License-Identifier: Apache-2.0 | ||
|
|
||
| config SHIELD_CDC_ACM_CONSOLE | ||
| def_bool $(shields_list_contains,cdc_acm_console) | ||
|
|
||
| config SHIELD_CDC_ACM_SHELL | ||
| def_bool $(shields_list_contains,cdc_acm_shell) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,64 @@ | ||
| .. _cdc_acm_shield: | ||
|
|
||
| Generic shields for CDC ACM UART | ||
| ################################ | ||
|
|
||
| Overview | ||
| ******** | ||
|
|
||
| This is a generic shield that provides devicetree and configuration overlays, | ||
| and configures USB device stack so that CDC ACM UART can be used as backend | ||
| for console, logging, and shell. It is mainly intended to be used with boards | ||
| that do not have a debug adapter or native UART, but do have a USB device | ||
| controller. | ||
| This approach allows us to avoid many identical overlays in samples and tests | ||
| directories (see :ref:`usb_device_cdc_acm` for more details). | ||
| It also simplifies the configuration of the above mentioned boards, | ||
| they can stay with the minimal configuration which minimizes the conflicts | ||
| especially with different in-tree samples. | ||
|
|
||
| These shields enable :kconfig:`CONFIG_USB_DEVICE_INITIALIZE_AT_BOOT` and | ||
| configure USB device stack so that it is automatically initialized. | ||
| This is important for the boards like :ref:`nrf52840dongle_nrf52840`, | ||
| otherwise in-tree samples, that do not enable USB device support, are | ||
| not usable. But it also means that in-tree samples, like :ref:`usb_cdc-acm`, | ||
| that initialize USB device support themselves cannot be used with these shields. | ||
| This is a good compromise which provides maximum coverage of usable samples for | ||
| these specific USB dongles. | ||
|
|
||
| Current supported chosen properties | ||
| =================================== | ||
|
|
||
| +-----------------------+---------------------+ | ||
| | Chosen property | Shield Designation | | ||
| | | | | ||
| +=======================+=====================+ | ||
| | ``zephyr,console`` | ``cdc_acm_console`` | | ||
| +-----------------------+---------------------+ | ||
| | ``zephyr,shell-uart`` | ``cdc_acm_shell`` | | ||
| +-----------------------+---------------------+ | ||
|
|
||
| Requirements | ||
| ************ | ||
|
|
||
| This shield can only be used with a board which provides a USB device | ||
| controller. | ||
|
|
||
| Programming | ||
| *********** | ||
|
|
||
| Set ``-DSHIELD=cdc_acm_shell`` when you invoke ``west build``. For example: | ||
|
|
||
| .. zephyr-app-commands:: | ||
| :zephyr-app: samples/subsys/shell/shell_module | ||
| :board: nrf52840dongle_nrf52840 | ||
| :shield: cdc_acm_shell | ||
| :goals: build | ||
|
|
||
| Or ``-DSHIELD=cdc_acm_console``, for example: | ||
|
|
||
| .. zephyr-app-commands:: | ||
| :zephyr-app: samples/basic/threads | ||
| :board: nrf52840dongle_nrf52840 | ||
| :shield: cdc_acm_console | ||
| :goals: build | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -34,7 +34,7 @@ config CONSOLE_HANDLER | |
|
|
||
| config CONSOLE_INIT_PRIORITY | ||
| int "Console init priority" | ||
| default 95 if USB_UART_CONSOLE || UART_MUX | ||
| default 95 if UART_MUX | ||
|
||
| default 60 if UART_CONSOLE || XTENSA_SIM_CONSOLE | ||
| default KERNEL_INIT_PRIORITY_DEFAULT | ||
| help | ||
|
|
@@ -87,15 +87,6 @@ config UART_CONSOLE_INPUT_EXPIRED_TIMEOUT | |
| 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 CDC ACM class for console. | ||
| As for the console driver, this option only changes the initialization | ||
| level. | ||
|
|
||
| config RAM_CONSOLE | ||
| bool "Use RAM console" | ||
| select CONSOLE_HAS_DRIVER | ||
|
|
||
This file was deleted.
| Original file line number | Diff line number | Diff line change | ||
|---|---|---|---|---|
|
|
@@ -53,6 +53,13 @@ config CDC_ACM_DTE_RATE_CALLBACK_SUPPORT | |||
| by Arduino style programmers to reset the device into the | ||||
| bootloader. | ||||
|
|
||||
| config USB_UART_CONSOLE | ||||
|
||||
| default y if USB_UART_CONSOLE |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it is there for reasons.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
deprecated now
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sound like a setting we don't really assume is in use, but we don't know.
I think it should be investigated and marked deprecated so that it can be completely removed in two releases from now.
Else I fear this setting will just stay and never get cleaned up.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, it is in use and is investigated, see commit message:
"Kconfig option USB_UART_CONSOLE does not have any dependencies
on console drivers, but is used to select backend specific
Kconfig option in subsys/shell/backends/Kconfig.backends.
Keep the name of the option USB_UART_CONSOLE but move it
to CDC ACM configuration and update description."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
then I suggest to rework the comment, cause that is not clear to me.
And as this setting is deprecated, are there any plans / tasks to follow up on removing the dependency in subsys/shell/backends/Kconfig.backends ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Commit was reworked. I will remove Kconfig option USB_UART_CONSOLE and dependency in subsys/shell/backends/Kconfig.backends in subsequent PR because MCUboot needs to be adapted as well.
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shields today are a piece of hardware you may attach to another board.
file:///projects/github/ncs/zephyr/doc/_doc/html/boards/shields/index.html
This commit 4d53a79 uses the shield feature for something that is not a shield.
That is a direction I dislike.
It's another approach of #14740 and #33656, just through shield this time.
Using shield this way makes it unclear what a shield is, and it also suffers the same disadvantage / complexity as mentioned here: #14740 (comment)
If you would like to propose a solution like the shield then please make a dedicated PR with such proposal the can be discussed, also at dev-review. For example the
METACFGname as mentioned here: #40220 (review)Not being against such idea, my concern is still related to:
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am convinced that shield approach is a better fit for CDC ACM UART, similar to how one would connect a real UART controller through I2C/SPI using a shield.