ZDK 开发环境介绍¶
PAN1080 ZDK 为开发者提供了 2 种开发环境:
命令行方式(Command Line)
图形化界面方式(Zephyr App Launcher + VS Code)
在 PAN1080 ZDK 实际开发过程中,经常需要将两种方式结合起来使用,下面对 2 种开发环境分别做简单的介绍。
1 命令行方式(Command Line)¶
PAN1080 ZDK 使用一个名为west
的命令行工具来执行编译、烧录、调试等操作。
west
是一个 “Meta Tool”,在执行west
支持的子命令过程中,不同的命令会调用不同的工具来执行具体的操作。例如:
执行
west build
子命令后,west
会自动调用 CMake、ninja、dtc、Kconfig、gcc 等工具进行配置和编译;执行
west flash
子命令后,west
会自动调用相关烧录工具(如JLink)进行烧录;执行
west debug/attach
子命令后,west
会自动调用相关调试工具(如JLink-GDB-Sever + ARM-Embedded-GDB)进行调试。
实际上,PAN1080 SDK 基于开源实时操作系统 Zephyr Project 扩展而来,其基础的命令行工具
west
也是Zephyr提供的;关于此工具的更多信息,可以参考zephyr官方文档:West (Zephyr’s meta-tool)。
1.1 使用演示:编译、烧录、调试一个Sample¶
打开 PAN1080 Development Kit 文件夹,进入 01_SDK 子目录,可以看到一个名为 PAN1080 SDK CLI 的快捷方式:
双击 PAN1080 SDK CLI 快捷方式,打开命令行界面:
使用
west build
命令,编译 Synchronization Sample:west build -d build/synchronization_pan108xxb5_evb -b pan108xxb5_evb ./zephyr/samples_panchip/basic/synchronization -p
参数解释:
build
:执行build子命令;-d build/synchronization_pan108xxb5_evb
:设置build输出文件目录为build/synchronization_pan108xxb5_evb,所有编译过程中生成的文件均存此目录中,目录名可以任意指定;另外,此参数可以省略,若省略则等价于-d build
;-b pan108xxb5_evb
:将board配置为 PAN108X-XB5 EVB,于是编译工具链会自动从zephyr/boards/arm/pan108xxb5_evb
目录下搜索需要的board配置文件;./zephyr/samples_panchip/basic/synchronization
:程序源码目录,此处为演示多线程同步的例程synchronization;-p
:重新编译(Rebuild);如果-d
参数指定的目录中存在之前编译的信息,则:若不指定
-p
参数,则west
执行默认的增量编译操作;若指定
-p
参数,则west
执行重新编译操作;
使用
west flash
命令,烧录 Synchronization Sample:west flash -d build/synchronization_pan108xxb5_evb -r jlink --reset-after-load
参数解释:
flash
:执行烧录子命令;-d build/synchronization_pan108xxb5_evb
:在目录build/synchronization_pan108xxb5_evb内查找待烧录文件;-r jlink
:将烧录工具指定为JLink,于是west将会调用JLink.exe
进行image烧录 ;--reset-after-load
:指定此参数后,目标板将会在烧录完成后自动Reset并执行烧录后的程序;
注:程序烧录执行前,请确认已经将 EVB 板的:
SWD(P46:SWD_CLK;P47:SWD_DAT)接口通过JLink连接至PC
UART(P00:Tx;P01:Rx;Baudrate:921600)接口通过USB转串口模块连接至PC
烧录过程:
程序执行:
使用
west attach
命令,调试 Synchronization Sample:west attach -d build/synchronization_pan108xxb5_evb -r jlink
参数解释:
attach
:执行调试子命令,直接调试当前程序(而不执行烧录 Image 操作);-d build/synchronization_pan108xxb5_evb
:在目录build/synchronization_pan108xxb5_evb内查找待调试文件;-r jlink
:将调试工具指定为JLink + GDB,于是west将会调用JLinkGDBServer.exe
+arm-none-eabi-gdb.exe
进行调试;
启动 JLink GDB Server,并进入调试准备界面:
将 GDB Server 界面最小化(请勿关闭),并在命令行界面按回车键,进入调试命令等待界面:
输入GDB调试命令,开始调试:
调试支持通用的GDB调试指令:
monitor reset
:复位目标设备并暂停程序执行s
:单步,Step Inn
:单步,Step Overb <func_name>
:设置断点,Breakpointd break <index>
:删除断点,Delete Breakpointc
:继续执行,Continue<Ctrl+C>
:暂停执行,Haltp <param_name>
:打印变量值,Printbt
:查看调用堆栈,Backtrace
更多的GDB命令行调试介绍请查阅:
GDB官方文档:https://sourceware.org/gdb/current/onlinedocs/gdb/
JLink GDB Server官方文档:https://www.segger.com/downloads/jlink/UM08001, Chapter 4
1.2 其他常用命令¶
某个曾经编译过的Sample(如 Synchronization Sample)代码有改动,对其执行增量编译:
west build -d build/synchronization_pan108xxb5_evb
注:某些情况下,使用此方式可能无法自动识别到改动的文件;例如,若改动到了某个Kconig的默认配置(如某个
Kconfg.defconfig
文件),则执行增量编译是无法检测到此改动的,此时需要使用-p
参数对目标做Rebuild。编译时,通过传入
CONF_FILE
参数,载入某个 Sample 的特殊配置:west build -d build/sample_xxx -b pan108xxb5_evb ./zephyr/samples_panchip/yyy -- -DCONF_FILE="prj_zzz.conf"
注:若不指定
CONF_FILE
参数,则west build
过程中,会应用默认的配置文件"prj.conf"
;若明确指定CONF_FILE
参数,则west build
过程中,会应用新指定的配置文件。编译时,通过传入
OVERLAY_CONFIG
参数,覆盖某个 Sample 的默认配置:west build -d build/sample_xxx -b pan108xxb5_evb ./zephyr/samples_panchip/yyy -- -DOVERLAY_CONFIG="overlay-zzz.conf"
注:若不指定
OVERLAY_CONFIG
参数,则west build
过程中,会应用默认的配置文件"prj.conf"
;若指定OVERLAY_CONFIG
参数,则west build
过程中,会先应用默认的配置文件"prj.conf"
,然后再应用指定的Overlay配置文件,如果Overlay配置文件中存在与默认配置文件中相同的Config选项,则覆盖掉默认配置文件中的配置。部分清理(Clean),删除Build Phase下生成的文件(如.obj/.elf/.hex等),但保留Configuration Phase下生成的文件(如.config文件等):
west build -d build/synchronization_pan108xxb5_evb -t clean
关于 Build Phase 与 Configuration Phase 的含义,请参阅Zephyr官方文档:Build Overview。
完整清理(Pristine),同时删除Build Phase与Configuration Phase下生成的文件:
west build -d build/synchronization_pan108xxb5_evb -t pristine
ROM报告(ROM Report),列出ROM空间占用信息:
west build -d build/synchronization_pan108xxb5_evb -t rom_report
执行结果:
注:ROM Report中统计结果与编译后的Image Size并不等价,如果需要精确了解编译后的Image大小,请至Map文件(zephyr.map)中查看。
RAM报告(RAM Report),列出RAM空间占用信息:
west build -d build/synchronization_pan108xxb5_evb -t ram_report
执行结果:
打开 Menu Config 菜单:
west build -d build/synchronization_pan108xxb5_evb -t menuconfig
执行结果:
打开 GUI Config 菜单:
west build -d build/synchronization_pan108xxb5_evb -t guiconfig
2 图形化界面方式(VS Code)¶
PAN1080 ZDK 使用 VS Code 作为图形化集成开发环境(IDE)。
VS Code 是一个轻量级的代码编辑器,其优秀的可扩展性使得 PAN1080 ZDK 有机会将 zephyr 的 west 命令行编译环境迁移到图形界面环境中来:
利用 VS Code 的构建任务特性,PAN1080 ZDK 将常用的
west
命令集成到 Build Tasks 中;利用 VS Code 的插件特性,PAN1080 ZDK 将
Cortex-Debug
插件集成进来并进行适配,使其可以调试 zephyr 编译生成的 Image;
PAN1080 ZDK 的编译工具链 Toolchain 目录下自带一个配置好的 VS Code,其有两种打开方式:
通过 ZAL 工具的
Open IDE
按钮打开,此方式可以在 VS Code 内编译各个 App 工程打开 VS Code 后的简单使用方法,请参考 ZDK 快速入门指南。
直接双击 VS Code 目录下的
code.exe
,此方式可以查看或修改代码,但无法正确编译各个 App 工程
注1:目前 PAN1080 ZDK 只支持使用 ZDK Toolchain 中自带的 VS Code 进行编译和调试;如果您的PC上有自己的 VS Code,是无法直接用于编译调试 PAN1080 ZDK 程序的。
注2:除了通过 ZAL 工具打开特定 Project 的 VS Code 界面外,还可以在 PAN1080 ZDK CLI 命令行界面中直接输入
code
直接打开 VS Code,然后通过File - Open Workspace from File
菜单打开某个 Project,用此方法打开的 App 工程,可以正常在 VS Code 界面中编译烧录 App 工程。