In [GCC PR 104342](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104342)
we can see that, if checking out a non-release compiler (e.g. GCC
14.0.1), having `-gnata` and `-fcallgraph-info=su` will cause a crash
(in stm32 code, anyway).
`-gnata` is used when Build is Debug.
This patch amends the Project Wizard so you can specify `CALLGRAPHS=Disabled`.
* scripts/project_wizard.py (Build_Checks_Type): renamed to
Disabled_Or_Enabled_Type.
(Build_Checks): now Disabled_Or_Enabled_Type.
(Callgraphs): new, checks external CALLGRAPHS, default Enabled. Used
to decide whether to include -fcallgraph-info=su even if Target
isn't riscv32-unknown-elf.
* ili9341-device.ads - generic driver for display
* ili9341-spi_connector.ads - the chip with SPI interface
* ili9341-device-bitmap.ads - implement Bitmap API on the ILI9341 RAM
* ili9341-rgb_spi_device.ads - display with RGB interface
In this configuration SDCard_Controller detects SD card
only betwee Initialize call and Card_Present=True.
After Card_Present because True the controller reconfigures
DAT3 to SDIO mode.
to fix loading project in VSCode extension and avoid
> error: cannot set configuration attribute "Target" after it was referenced
See details in GPR issue #166.
* Switch to GNAT FSF 12 support
* GNAT FSF 12 in GitHub CI
* Update README.md
* Remove run-time dependency build script that is not compatible with GNAT FSF
This script is also not needed as all the BSPs are included in GNAT FSF.
* Correct the transmit protocol for Nordic TWI.
The register address and the data must be sent in one operation, as
specified in the nRF51 Series Reference Manual version 3.0.
* arch/ARM/Nordic/drivers/nrf_common/nrf-twi.adb:
(Master_Transmit): Clear any previous Suspend/Stop settings before
the transfer.
Only do a Stop_Sequence if requested.
(Mem_Write): Call Master_Transmit to send the data as well as the
register address in one transaction. This requires moving the
Do_Stop_Sequence setting to before this single transaction.
* Revert Nordic TWI Mem_Write to original.
Avoids creating a potentially large data buffer on the stack.
* arch/ARM/Nordic/drivers/nrf_common/nrf-twi.adb (Mem_Write): reverted to
sending the register address without a stop sequence, followed by the
data, followed by a stop sequence.
* add new IO expander MCP23017 (2x8bits), copying the design of the existing MCP23008
* correct casing style issues, revert to parenthesis for array access
* correct more style issues
* new component: the old pcf8574 8bit io-expander.
* correct interface to current HAL (v0.3)
* make address and I2C_Port discriminants, so that variables cannot be declared without initialization
* cleared style issues (missing blanks) and made the type limited
* first working version of a HD44780 LCD driver, based on I2C PCF8574
* use controlling parameter directly in in out mode, not the pointer to class wide
* make the call to Output dispatching
* corrected GNAT style issues
* add support for user defined custom characters
* use standard Adacore copyright notice
* remove unneeded with clause
audio.ads:
Add precondition for protected procedure Start to ensure valid addresses.
Minor name improvements.
main.adb
Add Last_Chance_Handler to indicate when exceptions raised, if any.
Minor formatting
demo-*:
use Unchecked_Access in these specific demos
serial_io-blocking.ads:
correct postcondition on procedure Receive so that empty content is handled properly
serial_io-nonblocking.ads:
add postconditions to procedure Receive
* Significantly simplify Serial_IO.Nonblocking and revise associated files
serial_io:
Use better name for hardware init routines
serial_io.nonblocking:
Implement primary type Serial_Port directly as a protected type.
Add discriminant for IRQ priority.
Simplify transmission routine (remove a protected variable).
Remove pre/post for initialization since not worth extra complexity for type impl.
Use better names as replacements for Put/get.
serial_io.blocking:
Update names for procedures Put and Get to be same as those of package Nonblocking.
Update name for hardware init routine to be consistent with other packages.
Remove pre/post for initialization since not worth extra complexity for type impl.
serial_io.streaming:
Update names for procedures Put and Get to be same as in Blocking and Nonblocking.
Update name for hardware init routine to be consistent with other packages.
Remove pre/post for initialization since not worth extra complexity for type impl.
peripherals_nonblocking:
Specify new IRQ priority discriminant.
Remove unnecessary constant.
Improve comments.
peripherals_blocking:
Improve comments.
peripherals_streaming:
Improve comments.
demo mains:
Revise for name changes.
Improve comments.
* remove trailing blanks
Uses timing/calibration parameters from github PX4/PX4-Autopilot\
/blob/master/src/drivers/optical_flow/pmw3901/PMW3901.cpp.
* components/src/motion/pmw3901/pmw3901.adb (Initialize): delays to
match PX4 code.
(Calibrate): likewise, plus calibration data.
The current implementation worked fine on the STM32F4, but it could be
because the I2C Mem_Write is not correctly implemented for this
microcontroller.
* Use symbolic interrupt priority for SDMMC.
* arch/ARM/STM32/drivers/sd/stm32-sdmmc_interrupt.ads
(SDMMC_Interrupt_Handler): Supply the required interrupt priority via
a discriminant.
* Added omitted 'with System'.
* arch/ARM/STM32/drivers/sd/stm32-sdmmc_interrupt.ads: as summary.
* Matching change for boards where SDCard is used.
* boards/stm32_common/sdcard/sdcard.adb (SD_Interrupt_Handler):
include Priority discriminant.