正点原子阿波罗STM32F429IGT6移植zephyr rtos(一)---创建自己的board

硬件平台:正点原子阿波罗STM32F429IGT6

zephyr版本:Zephyr version 3.7.99 

开发环境:ubuntu 24.4

一.环境搭建

环境搭建已经有很多优秀的文章了,我就不再重复造轮子了,搭建zephyr环境请参考,如果觉得有需要我出一篇环境搭建请下方留言。

1.Getting Started Guide — Zephyr Project Documentation

2.手把手教 Zephyr 嵌入式实时操作系统开发环境的安装配置_zephyr os-CSDN博客

二.创建自己的board

创建board的思路就是,找跟自己使用平台比较接近的例程,复制一份,修改一下文件名,config文件以及设备树。怎么查看跟自己板子接近的例程呢?

首先打开zephyr官网:Getting Started Guide — Zephyr Project Documentation

找到

  • Supported Boards

然后摁下CTRL+F搜索

如果你是新手,支持列表也没有你板子接近的型号,强烈建议换一个支持的板子

查到之后,去zephyr源码目录找板子的文件夹

在zephyrproject/zephyr/boards/st目录下,这个目录就是ST公司出的板子

 用vscode打开zephyr工程源码

进入zephyrproject/zephyr/boards/st,把stm32f429i_disc1复制一份,文件夹命名为stm32f429i_alientek,里边的文件也要按照这个格式改

然后修改文件内容,doc文件夹不用改,就从上往下改吧

openocd.cfg:

source [find interface/stlink-dap.cfg]

transport select "dapdirect_swd"

set CHIPNAME STM32F429IGTx
set BOARDNAME STM32F429I-ALIENTEK

source [find target/stm32f4x.cfg]

$_TARGETNAME configure -event gdb-attach {
	echo "Debugger attaching: halting execution"
	reset halt
	gdb_breakpoint_override hard
}

$_TARGETNAME configure -event gdb-detach {
	echo "Debugger detaching: resuming execution"
	resume
}

board.cmake

# SPDX-License-Identifier: Apache-2.0

# keep first
board_runner_args(stm32cubeprogrammer "--port=swd" "--reset-mode=hw")
board_runner_args(jlink "--device=STM32F429IG" "--speed=4000")
board_runner_args(pyocd "--target=stm32f429xg")
board_runner_args(pyocd "--flash-opt=-O reset_type=hw")
board_runner_args(pyocd "--flash-opt=-O connect_mode=under-reset")

# keep first
include(${ZEPHYR_BASE}/boards/common/stm32cubeprogrammer.board.cmake)
include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)
include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake)
include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

board.yml

board:
  name: stm32f429i_alientek
  vendor: st
  socs:
    - name: stm32f429xx

Kconfig.defconfig

# STM32F4DISCOVERY board configuration

# Copyright (c) 2016 Linaro Limited.
# SPDX-License-Identifier: Apache-2.0

if BOARD_STM32F429I_ALIENTEK

config INPUT
	default y if DISPLAY

config MEMC
	default y if DISPLAY

endif # BOARD_STM32F429I_ALIENTEK

Kconfig.stm32f429i_alientek

# Copyright (c) 2016 Linaro Limited.
# SPDX-License-Identifier: Apache-2.0

config BOARD_STM32F429I_ALIENTEK
	select SOC_STM32F429XX

stm32f429i_alientek_defconfig

# SPDX-License-Identifier: Apache-2.0

# Enable MPU
CONFIG_ARM_MPU=n
CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=180000000
CONFIG_CLOCK_STM32_HSE_CLOCK=25000000


# Enable HW stack protection
CONFIG_HW_STACK_PROTECTION=y

CONFIG_SERIAL=y

# console
CONFIG_CONSOLE=y
CONFIG_UART_CONSOLE=y

# enable GPIO
CONFIG_GPIO=y

stm32f429i_alientek.yaml

identifier: stm32f429i_alientek
name: ALIENTEK STM32F429I 
type: mcu
arch: arm
toolchain:
  - zephyr
  - gnuarmemb
  - xtools
ram: 192
flash: 2048
supported:
  - counter
  - i2c
  - spi
  - display
vendor: st

如果你也用的阿波罗429,可以直接复制粘贴

比较特殊的有两处需要说明一下

1.deconfig文件,429ig不支持mpu,所以要选n,不然运行不了;时钟配置为180M,晶振为25M

2.dts的pll部分

这样工程就配好了,是不是很简单?

三.测试验证

编译:

west build -p always -b stm32f429i_alientek samples/hello_world/

编译成功现象:

先打开串口:

sudo minicom -D /dev/ttyUSB0 -b 115200

烧录:

west flash

烧录成功串口打印:

参考文章:

ZephyrOS--添加自定义STM32开发板_zephyr stm32-CSDN博客

基于stm32f429运行zephyr以及mcuboot_zephyr stm32-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值