- new intrusive linked list container (c++ template) that sorts on insertion
- primarily for convenience inspecting things in the system like uORB or WorkQueues
- uorb status or top sorted alphabetically
- work_queue status threads sorted by priority, then items sorted alphabetically within each
- perform full sensor signal path reset and wait for max time (100 ms)
- issue full sensor reset on any error
- always read FIFO count before transfersj
- only allocate drdy perf counter if GPIO is available
- only record start time on first run rather than init
- increase name length
- round average interval to nearest microsecond
- basic formatting consistency (google style guide)
- always check with state machine before reboot/shutdown
- respect BOARD_HAS_POWER_CONTROL (shutdown from command, low battery, power button)
- px4_shutdown_request add optional delay and always execute from HPWORK
- px4_shutdown_request split out px4_reboot_request
- increase stack sizes to run cleanly under stackcheck
- this is likely overkill for most boards, but using stackcheck to set our minimum ensures we have a very safe margin on regular builds and it's something we can currently afford
- remove holybro_durandal-v1_stackcheck from test rack (there's only one unit)
- update to NuttX with stm32f4 and stm32f7 SPI DMA internal buffers
- remove explicit DMA buffer allocations from new IMU drivers
- restore original BOARD_DMA_ALLOC_POOL_SIZE
- decrease SPI DMA thresholds based on fmu-v2/v3/v4/v5 bench testing
instead of a static per-driver array.
Reduces BSS RAM usage by a couple of 100 Bytes (linear increase with num
drivers).
Downsides:
- a bit more runtime overhead
- less isolation, locking required
- a bit more complex
Running the sensors module out of the same WQ thread as the estimator, position, and attitude controllers is a bit safer and prevents potential priority and starvation issues. There is a very small increase in latency (~50 us) between sensors and ekf2 execution (on average). This also saves a little bit of memory (~ 3 kB) and cpu (~1-1.5% depending on the board).
Chip-select and SPI initialization uses the new config, whereas the drivers
still use the existing defines.
The configuration in board_config.h can be removed after all drivers are
updated.
The existing behavior is unexpected: if the work item is already on the
runnable queue, it will still be triggered after a call to ScheduleClear().
This can lead to race conditions.
* Introduce "px4_arch_adc_reference_v"
* Revert "Introduce "px4_arch_adc_reference_v""
This reverts commit 93691fbbd55a1b8da8c190e225b318067d90399b.
* use structure to return sample count and vref at the same time
* Revert "use structure to return sample count and vref at the same time"
This reverts commit 9cfd1c173cda51495f766a3f678c2202d67725fd.
* Revert "Revert "Introduce "px4_arch_adc_reference_v"""
This reverts commit edb7f7603e4471163ffb0fc6fc62ad2e30336e91.
* fix missed reference
* remove unecessary channel specific vref
* Update src/drivers/drv_adc.h
Co-Authored-By: David Sidrane <David.Sidrane@Nscdg.com>
* Update src/drivers/drv_adc.h
Co-Authored-By: David Sidrane <David.Sidrane@Nscdg.com>
* Introduce BOARD_ADC_POS_REF_V
Co-authored-by: David Sidrane <David.Sidrane@Nscdg.com>
- checked register mechanism and simple watchdog
- driver checks for errors gradually and can reconfigure itself
- respect IMU_GYRO_RATEMAX at the driver level
- fixed sensor INT16_MIN and INT16_MAX handling (y & z axis are flipped before publishing)
- increased sensor_gyro_fifo max size (enables running the driver much slower, but still transferring all raw data)
- PX4Accelerometer/PX4Gyroscope remove unnecessary memsets