官方推荐环境搭建

使用chocolatey工具进行安装工具
具体详见官方文档

choco feature enable -n allowGlobalConfirmation
choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System'
choco install ninja gperf python git

由于chocolatey工具直接默认安装到C盘的用户目录下了,我非常不爽!!

直接根据官方要求自行安装工具

自行安装

1. cmake安装

进入cmake的官方下载页
发现其下载链接为github,由于我这边github的网速贼慢,直接使用github的镜像网站进行下载
镜像网站为:

https://hub.fastgit.org/

今天cmake最新的release版本为3.19.6
官网下载地址为:

https://github.com/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6.zip

直接改成镜像网站:

https://hub.fastgit.org/Kitware/CMake/releases/download/v3.19.6/cmake-3.19.6.zip

下载完成后进行解压,暂时先不设置环境变量用到再说。

2. ninja的安装

进入ninja的官网
发现其仍然是github托管的项目,直接到镜像网站找

https://hub.fastgit.org/ninja-build/ninja/releases/download/v1.10.2/ninja-win.zip

下载完成后进行解压,暂时先不设置环境变量用到再说。

3. gperf安装

官网地址:
http://www.gnu.org/software/gperf/

最新版软件地址:
 http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz

下载完成后进行解压,暂时先不设置环境变量用到再说。

这里应该下载错了。。。后面用到再修改

4. python和git

直接官网下载,安装教程网上一堆
我的电脑已经有了这两个环境
使用anaconda工具创建虚拟环境

5. pip安装west

在虚拟环境中直接安装west

pip install west

注意:
如果在base环境中安装,有可能会出错,有一个包升级出问题,直接从源文件中讲其删除后再次安装即可
最省事的就是重新创建虚拟环境

6. 使用west创建zephyr工作目录

直接使用west init命令创建由于会从github中拉取文件,慢出翔,而且还会下载失败–下载一夜的教训。

翻看west的官方手册发现可以直接指定url和版本

# 原官方命令和链接
west init -m https://github.com/zephyrproject-rtos/zephyr --mr v2.5.0 zephyrproject

# 修改镜像网站后的命令
west init -m https://hub.fastgit.org/zephyrproject-rtos/zephyr --mr v2.5.0 zephyrproject

7. west update

6步骤结束后,提示

=== Initialized. Now run "west update" inside E:\coding\c\test\zephyrproject.

根据提示运行west update.

采坑记录: 直接运行发现其仍然是从github中下载若干个工具,慢!!!

继续修改镜像

官方文档中介绍环境配置均在zephyr目录中的west.yml文件中。

# 打开west.yml文件
  remotes:
    - name: upstream
  # 这里修改为镜像网站  修改前
      url-base: https://github.com/zephyrproject-rtos
  # 修改后
  	  url-base: https://hub.fastgit.org/zephyrproject-rtos

保存后退出。

进入zephyrproject文件夹下,执行

west update

8. west zephyr-export

这里需要使用cmake,设置cmake的环境变量
然后在执行 west zephyr-export

9. 安装python包

需要修改路径, 这里的路径是zephyr/scripts/requirements.txt

# 这里可以添加-i参数使用国内源
pip3 install -r %HOMEPATH%\zephyrproject\zephyr\scripts\requirements.txt

10. 编译工具链的安装

https://developer.arm.com/tools-and-software/open-source-software/developer-tools/gnu-toolchain/gnu-rm/downloads

这里下载ARM-GNU工具链

下载zip格式的工具链,自行解压

11. 设置Zephyr的环境变量

官方文档中有3个方法进行设置,这里使用zephyrrc.cmd文件的方式进行设置
在zephyrproject目录下创建zephyrrc.cmd文件,在文件中设置

set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb
set GNUARMEMB_TOOLCHAIN_PATH=D:\download\zephyr-tools\gcc-arm-none-eabi-10-2020-q4-major
conda activate zephyr

12. 编译DEMO工程

