首页 > 其他分享 >Zephyr开发环境搭建记录

Zephyr开发环境搭建记录

时间:2023-05-21 15:12:16浏览次数:41  
标签:烧录 记录 Zephyr zephyr 编译 工具 安装 目录 搭建

以前总想着要自己造一个轮子,想着要做一个大融合的硬件抽象层以方便更换芯片。后来接触到zephr之后我就放弃了自己不成熟的想法,转而学习并使用zephyr系统平台。今记录下我自己在windows11上搭建zephyr软件开发环境的过程。有些别地方我自己也还没摸索清楚,但又怕时间长了忘记掉,就先记录了。

1、安装git

这对于软件开发者来说已经是常用工具了,去官网下载并按照提示一步步安装下去即可。

2、安装python

去python官网下载最新的python3版本,本地安装。待确认python安装成功以后,执行命令“pip install west”安装zephyr的官方工具。

3、下载源码

打开CMD窗口,进入到你期望的文件夹内,执行“west init .”命令初始化west工作目录。

接着执行“west update”开始下载zephyr源代码。你很可能无法下载成功,因为zephyr的很多子仓库都是github上取下来的,所以你只能一次次不断地执行“west update”命令来尝试拉取zephyr源代码,指导所有的仓库代码都成功克隆到本地为止。(别灰心别丧气,在不同的时刻不断的执行总是能够全部拉下来的)

源代码下载成功之后,在CMD环境下利用PIP尝试运行“pip  install -r zephyr\scripts\requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/” 安装依赖工具和包(请填写你对应的这个正确的地址,这里使用了清华源来加速下载)。下载之后会有这些目录:

D:\zephyrproject>dir /b .
.vscode
.west
bootloader
modules
tools
zephyr

 

4、其他工具

  • 安装 swig 工具。这个工具可以去官网寻找并下载安装,下载的是源代码并包含有一个预编译的可执行文件“swig.exe”,将这个文件放到某个地方并将路径导入你的系统环境变量即可。如果你喜欢深入研究,可以自己参照里面的readme文件进行本地编译和安装。
  • 安装设备树编译器。这个工具不好安装,官网只提供了源代码,如果你在windows上进行安装,还需要安装mingw这些编译链工具来执行编译。你可以执行“pip install git+git://git.kernel.org/pub/scm/utils/dtc/dtc.git@main”命令进行安装,不过基本都是失败的。我没有深入研究,这个没有影响到我的实际编译。尽管最后提示报错,但是我没有理它,编译也能通过。
  • 安装7zip工具。这是一个压缩和解压工具,非常好用,而且是免费的。直接去官网下载并安装。
  • 安装wget工具。使用过linux的人对这个工具应该是很熟悉的了,直接去官网下载并安装。
  • 安装SDK工具。这是安装编译工具链的,去官网下载windows版本的到本地,然后将其解压到某个目录下,最后执行一次里面的setup.cmd脚本,按照提示输入Y回车即可。

5、尝试编译

打开CMD窗口,进入到 zephyr\samples\basic\blinky 目录下,再去 zephyr\boards\arm 目录下拷贝任何一个文件夹的名字,然后在CMD中输入“west build -d build -b <你复制的文件夹名字>   .   -DCONF_FILE=./prj.conf -p”进行编译。

  • 这里的 “-d” 后面指明编译输出目录;
  • 这里的 “-b” 后面指明目标板的名称;
  • 参数 “-DCONF_FILE=./prj.conf” 表示指定工程配置文件;
  • 参数 “-p” 表示清理环境(可能是prune这个单词)。

执行之后你会看到CMD窗口开始编译输出了。最后你能看到一些这样的信息说明成功了:

[1/151] Generating include/generated/version.h
-- Zephyr version: 3.3.99 (D:/workspace/zephyrproject/zephyr), build: zephyr-v3.3.0-3914-gb0668cc586d9
[141/151] Linking C executable zephyr\zephyr_pre0.elf

