Getting Started Guide
设置Python虚拟环境
python3 -m venv ~/zephyrproject/.venv
source ~/zephyrproject/.venv/bin/activate
deactive
退出虚拟环境。
Remember to activate the virtual environment every time you start working.
Build the Blinky sample
cd ~/zephyrproject/zephyr
west build -p always -b <your_board_name> sample/basic/blinky
-p always
表示a pristine build,也可以使用-p auto
来自动判断是否需要pristine build.
Environment Variables
创建zephyr专属的环境变量,touch ~/.zephyrrc
, 加入export MY_VARIABLE=foo
。
接着进入zephyr repository,执行source zephyr-env.sh
source zephyr-env.sh
:
- set
ZEPHYR_BASE
为zephyr repository(内核目录). - 增加一些环境变量到系统
PATH
. - load
.zephyrrc
中的配置.
Application Development
app目录的结构通常为:
<app>
├── CMakeLists.txt
├── app.overlay
├── prj.conf
├── VERSION
└── src
└── main.c
CMakeLists.txt
: 编译APP的入口。app.overlay
: 设备树overlay。prj.conf
: Kconfig overlay。VERSION
: Version信息。src
: 源码目录。
Application types
根据app位置,分为三种类型: Zephyr repository application
zephyrproject/
├─── .west/
│ └─── config
└─── zephyr/
├── arch/
├── boards/
├── cmake/
├── samples/
│ ├── hello_world/
│ └── ...
├── tests/
└── ...
Zephyr workspace application
zephyrproject/
├─── .west/
│ └─── config
├─── zephyr/
├─── bootloader/
├─── modules/
├─── tools/
├─── <vendor/private-repositories>/
└─── applications/
└── app/
Zephyr freestanding application
<home>/
├─── zephyrproject/
│ ├─── .west/
│ │ └─── config
│ ├── zephyr/
│ ├── bootloader/
│ ├── modules/
│ └── ...
│
└─── app/
├── CMakeLists.txt
├── prj.conf
└── src/
└── main.c
Important Build System Variables
变量BOARD
CONF_FILE
DTC_OVERLAY_FILE
,有三种传入方法:
west build
或cmake
传入-D
,有多个overlay文件可以用分号隔开file1.overlay;file2_overlay
。- 环境变量
.zephyrrc
.bashrc
set (<VARIABLE> <VALUE>)
inCMakeLists.txt
ZEPHYR_BASE
: find_package(Zephyr)
会自动设置为一个Cmake variable。或者通过环境变量设置。BOARD
: 选择开发板。CONF_FILE
: Kconfig配置文件。没配置的话默认使用prj.conf
。EXTRA_CONF_FILE
: 覆盖的Kconfig配置文件。DTC_OVERLAY_FILE
:dts设备树文件,没配置的话默认使用app.overlay
。EXTRA_DTC_OVERLAY_FILE
SHIELD
:ZEPHYR_MODULES
:EXTRA_ZEPHYR_MODULES
:
Building an Application
west build -b <board> samples/hello_world
: 编译。west build -b <board>@<revision>
: 指定版本。west build -t clean
:build clean, .config
不会删除。west build -t pristine
: build目录下全部清空。west flash
: 将可执行文件烧进主板。每次执行west flash,app都会rebuild and flash again。west build -t run
: 当选择的board是qemu_x86/qemu_cortex_m3,可以直接在qemu中run。每次执行west run,app都会rebuild and run again。
Linux下run target will use the SDK’s QEMU binary by default.通过修改`QEMU_BIN_PATH`可以替换为自己下载的QEMU版本
Custom Board, Devicetree and SOC Definitions
有几种方法可以将board/
, soc/
dts/
放在application目录下:
1.Build的时候指定:
west build -b <board name> -- -DSOC_ROOT=<path to soc> -DBOARD_ROOT=<path to boards> -DDTS_ROOT=<path to dts>
2.在app下的module.yml
中指定:
build:
settings:
board_root: .
dts_root: .
soc_root: .
arch_root: .
module_ext_root: .
3.在app下CMakeList.txt
中指定:
list(APPEND SOC_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/<extra-soc-root>)
注意需要在find_package(Zephyr ...)
前。
Optimization
检查ram,rom使用空间:
west build -b reel_board samples/hello_world
west build -t ram_report
west build -t rom_report