mirror of
https://github.com/NawfalMotii79/PLFM_RADAR.git
synced 2026-06-09 06:57:15 +00:00
52977fb488
First of three planned PRs to produce a bootable STM32F746ZGT7 firmware
image from the sources already in-tree. The original CubeIDE project
(.ioc + generated Core/Drivers/Middlewares) never made it into the repo,
so the build is being reconstructed from scratch against the vendored HAL.
Scope of this PR:
- Pin arm-none-eabi-gcc 15 (brew --cask gcc-arm-embedded) as the
toolchain for local macOS builds.
- Vendor trimmed copies of the four upstream trees needed by a minimal
STM32F7 project:
* CMSIS_5 5.9.0 Cortex-M7 Core/Include subset (256 KB)
* cmsis_device_f7 v1.2.8 F746-only device header + startup (1 MB)
* stm32f7xx_hal_driver v1.3.1 full HAL Inc/Src (9.3 MB)
* stm32_mw_usb_device v2.11.3 Core + Class/CDC (200 KB)
Total vendor tree: 11 MB, 228 files. VERSION files pin each drop.
- Add Makefile targeting -mcpu=cortex-m7 -mfpu=fpv5-sp-d16 -mfloat-abi=hard.
`make compile` produces 150 objects covering:
* all enabled HAL modules (GPIO/EXTI/DMA/RCC/FLASH/PWR/I2C/CORTEX/
IWDG/SPI/TIM/UART/PCD per stm32f7xx_hal_conf.h)
* the no-os ADI middleware layer
* ADAR1000/ADF4382/AD9523/BMP180/GY-85/TinyGPS++ drivers
* um982_gps, platform_noos_stm32, system_stm32f7xx, startup
Deliberately excluded (need PR 2 Cube glue):
* main.cpp / gps_handler.cpp — require usb_device.h, usbd_cdc_if.h
* USB Device Library sources — require user-provided usbd_conf.h
* *_template.c — ST user-copy stubs, never compiled
Incidental fixes folded in (these are hard blockers, not cosmetic):
- Delete 9_1_1_C_Cpp_Libraries/errno.h. It was an ADI armcc-only shim
whose EINVAL/ENOENT/etc. macros are gated on __ARMCC_VERSION and
relies on `#include_next <errno.h>`, which gcc refuses when the file
was found via quoted-include in the source directory. With the shim
gone every `#include "errno.h"` / `#include <errno.h>` now resolves
straight to newlib's, which is what every other TU in the tree
already assumed.
- Makefile demotes four gcc-15 defaults back to warnings
(-Wno-error=incompatible-pointer-types/discarded-qualifiers/
int-conversion/implicit-function-declaration). gcc 14 promoted
these to errors by default; the underlying diagnostics are
pre-existing type mismatches in the ADI no-os layer (e.g. const
qualifier dropped in stm32_dma.c:281 function-pointer assignment),
not new regressions. Real fixes are out of scope for PR 1.
Still to come:
PR 2 — hand-written Cube glue: STM32F746ZGTx_FLASH.ld, stm32f7xx_it.c,
stm32f7xx_hal_msp.c, SystemClock_Config, MX_*_Init for the
peripherals in main.cpp, usbd_conf.{h,c}, usbd_desc.c,
usbd_cdc_if.c, and a C main() shim that calls into app_main().
Closes the link; produces firmware.elf/.bin/.hex.
PR 3 — hardware bring-up: flash, iterate on HSE/PLL + DMA + SPI mode
against the real board until the existing firmware behaviour
is restored.