Validate BitScrambler program headers against the supported format and
hardware limits before using header-derived instruction and LUT sizes.
Also add regression coverage for malformed headers and document that the
program blob must come from a trusted assembler output.
Reject LUT loads that exceed the hardware address space and assemble
each 32-bit LUT word via memcpy so unaligned and partial inputs do not
read past the caller buffer. Add regression tests for oversized and
partial unaligned LUT loads.
Clear the returned handle on loopback creation failure and route
initialized objects through bitscrambler_free so channel ownership and
extra cleanup state cannot leak after partial setup errors. Add a
regression test for the failed create path.
Cannot write to any bitscrambler registers after clock is disabled in
release_channel().
(cherry picked from commit 39a131617d82e3641d8f0b03b4ec5e5ef1051fd6)
Replace *common_components with specific driver dependencies across all
peripheral driver test apps and examples to prevent unnecessary CI
triggers
when common_components change.
This follows the same pattern established in TWAI driver commit:
6d21cc6c29
Changes made:
- 26 component test apps updated
(esp_driver_*/test_apps/.build-test-rules.yml)
- 1 driver test app updated
(components/driver/test_apps/.build-test-rules.yml)
- Key examples updated in examples/peripherals/.build-test-rules.yml
- Established standard dependency pattern: esp_hal_xxx, esp_hw_support,
soc
- Added esp_driver_gpio for GPIO-dependent drivers
- Removed conditional definitions for various RCC_ATOMIC macros across
multiple files, replacing them with a unified PERIPH_RCC_ATOMIC() macro.
- Updated instances where specific RCC_ATOMIC macros were used to ensure
consistent usage of PERIPH_RCC_ATOMIC().
- Deleted unused uart_share_hw_ctrl.h file as its functionality is now
integrated into the new structure.
This adds an assembler for the BitScrambler assembly language,
plus unit tests for it. It also adds the loopback driver,
which can do BitScrambler operations on memory-to-memory
transfers. Documentation is also included.