diff --git a/examples/stm32/nucleo-f429zi-freertos-mip/Makefile b/examples/stm32/nucleo-f429zi-freertos-mip/Makefile index 1a79dc6d..c17b918a 100644 --- a/examples/stm32/nucleo-f429zi-freertos-mip/Makefile +++ b/examples/stm32/nucleo-f429zi-freertos-mip/Makefile @@ -9,6 +9,12 @@ SOURCES = main.c startup.c syscalls.c ../../../mongoose.c FREERTOS_VERSION ?= V10.5.0 FREERTOS_REPO ?= https://github.com/FreeRTOS/FreeRTOS-Kernel +ifeq ($(OS),Windows_NT) + RM = cmd /C del /Q /F /S +else + RM = rm -rf +endif + build example: firmware.bin firmware.elf: FreeRTOS-Kernel $(SOURCES) @@ -31,4 +37,4 @@ FreeRTOS-Kernel: git clone --depth 1 -b $(FREERTOS_VERSION) $(FREERTOS_REPO) $@ clean: - rm -rf firmware.* FreeRTOS-Kernel + $(RM) firmware.* FreeRTOS-Kernel diff --git a/examples/stm32/nucleo-f429zi-usb-rndis/Makefile b/examples/stm32/nucleo-f429zi-usb-rndis/Makefile index afac4c1b..3a463419 100644 --- a/examples/stm32/nucleo-f429zi-usb-rndis/Makefile +++ b/examples/stm32/nucleo-f429zi-usb-rndis/Makefile @@ -23,9 +23,9 @@ CFLAGS += -DSTM32F429xx CFLAGS += -Wno-conversion -Wno-sign-conversion ifeq ($(OS),Windows_NT) - RM = cmd /C del /Q /F + RM = cmd /C del /Q /F /S else - RM = rm -f + RM = rm -rf endif all build example: firmware.bin @@ -45,4 +45,4 @@ flash: firmware.bin st-flash --reset write firmware.bin 0x8000000 clean: - $(RM) firmware.* + $(RM) firmware.* tinyusb diff --git a/examples/stm32/nucleo-f746zg-baremetal/Makefile b/examples/stm32/nucleo-f746zg-baremetal/Makefile index 75c647ed..ab90b092 100644 --- a/examples/stm32/nucleo-f746zg-baremetal/Makefile +++ b/examples/stm32/nucleo-f746zg-baremetal/Makefile @@ -13,6 +13,12 @@ SOURCES += mongoose.c net.c packed_fs.c CFLAGS += -DMG_ENABLE_TCPIP=1 -DMG_ARCH=MG_ARCH_NEWLIB -DMG_ENABLE_CUSTOM_MILLIS=1 CFLAGS += -DMG_ENABLE_CUSTOM_RANDOM=1 -DMG_ENABLE_PACKED_FS=1 $(CFLAGS_EXTRA) +ifeq ($(OS),Windows_NT) + RM = cmd /C del /Q /F /S +else + RM = rm -rf +endif + all build example: firmware.bin firmware.bin: firmware.elf @@ -24,10 +30,10 @@ firmware.elf: cmsis_core cmsis_f7 $(SOURCES) hal.h link.ld flash: firmware.bin st-flash --reset write $< 0x8000000 -cmsis_f7: # ARM CMSIS core headers - git clone --depth 1 -b v1.2.8 https://github.com/STMicroelectronics/cmsis_device_f7 $@ -cmsis_core: # ST CMSIS headers for STM32F7 series +cmsis_core: # ARM CMSIS core headers git clone --depth 1 -b 5.9.0 https://github.com/ARM-software/CMSIS_5 $@ +cmsis_f7: # ST CMSIS headers for STM32F7 series + git clone --depth 1 -b v1.2.8 https://github.com/STMicroelectronics/cmsis_device_f7 $@ # Automated remote test. Requires env variable VCON_API_KEY set. See https://vcon.io/automated-firmware-tests/ DEVICE_URL ?= https://dash.vcon.io/api/v3/devices/5 @@ -41,4 +47,4 @@ test: update grep 'MQTT connected' /tmp/output.txt # Check for MQTT connection success clean: - @rm -rf firmware.* *.su cmsis_core cmsis_f7 + $(RM) firmware.* *.su cmsis_core cmsis_f7 diff --git a/examples/stm32/nucleo-f746zg-baremetal/hal.h b/examples/stm32/nucleo-f746zg-baremetal/hal.h index 4783d309..a29353d7 100644 --- a/examples/stm32/nucleo-f746zg-baremetal/hal.h +++ b/examples/stm32/nucleo-f746zg-baremetal/hal.h @@ -75,7 +75,6 @@ static inline void gpio_output(uint16_t pin) { static inline void irq_exti_attach(uint16_t pin) { uint8_t bank = (uint8_t) (PINBANK(pin)), n = (uint8_t) (PINNO(pin)); - RCC->APB2ENR |= RCC_APB2ENR_SYSCFGEN; // Enable SYSCFG SYSCFG->EXTICR[n / 4] &= ~(15UL << ((n % 4) * 4)); SYSCFG->EXTICR[n / 4] |= (uint32_t) (bank << ((n % 4) * 4)); EXTI->IMR |= BIT(n); @@ -133,7 +132,7 @@ static inline uint32_t rng_read(void) { return RNG->DR; } -#define UUID ((uint8_t *) 0x1ff0f420) // Unique 96-bit chip ID. TRM 41.1 +#define UUID ((uint8_t *) UID_BASE) // Unique 96-bit chip ID. TRM 41.1 // Helper macro for MAC generation #define GENERATE_LOCALLY_ADMINISTERED_MAC() \ diff --git a/examples/stm32/nucleo-f746zg-freertos-mip/Makefile b/examples/stm32/nucleo-f746zg-freertos-mip/Makefile index 512385bd..8d9bc388 100644 --- a/examples/stm32/nucleo-f746zg-freertos-mip/Makefile +++ b/examples/stm32/nucleo-f746zg-freertos-mip/Makefile @@ -17,6 +17,12 @@ CFLAGS += -IFreeRTOS-Kernel/portable/GCC/ARM_CM7/r0p1 -Wno-conversion SOURCES += ../../../mongoose.c # Mongoose options are defined in mongoose_custom.h CFLAGS += -I../../.. $(CFLAGS_EXTRA) +ifeq ($(OS),Windows_NT) + RM = cmd /C del /Q /F /S +else + RM = rm -rf +endif + all build example: firmware.bin firmware.bin: firmware.elf @@ -46,4 +52,4 @@ test: update grep 'READY, IP:' /tmp/output.txt # Check for network init clean: - @rm -rf firmware.* *.su cmsis_core cmsis_f7 FreeRTOS-Kernel + $(RM) firmware.* *.su cmsis_core cmsis_f7 FreeRTOS-Kernel diff --git a/examples/stm32/nucleo-f746zg-usb-rndis/Makefile b/examples/stm32/nucleo-f746zg-usb-rndis/Makefile index 7c84f863..9136b2b7 100644 --- a/examples/stm32/nucleo-f746zg-usb-rndis/Makefile +++ b/examples/stm32/nucleo-f746zg-usb-rndis/Makefile @@ -23,9 +23,9 @@ CFLAGS += -DSTM32F746xx CFLAGS += -Wno-conversion -Wno-sign-conversion ifeq ($(OS),Windows_NT) - RM = cmd /C del /Q /F + RM = cmd /C del /Q /F /S else - RM = rm -f + RM = rm -rf endif all build example: firmware.bin @@ -45,4 +45,4 @@ flash: firmware.bin st-flash --reset write firmware.bin 0x8000000 clean: - $(RM) firmware.* + $(RM) firmware.* tinyusb diff --git a/examples/stm32/nucleo-h743zi-baremetal/Makefile b/examples/stm32/nucleo-h743zi-baremetal/Makefile index 09dd9af8..d63f5781 100644 --- a/examples/stm32/nucleo-h743zi-baremetal/Makefile +++ b/examples/stm32/nucleo-h743zi-baremetal/Makefile @@ -14,6 +14,12 @@ CFLAGS += -DMG_ENABLE_TCPIP=1 -DMG_ARCH=MG_ARCH_NEWLIB -DMG_ENABLE_PACKED_FS=1 CFLAGS += -DMG_ENABLE_CUSTOM_RANDOM=1 -DMG_ENABLE_CUSTOM_MILLIS=1 CFLAGS += -DMG_ENABLE_DRIVER_STM32H=1 $(CFLAGS_EXTRA) +ifeq ($(OS),Windows_NT) + RM = cmd /C del /Q /F /S +else + RM = rm -rf +endif + all build example: firmware.bin firmware.bin: firmware.elf @@ -25,10 +31,10 @@ firmware.elf: cmsis_core cmsis_h7 $(SOURCES) hal.h link.ld flash: firmware.bin st-flash --reset write $< 0x8000000 -cmsis_h7: # ARM CMSIS core headers - git clone --depth 1 -b v1.10.3 https://github.com/STMicroelectronics/cmsis_device_h7 $@ -cmsis_core: # ST CMSIS headers for STM32F7 series +cmsis_core: # ARM CMSIS core headers git clone --depth 1 -b 5.9.0 https://github.com/ARM-software/CMSIS_5 $@ +cmsis_h7: # ST CMSIS headers for STM32H7 series + git clone --depth 1 -b v1.10.3 https://github.com/STMicroelectronics/cmsis_device_h7 $@ # Automated remote test. Requires env variable VCON_API_KEY set. See https://vcon.io/automated-firmware-tests/ DEVICE_URL ?= https://dash.vcon.io/api/v3/devices/6 diff --git a/examples/stm32/nucleo-h743zi-baremetal/README.md b/examples/stm32/nucleo-h743zi-baremetal/README.md index 694c4778..e510ffcf 100644 --- a/examples/stm32/nucleo-h743zi-baremetal/README.md +++ b/examples/stm32/nucleo-h743zi-baremetal/README.md @@ -1,41 +1,3 @@ -# Baremetal webserver on NUCLEO-H743ZI +# Baremetal web device dashboard on NUCLEO-H743ZI -This firmware uses MIP, an experimental TCP/IP stack of the Mongoose Network Library, -which implements the following: - -- A complete [HTTP device dashboard](../../device-dashboard) with: - - User authentication - - Real-time device data graph - - Coninfiguration display and update - - MQTT communication with a remote MQTT server -- No dependencies: no HAL, no CMSIS, no RTOS -- Hand-written [mcu.h](mcu.h) header based on the [datasheet](https://www.st.com/resource/en/reference_manual/rm0433-stm32h742-stm32h743753-and-stm32h750-value-line-advanced-armbased-32bit-mcus-stmicroelectronics.pdf) -- Interrupt-driven [Ethernet driver](../../../drivers/driver_stm32h.c) -- Debug log on UART3 (st-link) - -## Requirements - -- [GNU make](http://mongoose.ws/tutorials/tools/#gnu-make) -- [ARM GCC](http://mongoose.ws/tutorials/tools/#arm-gcc) -- [stlink](http://mongoose.ws/tutorials/tools/#stlink) for flashing - -The links above will send you to tutorials on how to install each of those tools in your workstation for Linux, Mac, and Windows. - -## Usage - -Plugin your Nucleo board into USB, and attach an Ethernet cable. -To build and flash: - -```sh -$ make clean flash -``` - -To see debug log, use any serial monitor program like `picocom` at 115200 bps and configure it to insert carriage returns after line feeds: - -```sh -$ picocom /dev/ttyACM0 -i -b 115200 --imap=lfcrlf -``` - -There is also a [tutorial on a similar example](https://mongoose.ws/tutorials/stm32/nucleo-f746zg-baremetal/) but for the NUCLEO-F746ZG board - -For more details and benchmark data on MIP, check the [F746ZG example](../nucleo-f746zg-baremetal/) +See https://mongoose.ws/tutorials/stm32/nucleo-h743zi-baremetal/