ZEPHYR 快速开发指南
简介
国内小伙伴在学习zephyr的时候,有以下几个痛点:
- 学习门槛过高
- github访问不畅,下载起来比较费劲。
这篇文章将我自己踩的坑介绍一下,顺便给大家优化一些地方,避免掉所有的坑。
首先用virtualbox 来安装一个ubuntu22.04
本文适应的是ubuntu的操作系统
github访问不畅的问题
github.com 有时候无法访问,这边有个非常好用的办法,执行下面两个命令:
git config --global url."git@git.zhlh6.cn:".insteadOf https://github.com/
这个命令把github.com 转换成镜像国内地址,
执行完之后,可以通过查看~/.gitconfig 文件来检查替换是否正确。
开始搭建zephyr环境
https://docs.zephyrproject.org/latest/develop/getting_started/index.html#get-zephyr-and-install-python-dependencies
按照zephyr中的install
网页中第一步是安装Kitware, 这个只要你的ubuntu是22.04 及以上的就可以跳过这一步
第一步安装软件
当然记得切换一下软件源为国内cn99 ,这样下载软件会比较快
用下面的命令
sudo apt install --no-install-recommends git cmake ninja-build gperf \ccache dfu-util device-tree-compiler wget \python3-dev python3-pip python3-setuptools python3-tk python3-wheel xz-utils file \make gcc gcc-multilib g++-multilib libsdl2-dev libmagic1
检查软件是否安装正常:
cmake --version
python3 --version
dtc --version
获取 Zephyr 并安装 Python 依赖项
安装python venv包
输入下面的命令
sudo apt install python3-venv
创建新的虚拟环境:
python3 -m venv ~/zephyrproject/.venv
激活虚拟环境:
source ~/zephyrproject/.venv/bin/activate
安装west
pip install west
获取源码
west init ~/zephyrproject
cd ~/zephyrproject
这里需要注意west update这里会把所有包都下载下来,实际上有些hello world没必要下载所有的,
下面以STM32-L496ZG举例,
打开west.yml
只需要保留cmsis和hal_stm32即可,如下所示,可以参考当时的west.yml来修改:
manifest:defaults:remote: upstreamremotes:- name: upstreamurl-base: https://github.com/zephyrproject-rtos- name: babblesimurl-base: https://github.com/BabbleSimgroup-filter: [-babblesim]## Please add items below based on alphabetical orderprojects:- name: cmsisrevision: 74981bf893e8b10931464b9945e2143d99a3f0a3path: modules/hal/cmsisgroups:- hal- name: hal_stm32revision: 1bc72c299d0365c0ee2575a97918b22df0899e10path: modules/hal/stm32groups:- halself:path: zephyrwest-commands: scripts/west-commands.ymlimport: submanifests
执行 west update
这个时候执行一下west update
当然你也可以全部下载,其实没必要,可以先跑起来,后面仓库慢慢添加 ,我是觉得下载需要很长的时间。
到处模板
执行下面的命令到处cmake模板
west zephyr-export
pip安装依赖
Zephyr 的scripts/requirements.txt文件声明了额外的 Python 依赖项。安装它们pip。
pip install -r ~/zephyrproject/zephyr/scripts/requirements.txt
安装SDK
SDK 相当于toolchain
下载命令
cd ~
wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/zephyr-sdk-0.16.1_linux-x86_64.tar.xz
wget -O - https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.16.1/sha256.sum | shasum --check --ignore-missing
这个命令也要github.com , 这个可以自己在网页上下载。
解压
tar xvf zephyr-sdk-0.16.1_linux-x86_64.tar.xz
设置环境变量
cd zephyr-sdk-0.16.1
./setup.sh
编译
拿stm32-l496zg开发板举例:
参考链接:
https://docs.zephyrproject.org/latest/boards/arm/nucleo_l496zg/doc/index.html
编译一个hello_world程序
cd ~/zephyrproject/zephyr
west build -p always -b nucleo_l496zg samples/hello_world
这里的-p always ,在你想要切换另外的exapmle的时候,如果不加这个,编译不了,必须删除build目录才行。如果加了这个直接强制重新生成example。
烧入
west flash
烧入之后的调试,可以尝试用ozone 来学习,非常方便。
相关文章:
ZEPHYR 快速开发指南
简介 国内小伙伴在学习zephyr的时候,有以下几个痛点: 学习门槛过高github访问不畅,下载起来比较费劲。 这篇文章将我自己踩的坑介绍一下,顺便给大家优化一些地方,避免掉所有的坑。 首先用virtualbox 来安装一个ubu…...
【FPGA + 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源
【FPGA 串口】功能完备的串口测试模块,三种模式:自发自收、交叉收发、内源 VIO 控制单元 wire [1:0] mode;vio_uart UART_VIO (.clk(ad9361_l_clk), // input wire clk.probe_out0(mode) // output wire [1 : 0] probe_out0 );将 mod…...
初步了解预训练语言模型BERT
本文字数::4024字 预计阅读时间:12分钟 BERT是由Google提出的预训练语言模型,它基于transformer架构,被广泛应用于自然语言处理领域,是当前自然语言处理领域最流行的预训练模型之一。而了解BERT需要先了解注…...
Android Hook系统 Handler 消息实现
前言 主线程的Handler 主要依赖于 ActivityThread,Android是消息驱动,比如view的刷新,activity的创建等,如果能打印系统层Handler消息日志,就需要对于系统层的Handler 进行Hook 原理 ActivityThread中 mH对象主要负责…...
R语言从入门到精通之【R语言的使用】
系列文章目录 1.R语言从入门到精通之【R语言介绍】 2.R语言从入门到精通之【R语言下载与安装】 3.R语言从入门到精通之【R语言的使用】 文章目录 系列文章目录一、新手上路1.R语句构成2.获取帮助3.工作空间二、包1.包的安装2.实践应用总结一、新手上路 1.R语句构成 R语句由函…...
WPF实战学习笔记29-登录数据绑定,编写登录服务
添加登录绑定字段、命令、方法 修改对象:Mytodo.ViewModels.ViewModels using Mytodo.Service; using Prism.Commands; using Prism.Events; using Prism.Mvvm; using Prism.Services.Dialogs; using System; using System.CodeDom.Compiler; using System.Collec…...
c++函数式编程:统计文件字符串,文件流
头文件 #include <iostream> #include <fstream> #include <string> #include <sstream> #include <algorithm> #include <vector>统计方法 int count_lines(const std::string &filename) {std::ifstream in{filename};return std:…...
scp命令----跨服务器传输文件
scp命令 Linux scp 命令用于 Linux 之间复制文件和目录。 scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。 scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。 一、Linux scp 命令 以下是scp命令常用的…...
React Dva项目中模仿网络请求数据方法
我们都已经选择react了 那么自然是一个前后端分离的开发形式 至少我在公司中 大部分时候是前后端同时开发的 一般你在开发界面没有接口直接给你 但你可以和后端约定数据格式 然后在前端模拟数据 我们在自己的Dva项目中 在根目录下的 mock 目录下创建一个js文件 我这里叫 filmDa…...
【云原生】Docker容器命令监控+Prometheus监控平台
目录 1.常用命令监控 docker ps docker top docker stats 2.weave scope 1.下载 2.安装 3.访问查询即可 3.Prometheus监控平台 1.部署数据收集器cadvisor 2.部署Prometheus 3.部署可视化平台Gragana 4.进入后台控制台 1.常用命令监控 docker ps [rootlocalhost ~…...
DBA 职责及日常工作职责
DBA 职责及日常工作职责: 1.安装和升级数据库服务器,以及应用程序工具构建和配置网络环境. 2.熟悉数据库系统的存储结构预测未来的存储需求,制订数据库的存储方案. 3.根据开发人员设计的应用系统需求创建数据库存储结构. 4.根据开发人员设计的应用系统需求创建数据库对象 5…...
如何利用量化接口进行数据分析和计算?
量化交易作为一种利用数据和算法进行投资的方式,数据分析和计算是量化交易的核心。量化接口作为连接量化交易者和交易所的桥梁,提供了获取市场数据和执行交易指令的功能,为量化交易的数据分析和计算提供了基础。 一、数据获取: 市…...
electron-egg 加密报错
electron框架:electron-egg 解决方式 npm uninstall bytenode npm install bytenode1.3.6node:internal/modules/cjs/loader:928 throw err; ^ Error: Cannot find module ‘node:assert/strict’ Require stack: D:\electron-egg-test\new-electron-egg\electr…...
循环队列的基本操作(3种处理方式,2种实现方式)
为区分队空队满有3种处理方式: ①牺牲一个单元 ②增设表示元素个数的数据成员 ③增设tag数据成员 1.front->队头元素,rear->队尾元素下一位置 1.1牺牲一个单元 1.1.1定义 #define MaxSize 50 typedef struct {ElemType data[MaxSize];int fron…...
react的特点
React的特点包括以下几个方面: 组件化:React将用户界面分解成小而独立的组件,每个组件都有自己的状态和属性。通过组合这些组件,可以构建复杂而灵活的用户界面。 虚拟DOM:React使用虚拟DOM(Virtual DOM&am…...
MATLAB实现图像处理:图像识别、去雨、去雾、去噪、去模糊等等(附上20个完整仿真源码)
图像处理是计算机视觉领域的重要研究方向,MATLAB是一种功能强大的数学计算软件,可以用于图像处理和分析。下面是一些简单的MATLAB图像处理代码示例,包括图像增强、边缘检测、形态学处理、特征提取等。 文章目录 1. 图像增强2. 边缘检测3. 形态…...
cmake stm32 模板
文件结构 ├─.vscode ├─build ├─cmake ├─Drivers │ ├─CMSIS │ │ ├─Device │ │ │ └─ST │ │ │ └─STM32F1xx │ │ │ ├─Include │ │ │ └─Source │ │ │ └─Templates │ │ └─Include │ └─STM32F1xx_HAL_Driver │ ├─Inc │ │ └─Leg…...
STM32 UDS Bootloader开发-上位机篇-CANoe制作(2)
文章目录 前言CANoe增加NodeCAPL脚本获取GUI中的参数刷写过程诊断仪在线接收回调函数发送函数总结前言 在上一篇文章中,介绍了UDS Bootloadaer上位机软件基于CANoe的界面设计。本文继续介绍CAPL脚本的编写以实现刷写过程。 CANoe增加Node 在开始编写CAPL之前,需要在Simula…...
实例026 随机更换主界面背景
实例说明 如果开发的软件用户使用频率非常高,可以为程序设计随机更换背景的程序。这样不但可以使用户心情愉快,也增加了软件的人性化设计。下面的界面就是一个随机更换主界面的例子,效果如图1.26所示。 技术要点 随机更换主界面背景使用了…...
PostgreSQL 简洁、使用、正排索引与倒排索引、空间搜索、用户与角色
PostgreSQL使用 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。PostgreSQL 9.0 :支持64位windows系统,异步流数据复制、Hot Standby;生产环境主流的版本是PostgreSQL 12 BSD协议 与 GPL协议 …...
Kubernetes可观测性体系构建:全面监控与故障排查指南
Kubernetes可观测性体系构建:全面监控与故障排查指南 一、可观测性概述 可观测性(Observability) 是指通过系统产生的数据来理解系统内部状态的能力。在Kubernetes中,可观测性体系包含三个核心维度:指标(…...
一直怕大模型幻觉,发现针对性harness约束能大大消除
我让AI写长文,然后人工审核,发现大量胡编乱造。 如果人工一个个消除,实在太累了,这就不是LLM自动化办公的路子了 尝试了 harness (engineering)的实操路子, 试用发现: 大模型正在把长文中我人工审核发现的幻…...
对比按量计费与Token Plan套餐如何为项目选择更优成本模型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比按量计费与Token Plan套餐如何为项目选择更优成本模型 在将大模型能力集成到开发项目中时,成本控制是一个绕不开的…...
市场有效的透明化矿场安全防护系统
在矿场作业中,安全问题一直是重中之重。近年来,矿场事故时有发生,给生命和财产带来了巨大损失。据统计,过去十年间,全球矿场事故造成的直接经济损失高达数千亿美元,伤亡人数更是数以万计。因此,…...
【DeepSeek数据隐私保护终极指南】:20年安全专家亲授5大合规落地实践与3大避坑红线
更多请点击: https://codechina.net 第一章:DeepSeek数据隐私保护的核心理念与演进脉络 DeepSeek自诞生以来,将“数据主权归用户、模型能力不以隐私让渡为前提”确立为不可妥协的底层信条。其隐私保护理念并非静态规范,而是随技术…...
Windows平台安卓应用安装终极解决方案:APK Installer技术深度解析
Windows平台安卓应用安装终极解决方案:APK Installer技术深度解析 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否厌倦了笨重的安卓模拟器࿱…...
在Node.js后端服务中集成统一的大模型调用层
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 在Node.js后端服务中集成统一的大模型调用层 在构建现代Web应用时,为不同功能模块引入AI能力已成为提升用户体验和产品…...
ClamAV更新失败真相:DNS TXT查询机制深度解析
1. 这不是网络连通性问题,而是ClamAV更新机制被误读的典型症状“Can’t query current.cvd.clamav.net”这个报错,我在过去八年维护超过200台Linux服务器(从CentOS 6到Ubuntu 22.04,从物理机到容器化部署)的过程中&…...
Cursor Pro破解工具完整指南:5步实现机器标识重置与永久Pro功能解锁
Cursor Pro破解工具完整指南:5步实现机器标识重置与永久Pro功能解锁 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve rea…...
20岁写出Transformer的人,真开源了2180亿大模型
点击下方卡片,关注“CVer”公众号AI/CV重磅干货,第一时间送达点击进入—>【顶会/顶刊】投稿交流群添加微信号:CVer2233,小助手拉你进群!扫描下方二维码,加入CVer学术星球!可以获得最新顶会/顶…...
