PlatformIO+Zephyr+STM32F756环境搭建及HelloWorld

PlatformIO+Zephyr+STM32F756环境搭建及HelloWorld

    • 安装VSCode及PlatformIO IDE插件
    • 下载示例项目
    • ST-Link刷J-link
    • 编辑配置文件
    • 等待PIO下载依赖及工具链
    • 编译下载调试
    • Zephyr源码位置

Zephyr作为高质量的开源嵌入式操作系统之一,风头日盛,有比肩FreeRTOS之势,不过貌似内网上介绍PlatformIO+Zephyr+STM32的不多,出个基于PlatformIO的HelloWorld吧,hope it helps~

安装VSCode及PlatformIO IDE插件

PlatformIO IDE插件的下载可能会慢,可能需要梯子,这个因人而异。

下载示例项目

点击PIO插件,在其名为PIO Home的UI,依次点击Home => Project Example => 下拉框选择zephyr-blink(闪灯例子) => import,注意这个默认会下到user目录下,不愿意放C盘的可以自行挪到自己的workspace目录去。在这里插入图片描述

ST-Link刷J-link

我的板子是Nucleo STM32F756,自带ST-Link,习惯刷成J-link
Ref: https://blog.csdn.net/ybhuangfugui/article/details/105132046

编辑配置文件

打开项目目录下的platformio.ini,注释原有配置并改为如下内容,PIO对ST官方开发板有适配,还是要方便不少,大家依自己情况修改即可。

[env:nucleo_f756zg]
platform = ststm32
board = nucleo_f756zg
framework = zephyrupload_protocol = jlink
debug_tool = jlink

等待PIO下载依赖及工具链

PIO会根据你配置的芯片、平台、板子、操作系统等下载相应的依赖及工具链,耐心等待,这个也是要等一会的,耐心耐心~

编译下载调试

依赖及工具链下载完成之后,点F5,顺利的话出现如下内容,并调用J-link进行下载调试,出现提示记得确认:

 *  Executing task: C:\Users\z003v9wv\.platformio\penv\Scripts\platformio.exe debug Processing nucleo_f756zg (platform: ststm32; board: nucleo_f756zg; framework: zephyr)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/ststm32/nucleo_f756zg.html
PLATFORM: ST STM32 (17.2.0) > ST Nucleo F756ZG
HARDWARE: STM32F756ZG 216MHz, 320KB RAM, 1MB Flash
DEBUG: Current (jlink) On-board (stlink) External (blackmagic, cmsis-dap, jlink)
PACKAGES:- framework-zephyr @ 2.30500.231204 (3.5.0)- tool-cmake @ 3.21.3- tool-dtc @ 1.4.7- tool-ninja @ 1.9.0- toolchain-gccarmnoneeabi @ 1.120301.0 (12.3.1)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 0 compatible libraries
Scanning dependencies...
No dependencies
Building in debug mode
Compiling .pio\build\nucleo_f756zg\offsets\zephyr\arch\arm\core\offsets\offsets.c.o
中间略......
Archiving .pio\build\nucleo_f756zg\zephyr\kernel\libkernel.a
Linking .pio\build\nucleo_f756zg\zephyr\firmware-pre0.elf
c:/users/z003v9wv/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.bfd.exe: warning: .pio\build\nucleo_f756zg\zephyr\firmware-pre0.elf has a LOAD segment with RWX permissions
Memory region         Used Size  Region Size  %age UsedFLASH:       19994 B         1 MB      1.91%RAM:        4480 B       256 KB      1.71%QSPI:          0 GB       256 MB      0.00%DTCM:          0 GB        64 KB      0.00%IDT_LIST:         121 B         2 KB      5.91%
Generating ISR list .pio\build\nucleo_f756zg\zephyr\isrList.bin
Generating ISR table .pio\build\nucleo_f756zg\zephyr\isr_tables.c
Compiling .pio\build\nucleo_f756zg\zephyr_final\zephyr\isr_tables.c.o
Linking .pio\build\nucleo_f756zg\firmware.elf
c:/users/z003v9wv/.platformio/packages/toolchain-gccarmnoneeabi/bin/../lib/gcc/arm-none-eabi/12.3.1/../../../../arm-none-eabi/bin/ld.bfd.exe: warning: .pio\build\nucleo_f756zg\firmware.elf has a LOAD segment with RWX permissions
Memory region         Used Size  Region Size  %age UsedFLASH:       19994 B         1 MB      1.91%RAM:        4480 B       256 KB      1.71%QSPI:          0 GB       256 MB      0.00%DTCM:          0 GB        64 KB      0.00%IDT_LIST:          0 GB         2 KB      0.00%
Checking size .pio\build\nucleo_f756zg\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [          ]   1.4% (used 4550 bytes from 327680 bytes)
Flash: [          ]   1.8% (used 18880 bytes from 1048576 bytes)
Building .pio\build\nucleo_f756zg\firmware.bin
============================================================================================================================================================ [SUCCESS] Took 18.22 seconds ============================================================================================================================================================*  Terminal will be reused by tasks, press any key to close it. 

