Zephry_安装与移植到Stm32F746g_disoc

本文档详细介绍了在Ubuntu 20.04 LTS系统上安装和配置Zephyr RTOS SDK的步骤,包括更新系统仓库、安装依赖、构建环境、下载和安装SDK、配置环境变量、检查环境是否生效、创建工作目录、编译示例等。特别强调了Zephyr构建体系中west工具的作用和依赖包的功能。此外,还提供了自动化安装脚本的下载和使用说明,以简化安装过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

1. 更新apt仓库

2. 安装依赖

2.1 依赖作用

3. 构建体系

4. 主要依赖最低版本

5. 下载完所有依赖之后可以看下是否满足最小依赖

6. 使用pip3安装west

7. 配置环境

8. 生效配置

9. 检查环境是否生效

10. 创建工作目录

11. 安装zephyr

12. 进入到安装目录并更新

13. 导出cmake依赖

14. 下载python3依赖

15. 进入工作目录

16. 下载sdk包

17. 执行权限

18. 安装sdk

19. 将dev规则copy到udev目录下

20. 进入build目录

23. 编译示例

脚本安装方法

1. 下载脚本

2.安装前配置

3.安装说明

4. log文件

5.说明


前言

我的电脑环境:

系统型号
Ubnutu20.04 LTS
Zephry2.6.99
stm32f746g-dico

在开始之前建议大家电脑是开启VPN可以访问外网的,因为Zephyr脚本下载依赖时都是从外网上下载,如果没有VPN可能导致Time Out超时无法安装好依赖.

在开始之前需要确保当前ubnutu系统环境高于18.04 LTS

1. 更新apt仓库

这一步是将当前系统仓库包进行一次迭代更新,可以跳过.


sudo apt update
sudo apt upgrade

2. 安装依赖


sudo apt install --no-install-recommends -y git cmake ninja-build
sudo apt install --no-install-recommends -y gperf ccache dfu-util
sudo apt install --no-install-recommends -y device-tree-compiler wget python3-dev
sudo apt install --no-install-recommends -y python3-pip python3-setuptools python3-tk
sudo apt install --no-install-recommends -y python3-wheel xz-utils 
sudo apt install --no-install-recommends -y file make gcc 
sudo apt install --no-install-recommends -y gcc-multilib g++-multilib libsdl2-dev

2.1 依赖作用

包名作用
git从github上拉取zephyr源
cmake负责构建源文件编译规则
ninja-build

谷歌的构建工具,负责管理cmake

ccache存储编译器缓存,类似vs的编译缓存,用于提升编译速度
dfu-utilusb dfu(串口总线以及固件升级协议)实现程序, west flash一键下载就是用这个模块实现的
device-tree-compilerlinux下的设备树编译器,主要负责编译boards下的设备文件,让编译系统了解开发板信息
wget仅在安装时会用到,用于下载sdk包
python3-dev编译系统上的所有命令都是基于python脚本编写而成,如烧写到flash等,由python调用ninja在到cmake在到make
python3-pip用于下载python3的依赖
python3-setuptools用于管理依赖包
python3-tkpython3的gui包
python3-wheel用于打包生成wheel格式的安装包文件
xz-utils压缩sdk包,用于生成xz包
file获取文件属性
makemake编译脚本,用于构建项目体系
gccc语言编译器
gcc-multilib用于生成不同平台的c代码
g++-multilib用于生成不同平台的c++代码
libsdl2-dev跨平台的gui工具包

3. 构建体系

zephyrpoject的构建环境是由make,cmake、ninja、west组成

west是zephy自己开发的一个构建工具,统一管理构建环境,它会根据输入参数去调用不同的功能,是由python3实现的。

当我们调用west时会发生如下过程:

1.west解析参数并修改对用的cmake文件

2.获取用户app项目路径

3.创建build目录并在此目录下生成ninja规则文件

4.调用ninja构建工程

5.ninja调用cmake文件

6.cmake生成makefile规则文件后在调用make编译链接

west的命令功能都在sscripths/west_commands目录下,由python实现

4. 主要依赖最低版本

其实低1到2个版本到没事,给出的最低版本要求是作者在编译Zephyr时所用的环境,建议大家与作者同步

依赖名最低版本
CMake3.13.1
Python3.6
device-tree-compiler1.4.6

5. 下载完所有依赖之后可以看下是否满足最小依赖


➜  ~ cmake --version
cmake version 3.16.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).
➜  ~ python3 --version
Python 3.8.10
➜  ~ dtc --version
Version: DTC 1.5.0