[145/151] Linking C executable zephyr\zephyr_pre1.elf

[151/151] Linking C executable zephyr\zephyr.elf
Memory region         Used Size  Region Size  %age Used
           FLASH:       13726 B       256 KB      5.24%
             RAM:        4000 B        48 KB      8.14%
        IDT_LIST:          0 GB         2 KB      0.00%

编译周的hex文件就在 build\zephyr 目录下,默认叫做 zephyr.hex,同时还有 zephyr.bin,zephyr.elf,zephyr.dts 等文件生成。

如果你有自己的开发板,找一找 zephyr\boards\arm 目录下是否有你所用MCU对应型号的板子,一般厂家都会有的。如果你用的是不是arm的芯片,就去 zephyr\boards 目录下找其他CPU架构目录下的板子。比如你用的是ESP32的芯片,那你很可能需要去 zephyr\boards\xtensa 目录下找。

为什么要去这些目录下找呢?因为这些目录下的主板都是信息厂家提供的官方的开发板,里面的设备树都是芯片开发商帮你定义好了的,你一般也是基于芯片官方的参考设计进行的改动开发,所以你主要还是使用它们的设备树配置,最多就是自己建立一个 overlay 文件改动下引脚的定义、硬件功能的使能与禁用等。

如果你自己的板子有一颗LED灯,且它的IO定义与官方开发板下的定义不一致,那你只需要增加一个 “<你复制的文件夹名字>.overlay” 的文件,放在你的 blinky 目录下,然后重定义你的IO口就行了。比如我使用的是STM32F103的最小系统版本,上面的LED是PA2,与官方的不一致,我就自己新建了一个 stm32f103_mini.overlay 文件就,输入如下内容:

&green_led_1 {
    gpios = < &gpioa 0x2 0x1 >;
};

最后执行“west build -d build - b stm32f103_mini” 编译就行了。至于这个文件里面的其他内容怎么定义怎么写,就需要去设备树的官网学些标准文档了。

6、烧录验证

编译成功之后,插入J-link和目标板,在CMD下执行“ west flash -d build ”即可启动烧录,但是你可能会执行失败。我想应该是没有配置好相关的参数导致的。

如果你有J-link工具,可以使用J-Flash进行烧录,否则可能需要安装OpenOCD工具来烧录了。我使用的是一个ST-Link工具,之前在MDK上用的时候是没问题的,但是我尝试用J-Link工具烧录时提示我的工具是盗版的,没办法就只能安装一个OpenOCD工具(下载超慢)来配合烧录。

使用命令“ openocd -f interface/stlink-swd.cfg -f target/stm32f1x.cfg -c "init;halt;flash write_image erase D:/zephyr.hex;reset;shutdown;"  ” 执行烧录。

  • 参数 “ -f interface/stlink-swd.cfg -f target/stm32f1x.cfg ” 要根据使用的烧录器和目标板来输入,两个都不能少。他们都在 OpenOCD\share\openocd\scripts 目录下。
  • 参数 “ "init;halt;flash write_image erase D:/zephyr.hex;reset;shutdown;"  ”看名字其实很好理解,halt是停止芯片运行,reset是复位芯片,shutdown是退出OpenOCD。

这里我碰到的难题是 OpenOCD总是检测不到我的烧录器,我去网上找了半天,说可能是我的ST-Link驱动无法被OpenOCD识别到,根据网上的资料执行 OpenOCD\drivers\UsbDriverTool.exe 工具,总提示失败,无奈最后再从网上找到一个 zadig-2.8.exe 工具,先在电脑的设备管理器中删除了现有的J-Link设备和驱动,利用这个zadig工具重新安装驱动才算成功。

还有i一个关键的地方是,我的工具使用的是 SWD 烧录方式,需要修改 openocd 的配置文件,参考网上的提示,将 OpenOCD\share\openocd\scripts\interface\jlink.cfg 复制一份为 stlink-swd.cfg 并修改内容为:

adapter driver jlink
transport select swd

最后使用的时候,指明 “ -f   interface/stlink-swd.cfg ” 才算烧录成功。

 

做开发可能就是这样,总是会被第一步给难住。有恒心有毅力肯下功夫的人才能在这条路上越走越远,成就越来越高。

 

标签:烧录,记录,Zephyr,zephyr,编译,工具,安装,目录,搭建
From: https://www.cnblogs.com/ssdq/p/17418637.html

相关文章

  • mongodb慢查询记录
    在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是MongoDatabaseProfiler.不仅有,而且还有一些比MySQL的Slow QueryLog更详细的信息。它就是我们这篇文章的主题。开启Profiling功能有两种方式可以控制Profilin......
  • 基于pytorch搭建AlexNet神经网络用于花类识别
     ......
  • 新手建站:你阿里云服务器搭建网站图文教程
    使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,阿里云百科来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程:步骤一:云服务器配置选择如果你已经有了阿里云服务器,那么可......
  • 算法学习记录:P1387 最大正方形
    题目链接https://www.luogu.com.cn/problem/P1387解题思路固定左上角的点,枚举所有边长即可。随记:昨天脑子特乱,下标,越界什么的都没想好就开始写了,因为思路不清晰时写的,写出来的代码,调bug都不知道怎么调,对自己写的东西不够理解,在哪打印输出也不知道(循环一多自己就乱了),一个bug......
  • 通过团队协作,搭建WEB软件产品
    需求分析用例图现实设计图代码构件图代码信息流物理部署图后端代码编写表结构设计范式:列的原子性范氏:列要保持和主键强关联范氏:列之间没有关联dto路径约定业务entity类编写Model代表现实世界的抽象Schema使用了某种方式呈现ModelEntity代......
  • Python虚拟环境,多版本共存-windows安装【记录】
    使用virtualenv可以快速创建干净的环境,并且可以指定版本。安装virtualenvpipinstallvirtualenv创建虚拟环境virtualenv-pD:\Python\Python36\python.exevenv36D:\Python\Python36\python.exe可以选择已安装的python版本venv36创建的虚拟环境的目录进入虚拟环境......
  • 搭建python接口自动化框架
    1.最近一年接触Java接口自动化较多,倒是忘记了一些python,重拾记忆目录展示:(1)allure相关文件是集成到了插件,运行时,设置了路径之后自动创建的(2)business文件下则是业务处理脚本,可以创建app,小程序,web端的自动化脚本编写(3)common文件则是处理业务工具类,读取配置文件,excel......
  • 阿里云+微信小程序部署记录
    这两天公司买了阿里云服务器和数据库,然后又说重新部署一套小程序,磕磕绊绊总算成了。记录一下遇到的问题吧。防止下次遇到这些事情,不会就麻烦了。T_T首先是购买了服务器和数据库,emmm不算大,都是2核4G的。害,也没啥业务量,权且先用着吧。注意点:买的过程呢,遇到过那种秒杀款,还好还好,我......
  • 关于VM虚拟机Win7系统不能安装VM Tool的解决事件记录
    感谢CSDN的网友分享,根据其分享经验,我随即去弄,发现可以成功解决Win7系统在VM虚拟机不能安装VMTool的问题。 解决步骤: 1、先检查Win7系统是否为SP1及以上。  不是的话,要去下载Win7SP1系统。下载地址可以去下边这个,也可以自行去微软官网找Win7SP1下载,这两下载的都是......
  • Ubuntu桌面下Vue开发环境搭建
    Ubuntu桌面下Vue开发环境搭建node环境node安装node官网下载node安装包:node-v18.16.0-linux-x64.tar.xz#解压sudotar-xvJfnode-v18.16.0-linux-x64.tar.xz-C/usr/local/cd/usr/local/sudomvnode-v18.16.0-linux-x64/nodejs#配置环境变量cd/etc/profile.d/......