-
Notifications
You must be signed in to change notification settings - Fork 6.8k
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
usb: patches to resolve issues around Kconfig option USB_UART_CONSOLE #40220
Closed
jfischer-no
wants to merge
13
commits into
zephyrproject-rtos:main
from
jfischer-no:pr-usb_uart_console
Closed
Changes from 1 commit
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
ee570c8
usb: cdc_acm: use same init level and priority as serial drivers
jfischer-no b0dc396
usb: limit scope of CONFIG_USB_UART_CONSOLE
jfischer-no 623ace0
usb: deprecate Kconfig option USB_UART_CONSOLE
jfischer-no 9b88cba
usb: add option to initialize USB device support at boot
jfischer-no 4d53a79
shields: add generic shield to use CDC ACM UART as backend
jfischer-no 1d52620
samples: shell_module: use generic CDC ACM shield
jfischer-no a92896b
tests: bluetooth: shell: use generic CDC ACM shield
jfischer-no 561c894
tests: uart_basic_api: use generic CDC ACM shield
jfischer-no 461b174
samples: sensortile_box: use generic CDC ACM shield
jfischer-no 74b92d7
samples: usb: console: fix configuration
jfischer-no 9c03497
boards: clean up CDC ACM configuration for nRF52840 based boards
jfischer-no 105e3da
usb: remove the remains of USB_UART_CONSOLE
jfischer-no 6c32698
shields: cdc_acm: add support for zephyr,bt-c2h-uart property
jfischer-no File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* | ||
* Copyright (c) 2021 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/ { | ||
chosen { | ||
zephyr,console = &console_cdc_acm_uart0; | ||
}; | ||
}; | ||
|
||
&zephyr_udc0 { | ||
console_cdc_acm_uart0: console_cdc_acm_uart0 { | ||
compatible = "zephyr,cdc-acm-uart"; | ||
label = "CONSOLE_CDC_ACM_0"; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* | ||
* Copyright (c) 2021 Nordic Semiconductor ASA | ||
* | ||
* SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
/ { | ||
chosen { | ||
zephyr,shell-uart = &shell_cdc_acm_uart0; | ||
}; | ||
}; | ||
|
||
&zephyr_udc0 { | ||
shell_cdc_acm_uart0: shell_cdc_acm_uart0 { | ||
compatible = "zephyr,cdc-acm-uart"; | ||
label = "SHELL_CDC_ACM_0"; | ||
}; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
METACFG
name 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.