6. 使用pip3安装west

west是Zephyr自己的构建元工具,实际上Zephyr是基于Cmake编写的,west会根据当前环境去调用cmake去编译,这样为我们省去了许多编译步骤.

--user参数是只安装到当前用户环境下,如果切换了用户则这个命令无效了

安装的目录在~/.local/bin目录下

-U参数是若当前已经有这个包了则对其进行升级


pip3 install --user -U west

7. 配置环境

将bin目录写到bashrc中,这样就可以直接调用west以及bin下的所有文件


echo 'export PATH=~/.local/bin:"$PATH"' >> ~/.bashrc

8. 生效配置

linux下的配置文件不是实时性的,我们需要手动让linux来重读一次配置


source ~/.bashrc

9. 检查环境是否生效

输入如下命令若输出版本则代表环境配置成功,若失败可以重启一下试试


➜  ~ west --version
West version: v0.11.0

10. 创建工作目录

这一步可以忽略,我创建这个目录的目的是为了将zephyr安装到这个目录下


mkdir ~/my_work

11. 安装zephyr

west会将zephyr安装到刚刚创建的my_work目录下的zephyrproject子目录中


west init ~/my_work/zephyrproject

12. 进入到安装目录并更新


cd ~/my_work/zephyrproject && west update

13. 导出cmake依赖

这样的话就可以使用cmake构建了


west zephyr-export

14. 下载python3依赖

这里-r是指定依赖文件

requirements.txt里列出了所有依赖,pip3会解析并全部下载


pip3 install --user -r ~/my_work/zephyrproject/zephyr/scripts/requirements.txt

15. 进入工作目录

注意这里不是zephyr工程目录


cd ~/my_work

16. 下载sdk包


wget https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.12.4/zephyr-sdk-0.12.4-x86_64-linux-setup.run

17. 执行权限

这里sdk包是以.run文件实现的,这里给.x权限就可以直接执行


chmod +x zephyr-sdk-0.12.4-x86_64-linux-setup.run

18. 安装sdk

这里若不指定目录则安装到/opt目录下,这里我指定到工作目录下,与zephyr工程同一目录


./zephyr-sdk-0.12.4-x86_64-linux-setup.run -- -d ~/my_work/zephyr-sdk-0.12.4

安装时会提示你确认安装,输入y并回车


Do you want to installing to /home/test/my_work/zephyr-sdk-0.12.4 (y/n)? 
y
Do you want to register Zephyr-sdk CMake module with path /home/test/my_work/zephyr-sdk-0.12.4 (y/n)?
y
Do you want to create/update /home/test/.zephyrrc with environment variables setup for you (y/n)?
y

以下是我的安装过程


➜  my_work ./zephyr-sdk-0.12.4-x86_64-linux-setup.run                                                                                                                                                              Verifying archive integrity...  100%   All good.                                                         
Uncompressing SDK for Zephyr  100%                         
Enter target directory for SDK (default: /home/test/zephyr-sdk/):                                                                                                                                                  
Installing SDK to /home/test/zephyr-sdk                                                                                                                                                                            Creating directory /home/test/zephyr-sdk                                                                 
Success                                                                                                               
 [*] Installing arm tools...                               
 [*] Installing arm64 tools...                                                                                                                                                                                      [*] Installing arc tools...                                                                                                                                                                                       
 [*] Installing nios2 tools...                                                                                        
 [*] Installing riscv64 tools...                                                                                                                                                                                    [*] Installing sparc tools...                                                                           
 [*] Installing mips tools...                                                                                                                                                                                       [*] Installing x86_64 tools...                                                                                                                                                                                    
 [*] Installing xtensa_sample_controller tools...                                                                
 [*] Installing xtensa_intel_apl_adsp tools...                                                                                                                                                                      [*] Installing xtensa_intel_s1000 tools...                                                                                                                                                                        
 [*] Installing xtensa_intel_bdw_adsp tools...                                                                   
 [*] Installing xtensa_intel_byt_adsp tools...                                                                                                                                                                      [*] Installing xtensa_nxp_imx_adsp tools...                                                                                                                                                                       
 [*] Installing xtensa_nxp_imx8m_adsp tools...                                                                        
 [*] Installing CMake files...                                                                              
 [*] Installing additional host tools...                                                                    
