基于 ACOEGC_T3(PF) 搭建 JLink 调试环境

基于 ACOEGC_T3(PF) 搭建 JLink 调试环境

      本文主要介绍全志 T3 JLink 调试环境搭建,基于 ACOEGC_T3(PF) 硬件板卡,系统架构使用裸核 * 3 + SylixOS 的 AMP 模式。调试环境可通过 RealEvo-IDE 和 JLink V9 同时对 T3 的 4 个核进行调试。
一、搭建调试环境
1、安装 JLink 软件,这里安装的是 V645a;
2、修改安装目录下的 JLinkDevices.xml 文件,这里的路径为: D:\Program Files (x86)\SEGGER\JLink_V645a。在 DataBase 和 /DataBase 之间添加如下内容;
  1. <Device> <ChipInfo Vendor="Allwinner" Name="T3_CORE0" Core="JLINK_CORE_CORTEX_A7" JLinkScriptFile="Devices/ALLWIN/T3/Core0.JLinkScript"/> </Device> <Device> <ChipInfo Vendor="Allwinner" Name="T3_CORE1" Core="JLINK_CORE_CORTEX_A7" JLinkScriptFile="Devices/ALLWIN/T3/Core1.JLinkScript"/> </Device> <Device> <ChipInfo Vendor="Allwinner" Name="T3_CORE2" Core="JLINK_CORE_CORTEX_A7" JLinkScriptFile="Devices/ALLWIN/T3/Core2.JLinkScript"/> </Device> <Device> <ChipInfo Vendor="Allwinner" Name="T3_CORE3" Core="JLINK_CORE_CORTEX_A7" JLinkScriptFile="Devices/ALLWIN/T3/Core3.JLinkScript"/> </Device>
3、在 JLink 安装目录下创建目录:JLink_V645a\Devices\ALLWIN\T3,在目录中放入脚本文件 Core0.JLinkScript、Core1.JLinkScript、Core2.JLinkScript、Core3.JLinkScript(见附件);
4、将 JLink V9 调试器接入板卡调试口(这里使用 JTAG 接口,也支持 SWD 接口),如下图所示。
二、RealEvo-IDE 调试配置
1、将裸核与系统核的 Base 和 BSP 改为 Debug 模式,重新编译;
2、右键 core_bmt3 工程,点击 Debug As ---> Debug Configurations... 双击 GDB SEGGER J-Link Debugging 新建一个调试实例。配置 core0 调试参数,如下图:
3、使用同样的方式创建 core1 的调试实例,配置如下所示,注意 Device name 、端口号的变化:
4、使用同样的方式创建 core2 的调试实例,配置如下所示,注意 Device name 、端口号的变化:
5、右键 ampallwinnert3 工程,点击 Debug As ---> Debug Configurations... 双击 GDB SEGGER J-Link Debugging 新建一个调试实例。配置 core3 调试参数,如下图:
三、调试流程
1、系统上电后在裸核串口(UART0)上敲回车进入 u-boot 界面:
2、键入如下命令加载系统镜像:
  1. fatload mmc 2:2 0x40000000 ACO_EGC_T3PF_CORE0.bin;fatload mmc 2:2 0x50000000 ACO_EGC_T3PF_CORE1.bin;fatload mmc 2:2 0x58000000 ACO_EGC_T3PF_CORE2.bin;fatload mmc 2:2 0x60100000 ampallwinnert3_ACO_EGC_T3PF_bare_sys1.bin;
注意带 FPGA 版本这里还需要加入 FPGA 镜像加载命令:run loadfpga
3、在代码 core_bmt3/SylixOS/bsp/bspInit.c 中的函数 halWakeUpOtherCores() 内启动核 1/2/3 的位置上加上断点
打开调试配置界面,调试 core0
4、全速运行到第一个断点处,下一步执行启动 core1,执行后用同样的方法打开 core1 的调试界面并启动调试
成功启动后出现如下信息:
5、使用同样的方式启动 core2 和 core3,4 个核都启动后可以通过 Debug 窗口切换调试对象,从而实现 4 核同时调试。
四、其他
1、这里仅介绍 4 核同时调试的情况,实际使用中可根据需要调试指定核即可;
2、JLink 若采用 SWD 连接方式则调试接口配置也需要改为 SWD:

    • Related Articles

    • 汇编中使用串口打印调试方式

      问:如何在汇编中使用串口打印调试方式 BSP 调试中经常会遇到汇编中需要打印相关状态的情况,如下代码基于全志 T3(ARM Cortex A7)平台展示如何在汇编中打印一个字符的串口调试信息。类似的方式经过简单修改也可以移植到其他平台上。(注意:打印串口信息过程中会使用到 R0、R1 两个寄存器,注意相关寄存器的上下文关系) LDR R1, =0x01c2807C ; /* 读取串口状态寄存器 */ 1: LDR R0, [R1] MOV R0, R0, LSR#2 ; /* ...
    • SylixOS调试不支持数据断点

      Q:调试的时候 attach 到进程,立马死掉,或者调试的时候出现很多诡异现象。 解决方法: 先叫用户在 IDE 下面检查是断点设置情况,或者直接清空断点,然后再链接,看下调试功能是否就好了,如果好了,说明之前可能出现无意中触发设置数据断点的功能了。
    • RealEvo-IDE 使用串口调试 App

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。   硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: ...
    • 程序崩溃时该如何调试

      Q:程序崩溃时该如何调试 首先确定编译应用程序所选择的编译工具架构,和实际硬件架构是否一致。 可以使用 Crash Trap 调试, SylixOS 自 v1.9.9 内核版本后开始支持 crashtrap 命令,此命令可在程序崩溃时将进程切换到 STOP 模式,方便用户进入 Attach 调试。 更多扩展知识见: 使用方式详见《RealEvo-IDE 使用手册》第5章 RealEvo-IDE调试,5.8 Crash Trap调试 或者《SylixOS 开发禁(限)用说明》 ...
    • RealEvo-IDE 串口调试 app 补充说明

      需求 对于不支持以太网接口的设备,可以使用串口进行手动启动调试,基本流程参见《RealEvo-IDE使用手册》中 5.3 小节的内容。 为了用户能正常使用该功能,本文档将实际操作中的细节整理如下。 硬件设备 本次演示使用的硬件设备是翼辉信息的T3工业控制器IGC1500,串口设备信息如下: 1 个 RS232 Debug 接口: 设备名/dev/ttyS0,对应于接线端子 RS232-2,端口信号为 RX2,TX2,GND。 2 个 RS232 用户接口: 设备名/dev/ttyS5,对应于面板 ...