SDK 开发环境介绍¶
PAN1080 SDK 为开发者提供了2种开发环境:
命令行方式(Command Line)
图形化界面方式(Zephyr App Launcher + VS Code)
打开PAN1080 Development Kit文件夹,进入01_SDK子目录,可以看到两种开发环境的快捷方式:
其中:
PAN1080 SDK CLI 为命令行方式的开发环境入口
PAN1080 SDK IDE 为图形化界面方式的开发环境入口
在PAN1080 SDK实际开发过程中,经常需要将两种方式结合起来使用,下面对2种开发环境分别做简单的介绍。
1 命令行方式(Command Line)¶
PAN1080 SDK 使用一个名为west
的命令行工具来执行编译、烧录、调试等操作。
west
是一个“Meta Tool”,在执行west
支持的子命令过程中,不同的命令会调用不同的工具来执行具体的操作。例如:
执行
west build
子命令后,west
会自动调用CMake、ninja、dtc、Kconfig、gcc等工具进行配置和编译;执行
west flash
子命令后,west
会自动调用相关烧录工具(如JLink)进行烧录;执行
west debug
子命令后,west
会自动调用相关调试工具(如JLink-GDB-Sever + ARM-Embedded-GDB)进行调试。
实际上,PAN1080 SDK 基于开源实时操作系统 Zephyr Project 扩展而来,其基础的命令行工具
west
也是Zephyr提供的;关于此工具的更多信息,可以参考zephyr官方文档:West (Zephyr’s meta-tool)。
1.1 使用演示:编译、烧录、调试一个Sample¶
双击 PAN1080 SDK CLI 快捷方式,打开命令行界面:
使用
west build
命令,编译 Synchronization Sample:west build -d build/synchronization_pan1080a_afld_evb -b pan1080a_afld_evb ./zephyr/samples_panchip/basic/synchronization -p
参数解释:
build
:执行build子命令;-d build/synchronization_pan1080a_afld_evb
:设置build输出文件目录为build/synchronization_pan1080a_afld_evb,所有编译过程中生成的文件均存此目录中,目录名可以任意指定;另外,此参数可以省略,若省略则等价于-d build
;-b pan1080a_afld_evb
:将board配置为PAN1080A-AFLD EVB,于是编译工具链会自动从zephyr/boards/arm/pan1080a_afld_evb
目录下搜索需要的board配置文件;./zephyr/samples_panchip/basic/synchronization
:程序源码目录,此处为演示多线程同步的例程synchronization;-p
:重新编译(Rebuild);如果-d
参数指定的目录中存在之前编译的信息,则:若不指定
-p
参数,则west
执行默认的增量编译操作;若指定
-p
参数,则west
执行重新编译操作;
使用
west flash
命令,烧录 Synchronization Sample:west flash -d build/synchronization_pan1080a_afld_evb -r jlink --reset-after-load
参数解释:
flash
:执行烧录子命令;-d build/synchronization_pan1080a_afld_evb
:在目录build/synchronization_pan1080a_afld_evb内查找待烧录文件;-r jlink
:将烧录工具指定为JLink,于是west将会调用JLink.exe
进行image烧录 ;--reset-after-load
:指定此参数后,目标板将会在烧录完成后自动Reset并执行烧录后的程序;
注:程序烧录执行前,请确认已经将PN108C测试板的:
SWD(P46:SWD_CLK;P47:SWD_DAT)接口通过JLink连接至PC
UART(P30:Tx;P31:Rx;Baudrate:921600)接口通过USB转串口模块连接至PC
烧录过程:
程序执行:
使用
west debug
命令,调试 Synchronization Sample:west debug -d build/synchronization_pan1080a_afld_evb -r jlink
参数解释:
debug
:执行调试子命令;-d build/synchronization_pan1080a_afld_evb
:在目录build/synchronization_pan1080a_afld_evb内查找待调试文件;-r jlink
:将调试工具指定为JLink + GDB,于是west将会调用JLinkGDBServer.exe
+arm-none-eabi-gdb.exe
进行调试;
启动 JLink GDB Server,并进入调试准备界面:
将 GDB Server 界面最小化(请勿关闭),并在命令行界面按回车键,进入调试命令等待界面:
输入GDB调试命令,开始调试:
调试支持通用的GDB调试指令:
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_pan1080a_afld_evb
注:某些情况下,使用此方式可能无法自动识别到改动的文件;例如,若改动到了某个Kconig的默认配置(如某个
Kconfg.defconfig
文件),则执行增量编译是无法检测到此改动的,此时需要使用-p
参数对目标做Rebuild。编译时,通过传入
CONF_FILE
参数,载入某个Sample(如 BLE Peripheral HeartRate Sample)的特殊配置:west build -d build/bluetooth_peripheral_hr_minimal_pan1080a_afld_evb -b pan1080a_afld_evb ./zephyr/samples_panchip/bluetooth/peripheral_hr -- -DCONF_FILE="prj_minimal.conf"
注:若不指定
CONF_FILE
参数,则west build
过程中,会应用默认的配置文件"prj.conf"
;若明确指定CONF_FILE
参数,则west build
过程中,会应用新指定的配置文件。编译时,通过传入
OVERLAY_CONFIG
参数,覆盖某个Sample(如 Multimode Mouse Sample)的默认配置:west build -d build/solutions_mouse_ble_usb_pan1080a_afld_evb -b pan1080a_afld_evb ./zephyr/samples_panchip/solutions/model_mouse -- -DOVERLAY_CONFIG="ble_usb_flow.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_pan1080a_afld_evb -t clean
关于 Build Phase 与 Configuration Phase 的含义,请参阅Zephyr官方文档:Build Overview。
完整清理(Pristine),同时删除Build Phase与Configuration Phase下生成的文件:
west build -d build/synchronization_pan1080a_afld_evb -t pristine
ROM报告(ROM Report),列出ROM空间占用信息:
west build -d build/synchronization_pan1080a_afld_evb -t rom_report
执行结果:
注:ROM Report中统计结果与编译后的Image Size并不等价,如果需要精确了解编译后的Image大小,请至Map文件(zephyr.map)中查看。
RAM报告(RAM Report),列出RAM空间占用信息:
west build -d build/synchronization_pan1080a_afld_evb -t ram_report
执行结果:
打开 Menu Config 菜单:
west build -d build/synchronization_pan1080a_afld_evb -t menuconfig
执行结果:
打开 GUI Config 菜单:
west build -d build/synchronization_pan1080a_afld_evb -t guiconfig
2 图形化界面方式(VS Code)¶
PAN1080 SDK 使用 VS Code 作为图形化集成开发环境(IDE)。
VS Code 是一个轻量级的代码编辑器,其优秀的可扩展性使得 PAN1080 SDK 有机会将 zephyr 的 west 命令行编译环境迁移到图形界面环境中来:
利用 VS Code 的构建任务特性,PAN1080 SDK 将常用的
west
命令集成到 Build Tasks 中;利用 VS Code 的插件特性,PAN1080 SDK 将
Cortex-Debug
插件集成进来并进行适配,使其可以调试 zephyr 编译生成的 Image;
2.1 使用 VS Code 打开 Sample 工程¶
先双击 PAN1080 SDK CLI 快捷方式,打开命令行界面,使用命令行方式编译一次例程(如编译Synchronization Sample):
west build -d build/synchronization_pan1080a_afld_evb -b pan1080a_afld_evb ./zephyr/samples_panchip/basic/synchronization
注:为使 VS Code 可以正确编译和调试 PAN1080 程序,在使用 VS Code 打开某个 App 或 Sample 工程前,必须先用命令行方式编译一次工程,使其生成 VS Code 工程文件
project.code-workspace
。再双击 PAN1080 SDK IDE 快捷方式,打开 VS Code 界面:
点击菜单栏
File
菜单,选择Open Workspace from File...
:在弹出的对话框中,进入第一步 build 后生成的目录路径(
01_SDK/build/synchronization_pan1080a_afld_evb),找到
project.code-workspace`文件,将其打开:选择
project.code-workspace
文件,点击Open
按钮,打开工程:成功打开工程后,请参照文档PAN1080 SDK 快速入门中 VS Code 使用的相关介绍,编译、烧录、调试程序。
2.2 其他说明¶
对于 PAN1080 SDK 中自带的例程来说,也可以通过执行
01_SDK/sdk_quick_build_samples
目录中例程脚本的方式,打开 VS Code,具体请参考文档PAN1080 SDK 快速入门中的相关步骤介绍。请注意,目前 PAN1080 SDK 只支持使用 SDK Toolchain 中自带的 VS Code 进行编译和调试;如果您的PC上有自己的 VS Code,是无法直接用于编译调试 PAN1080 SDK 程序的。