Success installing SDK.                               
SDK is ready to be used.                              
➜  my_work ls                                         
zephyrproject  zephyr-sdk-0.12.4-x86_64-linux-setup.run                                                     
➜  my_work ./zephyr-sdk-0.12.4-x86_64-linux-setup.run -- -d ~/my_work/zephyr-sdk-0.12.4                                                                                                                            Verifying archive integrity...  100%   All good.                                                         
Uncompressing SDK for Zephyr  100%                                                                          
                                                                                                            
It is recommended to install Zephyr SDK at one of the following locations for automatic discoverability in CMake:                                                                                                  
  /home/test/zephyr-sdk-0.12.4                                                                                                                                                                                       /home/test/bin/zephyr-sdk-0.12.4                                                                       
                                                                                                            
Note: The version number '-0.12.4' can be omitted.                                                          

Do you want to installing to /home/test/my_work/zephyr-sdk-0.12.4 (y/n)?                                                                                                                                           
y                                                   
md5sum is /usr/bin/md5sum                                                                                                                                                                                          Do you want to register Zephyr-sdk CMake module with path /home/test/my_work/zephyr-sdk-0.12.4 (y/n)?                                                                                                              
y                                                     
SDK is ready to be used.

19. 将dev规则copy到udev目录下

这一步是修改udev的命名规则

udev是设备管理器,当我们拔插usb或其它外设时由sysfs来注册class目录,然后再由udev去读取class目录下的配置文件注册到/dev目录下,同时注册到/dev时的一些文件规则,比如组,权限等就是到这个文件中去读取的,同时也会有匹配规则,在/dev目录下注册的文件会硬链接到class目录下


sudo cp ~/my_work/zephyr-sdk-0.12.4/sysroots/x86_64-pokysdk-linux/usr/share/openocd/contrib/60-openocd.rules /etc/udev/rules.d

配置生效


sudo udevadm control --reload

20. 进入build目录

这里是到zephyr的build目录下


cd ~/my_work/zephyrproject/zephyr

23. 编译示例

samples下有许多示例,这里我编译一个blinky,led闪烁的代码


west build -b <your-board-name> samples/basic/blinky

这里分享一下如何查一下自己的板号

当你拿到一个板时可以在zephyr的boards目录下查看是否支持,根据你板子的核以及型号去查


cd /home/test/my_work/zephyrproject/zephyr/boards

比如我的是stm32f746系列的,这里我通过开发板上的板名去查

我的核是arm的,所以进入到arm目录下去查


cd arm

使用find查一下


➜  arm git:(b1b977dacf) find . -iname "stm32f746*"
./stm32f746g_disco
./stm32f746g_disco/stm32f746g_disco.yaml
./stm32f746g_disco/doc/img/stm32f746g_disco.jpg
./stm32f746g_disco/stm32f746g_disco_defconfig
./stm32f746g_disco/stm32f746g_disco.dts

可以看到有一个stm32f746g_disco的目录,目录下有许多配置文件,这些文件类似Linux嵌入式下的设备树,有Linux嵌入式开发经验的人来一定不陌生,非必要情况我们一般不会去修改里面的文件,里面的文件就是描述GPIO等硬件信息,告诉zephyr这个型号的架构,主要修改dts文件,在这个文件中配置uart,clock等

板名可以在开发板上找到也可以在给的描述纸上找到

然后我们在回到build目录


cd ~/my_work/zephyrproject/zephyr

build一下


west build -b stm32f746g_disco samples/basic/blinky

build之后生成的.bin,hex,elf文件在当前目录的build目录下


➜  zephyr git:(b1b977dacf) ls build/zephyr
arch                 isrList.bin                 linker_zephyr_prebuilt.cmd.dep  zephyr.dts
boards               isr_tables.c                misc                            zephyr.elf
cmake                kconfig                     runners.yaml                    zephyr.hex
CMakeFiles           kernel                      soc                             zephyr.lst
cmake_install.cmake  lib                         stm32f746g_disco.dts_compiled   zephyr.map
dev_handles.c        libzephyr.a                 stm32f746g_disco.dts.pre.d      zephyr_prebuilt.elf
drivers              linker.cmd                  stm32f746g_disco.dts.pre.tmp    zephyr_prebuilt.map
edt.pickle           linker.cmd.dep              subsys                          zephyr.stat
include              linker_zephyr_prebuilt.cmd  zephyr.bin

你可以通过其它烧录程序烧录到开发板中

也可以使用west flash命令直接烧录,前提是需要有st-link

当开发板连接到PC后使用lsub查看一下有没有st-link确保下载线已经链接


