I think I need a custom bootloader for the Giga R1 WiFi as I need to be able to do two things:
- Execute OTA updates of the "sketch".
- Temporarily disable or block updating sketches via the USB connection during critical file updates on the USB drive (which actually happens unpredictably depending on external stimuli and and happens very often).
I've been going back and forth with ChatGPT trying to find, download, and compile the current bootloader to use as a starting point but I keep running into dependency issues with everything I've found and tried to do. I installed STM32CubeIDE along with all the "toolchains" suggested by ChatGPT. I am able to load the project from STM32CubeH7\Projects\STM32H747I-DISCO\Applications\USB_Device\DFU_Standalone\STM32CubeIDE\CM7 but when I try to compile it it gives error:
10:07:13 **** Clean-only build of configuration Release for project DFU_Standalone_CM7 ****
make -j2 clean
rm -rf ./Middlewares/STM32_USBD_Library/Core/usbd_core.cyclo ./Middlewares/STM32_USBD_Library/Core/usbd_core.d ./Middlewares/STM32_USBD_Library/Core/usbd_core.o ./Middlewares/STM32_USBD_Library/Core/usbd_core.su ./Middlewares/STM32_USBD_Library/Core/usbd_ctlreq.cyclo ./Middlewares/STM32_USBD_Library/Core/usbd_ctlreq.d ./Middlewares/STM32_USBD_Library/Core/usbd_ctlreq.o ./Middlewares/STM32_USBD_Library/Core/usbd_ctlreq.su ./Middlewares/STM32_USBD_Library/Core/usbd_ioreq.cyclo ./Middlewares/STM32_USBD_Library/Core/usbd_ioreq.d ./Middlewares/STM32_USBD_Library/Core/usbd_ioreq.o ./Middlewares/STM32_USBD_Library/Core/usbd_ioreq.su
rm -rf ./Middlewares/STM32_USBD_Library/Class/DFU/usbd_dfu.cyclo ./Middlewares/STM32_USBD_Library/Class/DFU/usbd_dfu.d ./Middlewares/STM32_USBD_Library/Class/DFU/usbd_dfu.o ./Middlewares/STM32_USBD_Library/Class/DFU/usbd_dfu.su
rm -rf ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_adc_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_cortex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_dma.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_dma.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_dma.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_dma.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_exti.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_exti.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_exti.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_exti.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_flash_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_gpio.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_hsem.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_hsem.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_hsem.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_hsem.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_i2c.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pcd_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_pwr_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_rcc_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_tim_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart_ex.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart_ex.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart_ex.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_hal_uart_ex.su ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_ll_usb.cyclo ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_ll_usb.d ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_ll_usb.o ./Drivers/STM32H7xx_HAL_Driver/stm32h7xx_ll_usb.su
rm -rf ./Drivers/CMSIS/system_stm32h7xx.cyclo ./Drivers/CMSIS/system_stm32h7xx.d ./Drivers/CMSIS/system_stm32h7xx.o ./Drivers/CMSIS/system_stm32h7xx.su
rm -rf ./Drivers/BSP/STM32H747I-Discovery/stm32h747i_discovery.cyclo ./Drivers/BSP/STM32H747I-Discovery/stm32h747i_discovery.d ./Drivers/BSP/STM32H747I-Discovery/stm32h747i_discovery.o ./Drivers/BSP/STM32H747I-Discovery/stm32h747i_discovery.su
rm -rf ./Application/Startup/startup_stm32h747xihx.d ./Application/Startup/startup_stm32h747xihx.o
rm -rf ./Application/CM7/main.cyclo ./Application/CM7/main.d ./Application/CM7/main.o ./Application/CM7/main.su ./Application/CM7/stm32h7xx_it.cyclo ./Application/CM7/stm32h7xx_it.d ./Application/CM7/stm32h7xx_it.o ./Application/CM7/stm32h7xx_it.su ./Application/CM7/syscalls.cyclo ./Application/CM7/syscalls.d ./Application/CM7/syscalls.o ./Application/CM7/syscalls.su ./Application/CM7/sysmem.cyclo ./Application/CM7/sysmem.d ./Application/CM7/sysmem.o ./Application/CM7/sysmem.su ./Application/CM7/usbd_conf.cyclo ./Application/CM7/usbd_conf.d ./Application/CM7/usbd_conf.o ./Application/CM7/usbd_conf.su ./Application/CM7/usbd_desc.cyclo ./Application/CM7/usbd_desc.d ./Application/CM7/usbd_desc.o ./Application/CM7/usbd_desc.su ./Application/CM7/usbd_dfu_flash.cyclo ./Application/CM7/usbd_dfu_flash.d ./Application/CM7/usbd_dfu_flash.o ./Application/CM7/usbd_dfu_flash.su
rm -rf DFU_Standalone_CM7.elf DFU_Standalone_CM7.list DFU_Standalone_CM7.map default.size.stdout
10:07:22 Build Finished. 0 errors, 0 warnings. (took 9s.125ms)
10:07:22 **** Build of configuration Release for project DFU_Standalone_CM7 ****
make -j2 all
make: *** No rule to make target 'C:/Middlewares/ST/STM32_USB_Device_Library/Core/Src/usbd_core.c', needed by 'Middlewares/STM32_USBD_Library/Core/usbd_core.o'. Stop.
"make -j2 all" terminated with exit code 2. Build might be incomplete.
10:07:24 Build Failed. 1 errors, 0 warnings. (took 1s.868ms)
I've never used STM32CubeIDE before nor have I ever used the other toolchains.
Should I be using a different toolchain. Is it not possible to compile the bootloader on a Windows machine? Do I have the wrong library? Am I missing dependencies?