Zephyr笔记:在STM32F429上运行HelloWorld

发布时间:
来源: 电子工程世界

Zephyr版本号:2.2.0

开发板:STM32F429IGT6(野火STM32F429挑战者 V2开发板)

开发环境:Windows 7 64位

这里选择的是Zephyr当前最新的Release版本2.2.0进行说明的。

1、修改代码

前面文章的操作,虽然在Windows下能够成功的编译STM32F429的工程,但是却不能在野火挑战者V2开发板上运行,因为Zephyr代码中的STM32F429硬件和野火的外围硬件不一样(其实CPU也有一些差异)。主要体现在外部晶振,时钟的配置以及MPU上面(野火挑战者V2开发板使用的CPU是STM32F429IGT6,不带MPU功能)。

进入到 boards/arm/stm32f429i_disc1 文件夹中,然后修改文件 stm32f429i_disc1_defconfig,需要修改的内容如下:


CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC=180000000
CONFIG_ARM_MPU=n
CONFIG_CLOCK_STM32_HSE_CLOCK=25000000
CONFIG_CLOCK_STM32_PLL_M_DIVISOR=25
CONFIG_CLOCK_STM32_PLL_N_MULTIPLIER=360


在 stm32f429i_disc1_defconfig 文件的末尾,添加如下的内容(该内容的含义是编译出的代码不进行优化,这样便于调试):


CONFIG_NO_OPTIMIZATIONS=y


修改文件 board.cmake,需要修改的内容如下:


board_runner_args(jlink"--device=STM32F429IG""--speed=4000")


2、编译HelloWorld应用

确定命令提示符的路径在Zephyr2.2.0源代码目录中,执行下述命令:


westbuild-pauto-bstm32f429i_disc1samples/hello_world


编译成功的输出信息如下:

62dd597a-d054-11ed-bfe3-dac502259ad0.png

3、下载程序到开发板

确保Windows中安装了JLink驱动,并且将JLink驱动的路径(JLink.exe所在的路径)添加到系统环境变量的Path中。我这里安装的是Jlink V6.48a,其路径为:C:Program Files (x86)SEGGERJLink_V648a。

如果没有将JLink驱动的路径添加到环境变量中,下载程序时会出现类似的错误:FATAL ERROR: required program JLink.exe not found; install it or add its location to PATH。

将开发板上电,连接好JLink调试器,连接好串口线并且打开串口调试助手,然后执行下述命令将程序烧写到开发板中:


westflash--runnerjlink


程序下载成功之后,会在串口调试助手中打印出信息,如下图所示:

6303caa6-d054-11ed-bfe3-dac502259ad0.png

4、使用GDB调试程序

程序下载成功之后,执行命令:west debug --runner jlink(该命令会自动打开JLink GDB Server,不需要提前手动打开JLink GDB Server),可以使用GDB调试Zephyr,先前的镜像不能成功打印信息,我也是通过这个命令来调试Zephyr,最终定位时钟参数问题的。

631e8cf6-d054-11ed-bfe3-dac502259ad0.png

接下来的一篇文章,会讲述如何使用Eclipse来调试Zephyr,虽然也是使用的GDB,但是调试更加的方便,能够手动添加断点,添加观察的变量,随意切换文件


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。