Zephyr笔记2 - 在STM32F429上运行HelloWorld

By: Ailson Jack
Date: 2020.05.15
个人博客:http://www.only2fire.com/
本文在我博客的地址是:http://www.only2fire.com/archives/118.html,排版更好,便于学习,也可以去我博客逛逛,兴许有你想要的内容呢。

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源代码目录中,执行下述命令:

west build -p auto -b stm32f429i_disc1 samples/hello_world

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

Zephyr笔记2 - 在STM32F429上运行HelloWorld_第1张图片

3、下载程序到开发板

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

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

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

west flash --runner jlink

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

Zephyr笔记2 - 在STM32F429上运行HelloWorld_第2张图片

4、使用GDB调试程序

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

Zephyr笔记2 - 在STM32F429上运行HelloWorld_第3张图片

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

如果这篇文章对你有帮助,记得点赞和关注博主就行了^_^。

排版更好的内容见我博客的地址:http://www.only2fire.com/archives/118.html
注:转载请注明出处,谢谢!^_^

你可能感兴趣的:(Zephyr,嵌入式学习,RTOS,Zephyr)