Edit online

调试 SDK

6 Jan 2025
Read time: 4 minute(s)

JTAG 调试的整个物理环境示意图如下,本地 PC 和调试 PC 可以是同一台 PC,也可以是局域网内不同的两台 PC:


IMG_256

执行调试流程之前,需要先准备 JTAG 调试的物理环境,包括:

  • 硬件:
    • 板子上有 JTAG 插座,或者飞线引出了 JTAG 信号线,可以连接到 JTAG 调试器。

    • JTAG 调试器:Luban-Lite 支持 CKLink 调试器 和 AIC JTAG 两种。


      IMG_256


      IMG_256

    • 保证板子和 JTAG 调试器的信号线正确连接,请参考调试器上的信号标识。

  • 软件:
    • 安装 T-HeadDebugServer:调试器在 PC 端的代理,提供 GDB Server 调试服务。

    • 安装 AiBurn:ArtInChip 烧录软件,需要用到其中的 USB 烧写驱动。

      注:
      调试前,确保 PC 已安装上述软件。由于安装过程涉及驱动安装,务必开启管理员权限。关于软件的安装包,可以在工具包中找到。所有资源均可在代码仓库中下载
  • 选择当前需要 JTAG 调试的场景。JTAG 调试包括以下两种场景:
    • 板子刚执行完 PSRAM/ DDR 的初始化,等待 JTAG 连接,Debug 配置选择执行: Dxx load
    • 板子上已经在运行一份镜像,中途用 JTAG 连接,Debug 配置选择执行: Dxx connect only
    Luban-Lite 的 VSCode 配置中已经默认提供了四种 JTAG 选择,选择的方法:
    SoC 型号 板子上无镜像 板子上已经在运行镜像
    D21x D21x load D21x connect only
    D12X/D12x D12X/D12x load D12X/D12x connect only

完成上述 JTAG 环境准备后,遵照以下流程调试 SDK:

  1. 根据 JTAG 调试的场景,在 VSCode 中选择合适的 Debug 配置方法,点击箭头小图标(快捷键 F5),界面操作如下:
    注:
    Debug 配置只需选择一次,VSCode 会记住上次的配置。

    IMG_256

  2. 运行 T-HeadDebugServer 并配置下列参数:
    注:
    T-HeadDebugServer 完成安装后,桌面会自动创建一个 T-HeadDebugServer 的图标。
    Setting 目录下选择 Target Setting
    • Debug Arch Select:必须选择 RISC-V DM
    • D1:需要选择 CSKY HAD


  3. 等待调试器正常连接且目标板上电后,点击红色小三角按钮,或者点击 Control > RunDebugServer,开始连接设备:



    正常情况下,执行上述步骤会看到扫描出 CPU 信息如下:



    注:
    • 通过 JTAG load elf 前,必须要先完成 PSRAM、或者 DDR 初始化,否则 JTAG 在写 PSRAM/ DDR 时会出现异常,使用 JTAG 口需要关闭 IIC、以及 Touch panel,操作命令如下:
      1. 运行 scons --menuconfig 命令。
      2. 执行下列命令关闭 I2C 和 Touch Panel。
        Board options  --->
            [] Using i2c3
        Drivers options  --->
            Peripheral  --->
                Touch Panel Support  --->
                    Gt911 touch panel options  --->
                        [] Using touch panel gt911
        
      3. 若使用 JTAG 口,另外需断开 CTP 触屏排线。


  4. 在 VSCode 中修改 Luban-Lite/.vscode/launch.json 文件的下列参数,与当前方案配置保持一致:
    • 路径名、elf 文件名

    • DebugServer 的服务 IP 和端口号,选择 Setting > Socket Setting

    • 断点

      如果要添加多个断点,方法如下:


      IMG_256

    以 Dxx load 为例,修改方法如下:



    Dxx connect only 需要修改的参数和上面类似,在 launch.json 文件中都用关键字 FIXME 标注。

  5. 打开 DebugServer,确保已经成功连接 JTAG 调试器。

    如果成功连接,则界面显示如下:



    如果连接成功,VSCode 会进入 Debug 界面,如下所示:


    IMG_256

  6. 按照实际需求,开始调试。

Eclipse

Luban-Lite 支持使用 Eclipse IDE 来进行调试,遵照以下步骤流程:
  1. 使用 Eclipse IDE 前,确保已经下载和安装 Eclipse IDE for Embedded C/C++ Developers

  2. 使用命令生成当前工程对应的 Eclipse 工程文件:

    一键生成工程文件之前,确保已经在命令行环境下正确配置并且能成功编译工程文件。如果工程配置有更新,则在命令行下编译成功后再次生成 eclipse 工程文件。根据实际项目需求,生成当前工程对应的工程文件,具体流程如下所示,下列文件类型二选一:

    • 生成 eclipse 工程文件:
      1. 进入 SDK 根目录:
        cd luban-lite
      2. 使用下列命令生成当前工程对应的 Eclipse 工程文件:
        scons --target=eclipse
      3. 将生成的 eclipse 工程文件存储到 luban-lite/output/xxxx/project_eclipse 目录中:
        ls -a output/d21x_demo100-nand_rt-thread_helloworld/project_eclipse
        ./  ../  .cproject  .project  .settings/
    • 生成 eclipse_sdk 工程文件:
      1. 进入 SDK 根目录:
        cd luban-lite
      2. 使用下列命令生成当前工程对应的 Eclipse SDK 工程
        scons --target=eclipse_sdk
      3. 将生成的 eclipse_sdk 工程文件存储到 luban-lite/output/xxxx/project_eclipse_sdk 目录中。

        该目录拷贝了所有必要文件,可以作为一份独立的 SDK 拷贝到任何路径下进行调试。

  3. 导入 Eclipse 工程:
    1. 打开下载的 Eclipse IDE for Embedded C/C++ Developers 文件。
    2. 在菜单栏中,选择 File > Import > Existing Projects into Workspace
    3. Import Projects 界面,分别选择导入工程所在路径和需要导入的工程文件。

      示例如下:


      eclipse_import_proj1

    4. 选择 Finish 完成导入。

  4. 编译
    1. Project Explorer 中选择和打开成功导入的工程。

    2. 选中所需工程,并点击鼠标右键。

    3. 在鼠标右键菜单中选择 Build Project,对整个工程进行编译。
      注:
      对于首次编译操作,需要选择 Clean Project 清理工程,避免出现环境的兼容性问题,

      eclipse_build_proj1

    4. 等待编译完成。

      编译生成的文件存放在 luban-lite/output/xxxx/project_eclipse/Debug 目录中,示例如下:
      ll output/d21x_demo100-nand_rt-thread_helloworld/project_eclipse/Debug/
      d21x.bin
      d21x.elf                           // 调试需要的 elf 文件
      d21x.map
      d21x_demo100_nand_page_2k_block_128k_v1.0.0.img    // 烧录需要的 img 文件
      
  5. Eclipse 在线调试。

    具体步骤如下:
    1. 安装 AiBurn 软件,使用 AiBurn 将 ddr_init_only.img 固件烧录到单板。烧录成功后,每次单板上电和复位后都会自动把 DDR 初始化好。

      • ddr_init_only.img: 仅仅初始化 DDR 的固件,方便直接加载工程的 elf 文件到内存当中。

      • AiBurn:烧录软件,把上述固件烧录到单板。

    2. 启动 T-HEADDebugServer,配置 GDB-Server 端口号。

      T-HeadDebugServer 是调试器在 PC 端的代理,以 GDB-Server 的形式提供调试服务。


      debug_server4

    3. Eclipse 中创建对应的 Debug Configuration。通过菜单 Run > Debug Configurations 给编译成功的工程新建一个对应的调试配置:

      eclipse_debug_config2

      经过上述配置以后,就可以方便的在 Eclipse 下进行在线调试了。