【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如下图:
在这里插入图片描述
在这里插入图片描述

然后打开Jlink GDB server:如下图
在这里插入图片描述

其中Target device 选择star, Target interface选择SWD,然后OK确认。
进入如下界面: 说明等待连接
在这里插入图片描述

然后开始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 说明还不正取
在这里插入图片描述

相关推荐

  1. XR806开发试用xr806 RTC实验

    2024-05-12 14:26:03       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-12 14:26:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-12 14:26:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-12 14:26:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-12 14:26:03       20 阅读

热门阅读

  1. IDEA 插件,提高开发效率

    2024-05-12 14:26:03       6 阅读
  2. linux三剑客

    2024-05-12 14:26:03       8 阅读
  3. Qt窗口及QWidget类详解

    2024-05-12 14:26:03       8 阅读
  4. 蓝桥杯备战10.分巧克力

    2024-05-12 14:26:03       11 阅读
  5. 【C++语言】模板

    2024-05-12 14:26:03       9 阅读
  6. 爬虫工具you-get

    2024-05-12 14:26:03       10 阅读
  7. Leetcode 572:另一颗树的子树

    2024-05-12 14:26:03       7 阅读
  8. 【力扣】70.爬楼梯

    2024-05-12 14:26:03       7 阅读
  9. 程序员副业录制课程

    2024-05-12 14:26:03       8 阅读
  10. 指针(3)

    2024-05-12 14:26:03       9 阅读
  11. leetcode 2316.统计无向图中无法互相到达点对数

    2024-05-12 14:26:03       9 阅读