diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 876a5ab6..5b48107b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -225,11 +225,11 @@ jobs: - path: esp8266/http-client-server - path: stm32/nucleo-f429zi-make-baremetal-builtin - path: stm32/nucleo-f429zi-make-freertos-builtin - - path: stm32/nucleo-f429zi-rndis + - path: stm32/nucleo-f429zi-make-baremetal-builtin-rndis - path: stm32/nucleo-f746zg-make-baremetal-builtin - path: stm32/nucleo-f746zg-make-freertos-builtin - path: stm32/nucleo-f746zg-freertos-tcp - - path: stm32/nucleo-f746zg-rndis + - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis - path: stm32/nucleo-h743zi-make-baremetal-builtin - path: nxp/nxp-mimxrt1020-azurertos - path: nxp/nxp-frdmk66f-freertos diff --git a/examples/stm32/nucleo-f429zi-rndis/Makefile b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/Makefile similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/Makefile rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/Makefile diff --git a/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/README.md b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/README.md new file mode 100644 index 00000000..5eefc3b7 --- /dev/null +++ b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/README.md @@ -0,0 +1,3 @@ +# RNDIS Web device dashboard on NUCLEO-F429ZI + +See https://mongoose.ws/tutorials/stm32/all-make-baremetal-builtin-rndis/ diff --git a/examples/stm32/nucleo-f429zi-rndis/hal.h b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/hal.h similarity index 85% rename from examples/stm32/nucleo-f429zi-rndis/hal.h rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/hal.h index 1c3849d3..9d337766 100644 --- a/examples/stm32/nucleo-f429zi-rndis/hal.h +++ b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/hal.h @@ -17,6 +17,13 @@ #define PINNO(pin) (pin & 255) #define PINBANK(pin) (pin >> 8) +#define LED1 PIN('B', 0) // On-board LED pin (green) +#define LED2 PIN('B', 7) // On-board LED pin (blue) +#define LED3 PIN('B', 14) // On-board LED pin (red) + +#define LED LED2 // Use blue LED for blinking + +// System clock // 6.3.3: APB1 clock <= 45MHz; APB2 clock <= 90MHz // 3.5.1, Table 11: configure flash latency (WS) in accordance to clock freq // 33.4: The AHB clock must be at least 25 MHz when Ethernet is used @@ -121,6 +128,20 @@ static inline uint8_t uart_read_byte(USART_TypeDef *uart) { return (uint8_t) (uart->DR & 255); } +static inline void usb_init() { + gpio_init(PIN('A', 11), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 10); // D+ + gpio_init(PIN('A', 12), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 10); // D- + gpio_init(PIN('A', 9), GPIO_MODE_INPUT, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 0); // VBUS + gpio_init(PIN('A', 10), GPIO_MODE_AF, GPIO_OTYPE_OPEN_DRAIN, GPIO_SPEED_HIGH, + GPIO_PULL_UP, 10); // ID + RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN; // Enable USB FS clock + USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS; // VBUS sensing disable + USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBUSBSEN; // VBUS sensing enable +} + static inline void rng_init(void) { RCC->AHB2ENR |= RCC_AHB2ENR_RNGEN; RNG->CR |= RNG_CR_RNGEN; diff --git a/examples/stm32/nucleo-f429zi-rndis/link.ld b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/link.ld similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/link.ld rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/link.ld diff --git a/examples/stm32/nucleo-f746zg-rndis/main.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c similarity index 84% rename from examples/stm32/nucleo-f746zg-rndis/main.c rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c index 6bf7ff83..228c90e3 100644 --- a/examples/stm32/nucleo-f746zg-rndis/main.c +++ b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/main.c @@ -5,7 +5,6 @@ #include "mongoose.h" #include "tusb.h" -#define LED PIN('B', 7) // On-board LED pin (blue) static struct mg_tcpip_if *s_ifp; const uint8_t tud_network_mac_address[6] = {2, 2, 0x84, 0x6A, 0x96, 0}; @@ -101,15 +100,7 @@ int main(void) { mg_http_listen(&mgr, "tcp://0.0.0.0:80", fn, &mgr); MG_INFO(("Init USB ...")); - gpio_init(PIN('A', 11), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 10); // D+ - gpio_init(PIN('A', 12), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 10); // D- - gpio_init(PIN('A', 9), GPIO_MODE_INPUT, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 0); // VBUS - gpio_init(PIN('A', 10), GPIO_MODE_AF, GPIO_OTYPE_OPEN_DRAIN, GPIO_SPEED_HIGH, - GPIO_PULL_UP, 10); // ID - RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN; // Enable USB FS clock + usb_init(); tusb_init(); MG_INFO(("Init done, starting main loop ...")); diff --git a/examples/stm32/nucleo-f429zi-rndis/mongoose.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/mongoose.c similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/mongoose.c rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/mongoose.c diff --git a/examples/stm32/nucleo-f429zi-rndis/mongoose.h b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/mongoose.h similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/mongoose.h rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/mongoose.h diff --git a/examples/stm32/nucleo-f429zi-rndis/netif/ethernet.h b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/netif/ethernet.h similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/netif/ethernet.h rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/netif/ethernet.h diff --git a/examples/stm32/nucleo-f429zi-rndis/syscalls.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/syscalls.c similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/syscalls.c rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/syscalls.c diff --git a/examples/stm32/nucleo-f429zi-rndis/sysinit.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/sysinit.c similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/sysinit.c rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/sysinit.c diff --git a/examples/stm32/nucleo-f429zi-rndis/tusb_config.h b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/tusb_config.h similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/tusb_config.h rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/tusb_config.h diff --git a/examples/stm32/nucleo-f429zi-rndis/usb_descriptors.c b/examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/usb_descriptors.c similarity index 100% rename from examples/stm32/nucleo-f429zi-rndis/usb_descriptors.c rename to examples/stm32/nucleo-f429zi-make-baremetal-builtin-rndis/usb_descriptors.c diff --git a/examples/stm32/nucleo-f429zi-rndis/README.md b/examples/stm32/nucleo-f429zi-rndis/README.md deleted file mode 100644 index 495d307f..00000000 --- a/examples/stm32/nucleo-f429zi-rndis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# RNDIS Web device dashboard on NUCLEO-F429ZI - -See https://mongoose.ws/tutorials/stm32/nucleo-f429zi-rndis/ diff --git a/examples/stm32/nucleo-f746zg-rndis/Makefile b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/Makefile similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/Makefile rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/Makefile diff --git a/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/README.md b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/README.md new file mode 100644 index 00000000..9096bcdd --- /dev/null +++ b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/README.md @@ -0,0 +1,3 @@ +# RNDIS Web device dashboard on NUCLEO-F746ZG + +See https://mongoose.ws/tutorials/stm32/all-make-baremetal-builtin-rndis/ diff --git a/examples/stm32/nucleo-f746zg-rndis/hal.h b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/hal.h similarity index 87% rename from examples/stm32/nucleo-f746zg-rndis/hal.h rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/hal.h index 36a1b71c..1c311dcf 100644 --- a/examples/stm32/nucleo-f746zg-rndis/hal.h +++ b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/hal.h @@ -17,6 +17,12 @@ #define PINNO(pin) (pin & 255) #define PINBANK(pin) (pin >> 8) +#define LED1 PIN('B', 0) // On-board LED pin (green) +#define LED2 PIN('B', 7) // On-board LED pin (blue) +#define LED3 PIN('B', 14) // On-board LED pin (red) + +#define LED LED2 // Use blue LED for blinking + /* System clock 5.3.3: APB1 clock <= 54MHz; APB2 clock <= 108MHz 3.3.2, Table 5: configure flash latency (WS) in accordance to clock freq @@ -123,6 +129,18 @@ static inline uint8_t uart_read_byte(USART_TypeDef *uart) { return (uint8_t) (uart->RDR & 255); } +static inline void usb_init(void) { + gpio_init(PIN('A', 11), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 10); // D+ + gpio_init(PIN('A', 12), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 10); // D- + gpio_init(PIN('A', 9), GPIO_MODE_INPUT, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, + GPIO_PULL_NONE, 0); // VBUS + gpio_init(PIN('A', 10), GPIO_MODE_AF, GPIO_OTYPE_OPEN_DRAIN, GPIO_SPEED_HIGH, + GPIO_PULL_UP, 10); // ID + RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN; // Enable USB FS clock +} + static inline void rng_init(void) { RCC->AHB2ENR |= RCC_AHB2ENR_RNGEN; RNG->CR |= RNG_CR_RNGEN; diff --git a/examples/stm32/nucleo-f746zg-rndis/link.ld b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/link.ld similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/link.ld rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/link.ld diff --git a/examples/stm32/nucleo-f429zi-rndis/main.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c similarity index 80% rename from examples/stm32/nucleo-f429zi-rndis/main.c rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c index b4bbe32e..228c90e3 100644 --- a/examples/stm32/nucleo-f429zi-rndis/main.c +++ b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/main.c @@ -5,7 +5,6 @@ #include "mongoose.h" #include "tusb.h" -#define LED PIN('B', 7) // On-board LED pin (blue) static struct mg_tcpip_if *s_ifp; const uint8_t tud_network_mac_address[6] = {2, 2, 0x84, 0x6A, 0x96, 0}; @@ -101,17 +100,7 @@ int main(void) { mg_http_listen(&mgr, "tcp://0.0.0.0:80", fn, &mgr); MG_INFO(("Init USB ...")); - gpio_init(PIN('A', 11), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 10); // D+ - gpio_init(PIN('A', 12), GPIO_MODE_AF, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 10); // D- - gpio_init(PIN('A', 9), GPIO_MODE_INPUT, GPIO_OTYPE_PUSH_PULL, GPIO_SPEED_HIGH, - GPIO_PULL_NONE, 0); // VBUS - gpio_init(PIN('A', 10), GPIO_MODE_AF, GPIO_OTYPE_OPEN_DRAIN, GPIO_SPEED_HIGH, - GPIO_PULL_UP, 10); // ID - RCC->AHB2ENR |= RCC_AHB2ENR_OTGFSEN; // Enable USB FS clock - USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_NOVBUSSENS; // VBUS sensing disable - USB_OTG_FS->GCCFG |= USB_OTG_GCCFG_VBUSBSEN; // VBUS sensing enable + usb_init(); tusb_init(); MG_INFO(("Init done, starting main loop ...")); diff --git a/examples/stm32/nucleo-f746zg-rndis/mongoose.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/mongoose.c similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/mongoose.c rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/mongoose.c diff --git a/examples/stm32/nucleo-f746zg-rndis/mongoose.h b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/mongoose.h similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/mongoose.h rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/mongoose.h diff --git a/examples/stm32/nucleo-f746zg-rndis/netif/ethernet.h b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/netif/ethernet.h similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/netif/ethernet.h rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/netif/ethernet.h diff --git a/examples/stm32/nucleo-f746zg-rndis/syscalls.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/syscalls.c similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/syscalls.c rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/syscalls.c diff --git a/examples/stm32/nucleo-f746zg-rndis/sysinit.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/sysinit.c similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/sysinit.c rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/sysinit.c diff --git a/examples/stm32/nucleo-f746zg-rndis/tusb_config.h b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/tusb_config.h similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/tusb_config.h rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/tusb_config.h diff --git a/examples/stm32/nucleo-f746zg-rndis/usb_descriptors.c b/examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/usb_descriptors.c similarity index 100% rename from examples/stm32/nucleo-f746zg-rndis/usb_descriptors.c rename to examples/stm32/nucleo-f746zg-make-baremetal-builtin-rndis/usb_descriptors.c diff --git a/examples/stm32/nucleo-f746zg-rndis/README.md b/examples/stm32/nucleo-f746zg-rndis/README.md deleted file mode 100644 index bef64f43..00000000 --- a/examples/stm32/nucleo-f746zg-rndis/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# RNDIS Web device dashboard on NUCLEO-F746ZG - -See https://mongoose.ws/tutorials/stm32/nucleo-f746zg-rndis/