这里编译stm32f429i_disc1板子的hello_world工程

west build -b stm32f429i_disc1 samples/hello_world

采坑记录:
注意:

  1. 最后一行为设置进入的python的虚拟环境命令
    中间设置编译器路径时,必须指定到根目录
  2. 当设置错误时修改正确后需要删除build目录后再次允行build指令

使用仿真器进行下载

官网上已经说明west工具支持

  1. SAM-BA
  2. J-Link
  3. OpenOCD
  4. pyOCD
    这里最熟悉的就是jlink,手头上的stm32f429i_disc1板子硬件为ST-LINK,好在从zephyr官网上找到了可以将板载STLINK刷成J-link固件,进行转换。

ST-LINK转J-Link

jlink官方文档介绍此转换步骤:
jlink官方文档

按照官方网站的说明成功将STLINK转换为JLINK

下载运行

在west build后生成的build目录的同级目录下,使用命令:

west flash --runner jlink

如果jlink是比较新的版本 在弹出的页面中选择M4内核即可。

E:\coding\c\test\zephyrproject\zephyr>west flash --runner jlink
-- west flash: rebuilding
[0/1] cmd.exe /C "cd /D E:\coding\c\test\zephyrproject\zep...ephyr-tools\cmake-3.19.6-win64-x64\bin\cmake.exe -E echo "

-- west flash: using runner jlink
-- runners.jlink: Flashing file: E:\coding\c\test\zephyrproject\zephyr\build\zephyr\zephyr.bin
SEGGER J-Link Commander V6.98c (Compiled Mar 16 2021 12:20:44)
DLL version V6.98c, compiled Mar 16 2021 12:19:26


J-Link Command File read successfully.
Processing script file...

J-Link connection not established yet but required for command.
Connecting to J-Link via USB...O.K.
Firmware: J-Link STLink V21 compiled Aug 12 2019 10:29:20
Hardware version: V1.00
S/N: 778194101
VTref=3.300V
Target connection not established yet but required for command.
Device "STM32F429ZI" selected.


Connecting to target via SWD
Found SW-DP with ID 0x4BA01477
Found SW-DP with ID 0x4BA01477
DPv0 detected
Scanning AP map to find all available APs
AP[1]: Stopped AP scan as end of AP map has been reached
AP[0]: AHB-AP (IDR: 0x24770011)
Iterating through AP map to find AHB-AP to use
AP[0]: Core found
AP[0]: AHB-AP ROM base: 0xE00FF000
CPUID register: 0x410FC241. Implementer code: 0x41 (ARM)
Found Cortex-M4 r0p1, Little endian.
FPUnit: 6 code (BP) slots and 2 literal slots
CoreSight components:
ROMTbl[0] @ E00FF000
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 000BB00C SCS-M7
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 003BB002 DWT
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 002BB003 FPB
ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 003BB001 ITM
ROMTbl[0][4]: E0040000, CID: B105900D, PID: 000BB9A1 TPIU
ROMTbl[0][5]: E0041000, CID: B105900D, PID: 000BB925 ETM
Cortex-M4 identified.
Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
Reset: Halt core after reset via DEMCR.VC_CORERESET.
Reset: Reset device via AIRCR.SYSRESETREQ.

Downloading file [E:\coding\c\test\zephyrproject\zephyr\build\zephyr\zephyr.bin]...
J-Link: Flash download: Bank 0 @ 0x08000000: 1 range affected (16384 bytes)
J-Link: Flash download: Total: 0.748s (Prepare: 0.067s, Compare: 0.072s, Erase: 0.344s, Program & Verify: 0.254s, Restore: 0.009s)
J-Link: Flash download: Program & Verify speed: 63 KB/s
O.K.


Writing DP register 1 = 0x00000000 (0 write repetitions needed)

Reading DP register 1 = 0x20000040 (0 read repetitions needed)


Script processing completed.

使用串口助手,复位开发板后,程序运行正常。环境搭建OK。

drawing
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