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_FILESHIELD: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