当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

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

  1. 打开 PAN1080 Development Kit 文件夹,进入 01_SDK 子目录,可以看到一个名为 PAN1080 SDK CLI 的快捷方式:

image

ZDK 命令行方式入口快捷方式

  1. 双击 PAN1080 SDK CLI 快捷方式,打开命令行界面:

    image

    ZDK 命令行(CLI)界面

  2. 使用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执行重新编译操作;

    image

    ZDK 命令行(CLI)方式编译

  3. 使用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

    1. 烧录过程:

      image

      ZDK 命令行(CLI)方式烧录

    2. 程序执行:

      image

      程序运行成功

  4. 使用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进行调试;

    1. 启动 JLink GDB Server,并进入调试准备界面:

      image

      ZDK 命令行(CLI/GDB)方式调试准备

    2. 将 GDB Server 界面最小化(请勿关闭),并在命令行界面按回车键,进入调试命令等待界面:

      image

      ZDK 命令行(CLI/GDB)方式调试开始

    3. 输入GDB调试命令,开始调试:

      image

      ZDK 命令行(CLI/GDB)方式调试演示

    调试支持通用的GDB调试指令

    • monitor reset:复位目标设备并暂停程序执行

    • s:单步,Step In

    • n:单步,Step Over

    • b <func_name>:设置断点,Breakpoint

    • d break <index>:删除断点,Delete Breakpoint

    • c:继续执行,Continue

    • <Ctrl+C>:暂停执行,Halt

    • p <param_name>:打印变量值,Print

    • bt:查看调用堆栈,Backtrace

    更多的GDB命令行调试介绍请查阅:

    • GDB官方文档:https://sourceware.org/gdb/current/onlinedocs/gdb/

    • JLink GDB Server官方文档:https://www.segger.com/downloads/jlink/UM08001, Chapter 4

1.2 其他常用命令

  1. 某个曾经编译过的Sample(如 Synchronization Sample)代码有改动,对其执行增量编译:

    west build -d build/synchronization_pan108xxb5_evb
    

    :某些情况下,使用此方式可能无法自动识别到改动的文件;例如,若改动到了某个Kconig的默认配置(如某个Kconfg.defconfig文件),则执行增量编译是无法检测到此改动的,此时需要使用-p参数对目标做Rebuild

  2. 编译时,通过传入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过程中,会应用新指定的配置文件

  3. 编译时,通过传入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选项,则覆盖掉默认配置文件中的配置。

  4. 部分清理(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

  5. 完整清理(Pristine),同时删除Build PhaseConfiguration Phase下生成的文件:

    west build -d build/synchronization_pan108xxb5_evb -t pristine
    
  6. ROM报告(ROM Report),列出ROM空间占用信息:

    west build -d build/synchronization_pan108xxb5_evb -t rom_report
    

    执行结果:

    image

    生成 ROM Report

    :ROM Report中统计结果与编译后的Image Size并不等价,如果需要精确了解编译后的Image大小,请至Map文件(zephyr.map)中查看。

  7. RAM报告(RAM Report),列出RAM空间占用信息:

    west build -d build/synchronization_pan108xxb5_evb -t ram_report
    

    执行结果:

    image

    生成 RAM Report

  8. 打开 Menu Config 菜单:

    west build -d build/synchronization_pan108xxb5_evb -t menuconfig
    

    执行结果:

    image

    打开 Menu Config 菜单

  9. 打开 GUI Config 菜单:

    west build -d build/synchronization_pan108xxb5_evb -t guiconfig
    
    image

    打开 GUI Config 菜单

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 工程

    image

    打开 GUI Config 菜单

    打开 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 工程。