Zephyr笔记:在STM32F429上运行HelloWorld

发布者:科技狂人最新更新时间:2023-07-03 来源: elecfans关键字: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,但是调试更加的方便,能够手动添加断点,添加观察的变量,随意切换文件


关键字:Zephyr  STM32F429  HelloWorld 引用地址:Zephyr笔记:在STM32F429上运行HelloWorld

上一篇:STM32调试SP3485技术总结
下一篇:STM32单片机的ISP一键下载

推荐阅读最新更新时间:2024-10-31 11:23

第28章 STM32F429的系统bootloader基础知识
28.1 初学者重要提示 本章主要为大家介绍系统bootloader的理论知识,下个章节为大家实战。 更多系统bootloader的基础知识看本帖的AN2606应用笔记:http://www.armbbs.cn/forum.php?mod=viewthread&tid=96573 28.2 系统bootLoader基础知识 STM32的系统存储区自带bootloader,此程序是ST在芯片出厂时烧录进去的,主要用于将用户应用程序下载到芯片内部Flash。支持USB,SPI,I2C,CAN,UART等接口方式下载。如果大家的应用程序打算采用这种接口方式进行升级,可以考虑采用系统bootloader,简单易用,无需用户自己写b
[单片机]
第28章 <font color='red'>STM32F429</font>的系统bootloader基础知识
STM32F429 >> 20. CAN 通讯(Code)
本工程配置CAN 为回环模式。 编程指南 1. can 基本模式配置; 2. can 筛选器配置; 3. 发送数据结构体配置并发送; 4. 接收数据结构体配置并接收; 若采用中断进行数据读取,则加入中断配置,并在中断中进行数据接收即可。 bsp_can.h /** ****************************************************************************** * @file bsp_can.h * @author Waao * @version V1.0.0 * @date 21-Feb-2019 * @brief This file co
[单片机]
第16章 STM32F429必备的HAL库API
16.1 初学者重要提示 对于一些常用的函数,大家一定要熟练的掌握都实现了什么功能,比如HAL_Init,HAL_RCC_OscConfig,HAL_RCC_ClockConfig等。最好的办法是把这些函数的源码读一遍。 16.2 那些是必备的API 这里我们通过一个简单的初始化流程来了解STM32F4的工程模板所必备的库文件和API: 第1步:系统上电复位,进入启动文件startup_stm32f429xx.s,在这个文件里面执行复位中断服务程序。 在复位中断服务程序里面执行函数SystemInit,此函数在文件system_stm32f4xx.c里面。 之后是调用编译器封装好的函数,比如用于MDK的启动文件是调
[单片机]
第16章 <font color='red'>STM32F429</font>必备的HAL库API
学习STM32F429时钟系统笔记
1.为什么 STM32 要有多个时钟源呢? 因为首先 STM32 本身非常复杂,外设非常的多,但是并不是所有外设都需要系统时钟这么高的频率, 比如看门狗以及 RTC 只需要几十 k 的时钟即可。同一个电路,时钟越快功耗越大,同时抗电磁 干扰能力也会越弱,所以对于较为复杂的 MCU 一般都是采取多时钟源的方法来解决这些问题。 2.哪几种重要的时钟源? 在stm32f429,HSI、HSE、LSI、LSE、PLL五个重要时钟源, 其中 PLL实际是分为三个时钟源,分别为主 PLL 和 I2S 部分专用 PLLI2S 和 SAI 部分专用 PLLSAI。 ①、LSI 是低速内部时钟,RC 振荡器,频率为 32kHz 左右。供独立看
[单片机]
第5章 STM32F429下载和调试方法(MDK5)
5.1 初学者重要提示 如果使用JLINK调试下载STM32F429,可以使用JLINK V8,V9和V10。 如果使用STLINK调试下载STM32F429,推荐使用最新的电脑端驱动和对应的固件,详情见第2章的2.6小节。 MDK曾发布的STM32F1,F407,F429和F7的所有调试方法的设置细节及其注意事项,同样适用于STM32H7:http://www.armbbs.cn/forum.php?mod=viewthread&tid=14896 。 MDK5调试过程中容易崩溃的问题,请看本章5.4小节,比较重要。 JLINK无法下载解决思路以及常见问题整理,适用于其它LINK:http://www.armb
[单片机]
第5章 <font color='red'>STM32F429</font>下载和调试方法(MDK5)
STM32F429之GPIO使用
STM32 IO模式 (1)浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1 (2)带上拉输入_IPU——IO内部上拉电阻输入 (3)带下拉输入_IPD—— IO内部下拉电阻输入 (4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电 (5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变 。可以读IO输入电平变化,实现C51的IO双向功能 (6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输
[单片机]
STM32F429 PWM配置
void TIM4_PWM_Init(u32 arr,u32 psc, u32 dutyCycle) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //TIM4时钟使能 RCC_AHB1PeriphClockCmd(RCC_AHB1Pe
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved