ST Nucleo F767ZI

Overview

This is a set of Bridle’s extension to the original Zephyr upstream board ST Nucleo F767ZI with some adaptions and improvement on Kconfig and Devicetree level.

List of extensions

Kconfig

  • activate self powered USB explicitly and set the maximum of electrical current consumption to 0㎃:

    ST Nucleo F767ZI

    Kconfig.defconfig
    config USB_SELF_POWERED
    	default y
    	depends on USB_DEVICE_STACK && BOARD_NUCLEO_F767ZI
    
    config USB_MAX_POWER
    	default 0 if BOARD_NUCLEO_F767ZI	# 0mA (self powered)
    	depends on USB_DEVICE_STACK && BOARD_NUCLEO_F767ZI
    
  • change log level and startup delay only in case of use the native USB device port st,stm32-otgfs with CDC-ACM UART zephyr,cdc-acm-uart as Zephyr console:

    ST Nucleo F767ZI

    Kconfig.defconfig
    # Workaround for not being able to have commas in macro arguments
    DT_CHOSEN_Z_CONSOLE := zephyr,console
    DT_COMPAT_Z_CDC_ACM_UART := zephyr,cdc-acm-uart
    DT_COMPAT_STM32_USB := st,stm32-otgfs
    
    # Macros to shorten Kconfig expressions
    DT_CHOSEN_CONSOLE_NODE := $(dt_chosen_path,$(DT_CHOSEN_Z_CONSOLE))
    DT_CHOSEN_CONSOLE_PARENT := $(dt_node_parent,$(DT_CHOSEN_CONSOLE_NODE))
    
    if BOARD_NUCLEO_F767ZI && \
    	$(dt_chosen_enabled,$(DT_CHOSEN_Z_CONSOLE)) && \
    	$(dt_compat_on_bus,$(DT_COMPAT_Z_CDC_ACM_UART),usb) && \
    	$(dt_node_has_compat,$(DT_CHOSEN_CONSOLE_PARENT),$(DT_COMPAT_STM32_USB))
    
    # Logger cannot use itself to log
    choice USB_CDC_ACM_LOG_LEVEL_CHOICE
    	default USB_CDC_ACM_LOG_LEVEL_OFF
    	depends on LOG
    endchoice
    
    # Set USB log level to error only
    choice USB_DEVICE_LOG_LEVEL_CHOICE
    	default USB_DEVICE_LOG_LEVEL_ERR
    	depends on LOG
    endchoice
    
    # Wait 4000ms at startup for logging
    config LOG_PROCESS_THREAD_STARTUP_DELAY_MS
    	default 4000
    	depends on LOG
    
    # Wait 4000ms at startup for USB enumeration on host side
    config BOOT_DELAY
    	default 4000
    
    endif # zephyr,cdc-acm-uart
    

Devicetree

  • set default entries for model and compatible of the boards:

    ST Nucleo F767ZI

    nucleo_f767zi.overlay
    / {
    	model = "STMicroelectronics STM32F767ZI-NUCLEO board @ UART Concole";
    	compatible = "st,stm32f767zi-nucleo", "st,stm32f767zi-nucleo-uartcons";
    };