➜  zephyr git:(b1b977dacf) lsusb
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 03f0:0024 HP, Inc KU-0316 Keyboard
Bus 001 Device 006: ID 0483:374b STMicroelectronics ST-LINK/V2.1
Bus 001 Device 004: ID 413c:301a Dell Computer Corp. Dell MS116 USB Optical Mouse
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

然后下载就可以了


west flash

若要重新编译则把build删除重新执行命令就可以了,同时如果想编译完成之后同时烧录到开发板可以使用-t flash即可

先删除build


rm -rf build

编译并下载到flash


west build -b stm32f746g_disco samples/basic/blink -t flash

执行完成之后就可以看到开发板上的LED灯在闪烁了


为了方便安装,我写了一个脚本,可以快速安装与配置

脚本安装方法

1. 下载脚本

将下面链接中的安装脚本下载到你的ubnutu系统上


https://download.youkuaiyun.com/download/bjbz_cxy/20722127


 注意事项:此脚本仅支持ubnutu 18.04 LTS版本以上

2.安装前配置

首先为这个文件加上执行权限


chmod +x ./install.sh

2.1 安装脚本依赖项


sudo apt install zsh
sudo apt install expect

使用zsh是因为更加灵活与强大且安全性更高

expect主要是实现脚本中自动交互的功能,实现完全自动化功能,一键执行脱离双手

因为脚本中使用了一些美化输出的shell代码,所以需要确保当前终端宽高大于140*140

可以使用如下命令查看:


stty size

若宽高不符合可以手动修改终端窗口大小,或者按下F11最大化窗口

3.安装说明

脚本参数如下


install [install path]


第二个参数是安装路径,若不指定则安装到脚本运行目录下


./install

指定安装:


./install /home/test/my_work

4. log文件

为了方便追踪错误,我编写了一个日志模块,为了美观我在终端界面中不会输出太多信息,所有的安装详细信息都会输出到脚本运行目录下的.log目录中,在脚本执行的同一时间会在该目录下生成对应时间的.log文件,若脚本执行失败可以在这个log中查找相关错误日志并追踪错误


cd .log

5.说明

脚本写法比较苛刻,在执行过程中会确认每一条指令以及配置的正确性,若有任意一条指令无法正确完成工作都会报错并终止安装,因为系统环境的原因我无法保证一个脚本可以在所有环境下顺利安装,若有问题请与我联系,我对它进行迭代适配,thank🍺

活动已结束! 活动说明:该板卡一元购活动仅限电路城四周年活动用户参,即获得电路城周年庆入场券后方可参一元购,直接购买的用户不会发货且不会退款。 周年庆入口:https://www.cirmall.com/four-years(可获得电路城周年庆入场券) 活动要求: 支付一元即可成功报名参开发板一元购活动,活动人数每达到199时,从所有报名参的用户中随机抽取一名用户获得开发板。如若人数未达到199人,所支付金额将原路返回支付宝账号。(活动人数以周年庆页面统计人数为准) 第一轮板卡一元购结果公布: 本轮抽奖所有名单以及视频可见附件!(获奖名单为随机产生) 参人数达398抽取第二块板卡! 第二轮板卡一元购结果公布: 一元购活动结束,敬请期待下次活动! 板卡介绍: STM32F746G-DISCO是一个发现套件,STM32F746NG微控制器,允许用户使用基于ARM:registered: Cortex:registered:-M7内核的STM32F7系列微控制器进行开发和分享应用。 此发现套件可进行多种应用开发,使用音频、多传感器支持、图形、安全、视频和高速连接等功能。 Arduino的连接支持提供无限的扩展能力,可选择多种专用附加电路板。 STM32F746NGH6微控制器, 1MB闪存存储器和340kB RAM, BGA216封装 板载ST-LINK/V2-1支持USB再枚举功能 USB功能 - 虚拟COM端口, 海量存储, 调试端口 4.3英寸480 x 272彩色液晶屏-TFT, 电容性触摸屏 照相机连接器 SAI音频编解码器 音频线路输入和线路输出插座 立体声扬声器输出 两个ST MEMS麦克风 SPDIF RCA输入连接器 两个按钮(用户和复位) 128Mb四路-SPI闪存存储器. 128Mb SDRAM (可接受64Mb) 连接器, 用于微型SD卡. RF-EEPROM子板连接器 USB OTG高速, 微型AB连接器 USB OTG快速, 微型AB连接器 以太网连接器, 符合IEEE-802.3-2002 【F769IDISCOVERY评测】汇总贴-不定期更新
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

17岁boy想当攻城狮

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值