姚工 · 2022年02月10日

【XR806开发板试用】试用SWD+Jlink调试

XR806开发板,只能使用编写代码,然后通过UART下载,没法在线debug, 效率会差很多,官方没有提供这一方面的资料。

  1. 先查CPU, 官方介绍是arm-china的MC1,通过armv8 Architecture refenence manual资料,读取CPUID。
    在MainThread()中读取CPUID,增加如下代码:
    static void MainThread(void *arg)
    {
    while (1) {

     printf("hello world!\n");
    

    printf("0xE000ED00 = 0x%x\n", (volatile uint32\_t )0xE000ED00);

     LOS_Msleep(1000);
    

    }
    }

编译,下载,然后可以看到如下输出:

Wifi Test Start
hiview init success.
console init success
hello world!
0xE000ED00 = 0x630f1321

根据CPUID(base address 0xE000ED00),因此可以看出 是ARMchina的 v8m-arch的star系列核。

根据XR806公开的原理图和XR806\_PIN\_MUX.pdf,可以看到PB02和PB03是可以配成SWD\_TMS, SWD\_TCK功能,因此在我们把pinmux配成SWD功能,
但这里存在一定的风险, 因为一旦配成SWD功能,PB02 也是串口功能,串口将不能下载, 我在执行swd——config前增加delay 30s后才配置pinmux功能,防止成板砖,参考代码如下:

static void swd\_config(void)
{

GPIO_InitParam param;

param.driving = GPIO_DRIVING_LEVEL_1;
param.mode    = GPIOB_P2_F9_SWD_TMS;
param.pull    = GPIO_PULL_NONE;
HAL_GPIO_Init(GPIO_PORT_B, 2, &param);    //PB2

param.mode    = GPIOB_P3_F9_SWD_TCK;
HAL_GPIO_Init(GPIO_PORT_B, 3, &param);     //PB3

}

static void MainThread(void *arg)
{

while (1) {
    printf("hello world!\n");
    printf("0xE000ED00 = 0x%x\n", *(volatile uint32_t *)0xE000ED00);
    LOS_Msleep(30000);
    swd_config();
}

}

编译下载, 连接Jlink如下图:
 title=
 title=

然后打开Jlink GDB server:如下图
 title=

其中Target device 选择star, Target interface选择SWD,然后OK确认。
进入如下界面: 说明等待连接
 title=

然后开始debug: /OpenHarmony# arm-none-eabi-gdb device/xradio/xr806/xr\_skylark/project/demo/wlan\_ble\_demo/gcc/wlan\_ble\_demo.elf

(gdb) target remote localhost:2331
Remote debugging using localhost:2331
0xdeadbeee in ?? ()

目前还不能使用Jlinkdebug, 通过串口终端的输出可以看出,还在一直打印log输出,说明SWD的功能还是没有配置正确

Wifi Test Start
hiview init success.
console init success
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321
hello world!
0xE000ED00 = 0x630f1321

如一切正常后,gdb server 如下所示,如果提示 Cannot read register xxx while CPU is running 说明还不正取
 title=

推荐阅读
关注数
13823
内容数
139
全志XR806开发板相关的知识介绍以及应用专栏。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息