Change the UART RX FIFO depth from 1/8 to 7/8. This should allow for
buffered receipt of uart data with a lower IRQ load.
The PL011 fifo is pretty smart about the fifo, it has an automatic
timeout (which triggers an interrupt) of about 4 characters worth of
time, so setting this threshold doesn't affect the behavior of receipt
of a partially filled fifo.
This should not have any affect on the DMA mode, as the DMA will
generally drain the fifo as data becomes available.
The constraint for the fifo threshold should be determined by expected
interrupt latency. The IRQ needs to be able to drain the fifo before it
fills. As such, the proper threshold depends on system design and data
rate. At full speed (7.8 Mbaud), the remaining 8 characters will come
in in about 10us, which is probably insufficient. But, the time is quite
adequate at lower speeds.
Previously the constant pointing at the base of the bootram was
incorrectly called BOOTROM_BASE. According to the datasheet, the bootrom
is a 32K region starting at 0x00000000 while the bootram is a 1K region
of SRAM starting at 0x400e0000.
This commit rearranges the Adc::wait_for_ready function to make sure
that wakers are registered before the interrupt is enabled, and keeps
enabling the interrupt until the ADC is ready
rp235x firmwares need an Image Definition if they want to be called
from the rp235x bootrom.
Currently this Image Definition is manually added to each project/example,
but for most users it will always be the default (Secure Exe).
This commit adds crate features to allow users to configure this, with the
default of including a Secure Exe Image Definition in.
Just like the boot2-* features, this includes an opt-out (imagedef-none)
to allow the user to not make use of this included Image Definition.
The tweak arranges that "grep sideset" finds use_program() when grokking source - this spelling is used
elsewhere, as in PinConfig for example, and I managed to miss use_program.
Add some (I think) needed functions:
ConfigPins::set_sideset_pins (the other pin types are covered, why not this one?)
Several runtime StateMachine manipulations:
- addr()
- tx_threshold()
- set_tx_threshold
- rx_threshold()
- set_rx_threshold()
- set_thresholds() - both at once, same value
There are some non-compliant devices that respond to reserved I2c
addresses. rp2040 behaves sanely for these addresses, so let's just
allow using them.