下完会跳到main函数,再次F5,板子上的灯就闪起来了,so easy有木有~
在这里插入图片描述

Zephyr源码位置

另外,PIO把下载下来的Zephyr操作系统源码放在这里C:\Users\你的用户名\.platformio\packages\framework-zephyr

Enjoy it~

Ref:https://www.zephyrproject.org/platformio-zephyr-rtos/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/440250.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文复现】DCFace: Synthetic Face Generation with Dual Condition Diffusion Model

DCFace: 用双条件扩散模型生成合成人脸。CVPR 2023.4 code:mk-minchul/dcface (github.com) paper:[2304.07060] DCFace: Synthetic Face Generation with Dual Condition Diffusion Model (arxiv.org) 论文 介绍 应用:生成用于训练人脸…

P1019 [NOIP2000 提高组] 单词接龙 深度优先搜索

文章目录 题目链接题目描述解题思路代码实现总结 题目链接 链接: P1019 [NOIP2000 提高组] 单词接龙 题目描述 解题思路 这是一道深度优先搜索题目,我们定义check函数来计算两个字符串的最小重合部分,dfs中第一个参数代表我们当前使用的是哪一个字串,…

【Docker】WSL(Windows Subsystem for Linux)常见命令解释说明以及简单使用

欢迎来到《小5讲堂》,大家好,我是全栈小5。 这是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对…

Android Studio 出现 “Index is not created for `Stubs‘“ 的原因,如何解决?

亲爱的朋友们!大家好我是咕噜铁蛋!,今天我将与大家分享一个在Android Studio开发过程中可能遇到的问题:“Index is not created for Stubs”。这个问题看似不起眼,但实际上可能会对开发效率产生不小的影响。下面&#…

申万宏源:证券低时延交易系统全链路自主可控创新实践 |论坛实录

由中科驭数主办的第二届证券基金行业先进计算技术大会暨2024低时延技术创新实践论坛(上海站)在上海举行。会上各位嘉宾深入的分享,吸引了不少行业同仁对本次会议干货内容的关注。特此,中科驭数整理部分演讲者发言实录,…

Django学习之orm框架

八、Django学习之orm框架 其他关于Python Web开发笔记:(如果遇到问题可以一起交流~) 一、Flask学习之HTML-CSDN博客 二、Flask学习之CSS-CSDN博客 【接上篇】二、Flask学习之CSS(下篇)-CSDN博客 三、Flask学习之Bo…

BUUCTFSQL注入(部分)

原来靶场不是最折磨的,新手做ctf才是 1.[极客大挑战 2019]LoveSQL 我一共做了三题,先来讲里面最简单的题吧 看见一个登录框,先尝试注入,发现会报错,而且不过滤# ,于是就开始常规操作 1 union select 1,d…

3985. 辗转相除法

一、题目 Problem #3985 - ECNU Online Judge 二、思路 第一眼还以为是最基本的欧几里得,然后一个劲地在那里找合适的一组整数,找了一会没找到,后面直接用随机查找一下子找到了 三、代码 import sun.misc.GC;import java.util.Random; impo…

类和对象 第五部分第六小节:函数调用运算符重载

1、函数调用运算符&#xff08;&#xff09;可以重载 由于重载后使用方式非常像函数的调用&#xff0c;因此称此为仿函数 代码案例&#xff1a;打印输出仿函数 #include<iostream> using namespace std; class MyPrint { public://重载函数调用运算符void operator()(str…

2分钟快速了解!全网最详细的性能测试教程之【Redis 简介和安装】

本篇文章主要介绍基于Redis的的简介和安装&#xff0c;其中参考了许多大佬写的文章&#xff0c;算是做一个Redis的基础教程吧。 Redis 简介 Redis 是完全开源的&#xff0c;遵守 BSD 协议&#xff0c;是一个高性能的 key-value 数据库。 Redis 与其他 key - value 缓存产品有…

【数据结构:顺序表】

文章目录 线性表顺序表1.1 顺序表结构的定义1.2 初始化顺序表1.3 检查顺序表空间1.4 打印1.5 尾插1.6 头插1.7 尾删1.8 头删1.9 查找1.10 指定位置插入1.11 删除指定位置数据1.12 销毁顺序表 数据结构(Data Structure)是计算机存储、组织数据的方式&#xff0c;指相互之间存在一…

2024情人节爱心表白--python代码

# coding=utf-8 import random import turtle from datetime import *# 抬起画笔,向前运动一段距离放下 def Skip(step):turtle.penup()turtle.forward(step)turtle