Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Regression in STM32 USB: Supports fewer CdcAcmClass than before #3884

Open
johnkjellberg opened this issue Feb 14, 2025 · 0 comments
Open

Regression in STM32 USB: Supports fewer CdcAcmClass than before #3884

johnkjellberg opened this issue Feb 14, 2025 · 0 comments

Comments

@johnkjellberg
Copy link

Using STM32G0 and embassy-stm32 0.4.0. Feature max-interface-count-6 on embassy-usb.

I use 3 CdcAcmClass with version embassy version b55726c51 and that works as expected.

Trying to upgrade to 0.4.0 in no longer works due to change in how endpoints are allocated. In the older version the same endpoint index was used for both IN and OUT, but now a new index is allocated, resulting in fewer available endpoints, which in turn means only two CdcAcmClass can be used.

Log from working version:

0.121887 TRACE allocating type=Interrupt mps=8 interval_ms=255, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.122131 TRACE   index=1 addr=64 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.122344 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.122558 TRACE   len_bits = 8400
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:352
0.122680 TRACE   index=2 addr=72 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.122924 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.123138 TRACE   index=2 addr=136 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.123413 TRACE allocating type=Interrupt mps=8 interval_ms=255, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.123657 TRACE   index=3 addr=200 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.123901 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.124114 TRACE   len_bits = 8400
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:352
0.124237 TRACE   index=4 addr=208 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.124450 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.124664 TRACE   index=4 addr=272 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.124969 TRACE allocating type=Interrupt mps=8 interval_ms=255, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.125213 TRACE   index=5 addr=336 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.125457 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.125671 TRACE   len_bits = 8400
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:352
0.125793 TRACE   index=6 addr=344 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379
0.126007 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:317
0.126220 TRACE   index=6 addr=408 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:379

Log from non working version:

0.021850 TRACE allocating type=Interrupt mps=8 interval_ms=255, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.022064 TRACE   index=1 addr=64 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.022277 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.022491 TRACE   len_bits = 8400
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:395
0.022613 TRACE   index=2 addr=72 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.022827 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.023040 TRACE   index=3 addr=136 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.023315 TRACE allocating type=Interrupt mps=8 interval_ms=255, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.023529 TRACE   index=4 addr=200 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.023773 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.023986 TRACE   len_bits = 8400
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:395
0.024078 TRACE   index=5 addr=208 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.024291 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=In
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.024505 TRACE   index=6 addr=272 len=64
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.025024 TRACE   index=7 addr=336 len=8
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:430
0.025268 TRACE allocating type=Bulk mps=64 interval_ms=0, dir=Out
└─ embassy_stm32::usb::_version::{impl#2}::alloc_endpoint @ /home/john/git/embassy/embassy-stm32/src/usb/usb.rs:353
0.025482 ERROR panicked at /home/john/.cargo/registry/src/index.crates.io-6f17d22bba15001f/embassy-usb-0.4.0/src/builder.rs:506:14:
alloc_endpoint_out failed: EndpointAllocError
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant