移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上
生活随笔
收集整理的這篇文章主要介紹了
移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
移植(port)zephyrOS到正點原子apollo STM32F767開發板上,按照官方移植文檔[1],在 boardsarm 中復制nucleo_f767zi,并改名apollo_f767ig,分別重命名nucleo_f767zi.dts、nucleo_f767zi.yaml、nucleo_f767zi_defconfig為apollo_f767ig.dts、apollo_f767ig.yaml、apollo_f767ig_defconfig,并修改內容如下:
apollo_f767ig.dts
/** Copyright (c) 2019 Roland Ma** SPDX-License-Identifier: Apache-2.0*//dts-v1/; #include <mem.h> #include <st/f7/stm32f767.dtsi>/ {model = "Alientek apollo-f767ig board";compatible = "Alientek,apollo-f767ig", "st,stm32f767";chosen {zephyr,console = &usart1;zephyr,shell-uart = &usart1;zephyr,sram = &sram0;zephyr,flash = &flash0;zephyr,dtcm = &dtcm;zephyr,can-primary = &can1;};//存儲控制器soc {flash-controller@40023c00 {flash0: flash@8000000 {reg = <0x08000000 DT_SIZE_K(2048)>;};};};//紅DS0 綠DS1兩個LEDleds {compatible = "gpio-leds";red_led: led_0 {gpios = <&gpiob 1 GPIO_ACTIVE_HIGH>;label = "DS0";};green_led: led_1 {gpios = <&gpiob 0 GPIO_ACTIVE_HIGH>;label = "DS1";};};//key0 ley1 ley2 三個按鍵gpio_keys {compatible = "gpio-keys";user_button0: button_0 {label = "key0";gpios = <&gpioh 3 GPIO_ACTIVE_HIGH>;};user_button1: button_1 {label = "key1";gpios = <&gpioh 2 GPIO_ACTIVE_HIGH>;};user_button2: button_2 {label = "key2";gpios = <&gpioc 13 GPIO_ACTIVE_HIGH>;};};//別名aliases {led0 = &red_led;led1 = &green_led;sw0 = &user_button0;}; };//串口1 波特率115200 &usart1 {current-speed = <115200>;status = "okay"; };apollo_f767ig.yaml
identifier: apollo_f767ig name: alientek apollo_f767ig type: mcu arch: arm toolchain:- zephyr- gnuarmemb- xtools ram: 512 flash: 2048 supported:- uart- gpio- usb_device- i2c- pwm- spi- watchdog- counter- canapollo_f767ig_defconfig
# SPDX-License-Identifier: Apache-2.0CONFIG_SOC_SERIES_STM32F7X=y CONFIG_SOC_STM32F767XX=y #系統時鐘216Mhz CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=216000000# Enable MPU CONFIG_ARM_MPU=y# Enable UART CONFIG_SERIAL=y# Console CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y# Enable Pinmux CONFIG_PINMUX=y# Enable GPIO CONFIG_GPIO=y# Clock Configuration CONFIG_CLOCK_CONTROL=y# HSE外部晶振時鐘輸入 25MHZ CONFIG_CLOCK_STM32_HSE_CLOCK=25000000 #PLL輸出作為SYSCLK源 CONFIG_CLOCK_STM32_SYSCLK_SRC_PLL=y # HSE作為PLL輸入 CONFIG_CLOCK_STM32_PLL_SRC_HSE=y# PLL輸出216MHZ CONFIG_CLOCK_STM32_PLL_M_DIVISOR=25 CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER=432 CONFIG_CLOCK_STM32_PLL_P_DIVISOR=2 CONFIG_CLOCK_STM32_PLL_Q_DIVISOR=9 CONFIG_CLOCK_STM32_AHB_PRESCALER=1 CONFIG_CLOCK_STM32_APB1_PRESCALER=4 CONFIG_CLOCK_STM32_APB2_PRESCALER=2并修改Kconfig.defconfig、Kconfig.board
Kconfig.defconfig
# APOLLO_F767IG board configuration# Copyright (c) 2019 Roland Ma # SPDX-License-Identifier: Apache-2.0if BOARD_APOLLO_F767IGconfig BOARDdefault "apollo_f767ig"if NETWORKINGconfig NET_L2_ETHERNETdefault yconfig ETH_STM32_HALdefault yendif # NETWORKINGendif # BOARD_NUCLEO_F767ZIKconfig.board
# APOLLO_F767IG board configuration# Copyright (c) 2019 Roland Ma # SPDX-License-Identifier: Apache-2.0 #apollo_f767ig config BOARD_APOLLO_F767IGbool "Alientek STM32 F767IG Development Board"depends on SOC_STM32F767XX為了使用USART1串口,還需更改pinmux.c文件,指定USART1使用PA9、PA10作為串口的TX、RX引腳
/** Copyright (c) 2019 Roland Ma** SPDX-License-Identifier: Apache-2.0*/#include <kernel.h> #include <device.h> #include <init.h> #include <drivers/pinmux.h> #include <sys/sys_io.h>#include <pinmux/stm32/pinmux_stm32.h>static const struct pin_config pinconf[] = { //配置USART1引腳 #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart1), okay) && CONFIG_SERIAL{STM32_PIN_PA9, STM32F7_PINMUX_FUNC_PA9_USART1_TX},{STM32_PIN_PA10, STM32F7_PINMUX_FUNC_PA10_USART1_RX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart2), okay) && CONFIG_SERIAL{ STM32_PIN_PD5, STM32F7_PINMUX_FUNC_PD5_USART2_TX },{ STM32_PIN_PD6, STM32F7_PINMUX_FUNC_PD6_USART2_RX },{ STM32_PIN_PD4, STM32F7_PINMUX_FUNC_PD4_USART2_RTS },{ STM32_PIN_PD3, STM32F7_PINMUX_FUNC_PD3_USART2_CTS }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart3), okay) && CONFIG_SERIAL{ STM32_PIN_PD8, STM32F7_PINMUX_FUNC_PD8_USART3_TX },{ STM32_PIN_PD9, STM32F7_PINMUX_FUNC_PD9_USART3_RX }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(usart6), okay) && CONFIG_SERIAL{ STM32_PIN_PG14, STM32F7_PINMUX_FUNC_PG14_USART6_TX },{ STM32_PIN_PG9, STM32F7_PINMUX_FUNC_PG9_USART6_RX }, #endif #ifdef CONFIG_ETH_STM32_HAL{ STM32_PIN_PC1, STM32F7_PINMUX_FUNC_PC1_ETH },{ STM32_PIN_PC4, STM32F7_PINMUX_FUNC_PC4_ETH },{ STM32_PIN_PC5, STM32F7_PINMUX_FUNC_PC5_ETH },{ STM32_PIN_PA1, STM32F7_PINMUX_FUNC_PA1_ETH },{ STM32_PIN_PA2, STM32F7_PINMUX_FUNC_PA2_ETH },{ STM32_PIN_PA7, STM32F7_PINMUX_FUNC_PA7_ETH },{ STM32_PIN_PG11, STM32F7_PINMUX_FUNC_PG11_ETH },{ STM32_PIN_PG13, STM32F7_PINMUX_FUNC_PG13_ETH },{ STM32_PIN_PB13, STM32F7_PINMUX_FUNC_PB13_ETH }, #endif /* CONFIG_ETH_STM32_HAL */ #ifdef CONFIG_USB_DC_STM32{ STM32_PIN_PA11, STM32F7_PINMUX_FUNC_PA11_OTG_FS_DM },{ STM32_PIN_PA12, STM32F7_PINMUX_FUNC_PA12_OTG_FS_DP }, #endif /* CONFIG_USB_DC_STM32 */ #if DT_NODE_HAS_STATUS(DT_NODELABEL(i2c1), okay) && CONFIG_I2C{ STM32_PIN_PB8, STM32F7_PINMUX_FUNC_PB8_I2C1_SCL },{ STM32_PIN_PB9, STM32F7_PINMUX_FUNC_PB9_I2C1_SDA }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(pwm1), okay) && CONFIG_PWM{ STM32_PIN_PE13, STM32F7_PINMUX_FUNC_PE13_PWM1_CH3 }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(spi1), okay) && CONFIG_SPI #ifdef CONFIG_SPI_STM32_USE_HW_SS{ STM32_PIN_PA4, STM32F7_PINMUX_FUNC_PA4_SPI1_NSS }, #endif /* CONFIG_SPI_STM32_USE_HW_SS */{ STM32_PIN_PA5, STM32F7_PINMUX_FUNC_PA5_SPI1_SCK },{ STM32_PIN_PA6, STM32F7_PINMUX_FUNC_PA6_SPI1_MISO },{ STM32_PIN_PA7, STM32F7_PINMUX_FUNC_PA7_SPI1_MOSI }, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(can1), okay) && CONFIG_CAN{STM32_PIN_PD0, STM32F7_PINMUX_FUNC_PD0_CAN_RX},{STM32_PIN_PD1, STM32F7_PINMUX_FUNC_PD1_CAN_TX}, #endif #if DT_NODE_HAS_STATUS(DT_NODELABEL(adc1), okay) && CONFIG_ADC{ STM32_PIN_PA0, STM32F7_PINMUX_FUNC_PA0_ADC123_IN0 }, #endif };static int pinmux_stm32_init(struct device *port) {ARG_UNUSED(port);stm32_setup_pins(pinconf, ARRAY_SIZE(pinconf));return 0; }SYS_INIT(pinmux_stm32_init, PRE_KERNEL_1,CONFIG_PINMUX_STM32_DEVICE_INITIALIZATION_PRIORITY);命令函行編譯
west build -p auto -b apollo_f767ig samplesbasicblinky運行
知乎視頻?www.zhihu.com參考
總結
以上是生活随笔為你收集整理的移植 stm32f7_移植zephyrOS到正点原子apollo STM32F767上的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小数乘分数怎么算过程_GMAT分数到底怎
- 下一篇: limit实现原理 mysql_值得一生