Zephyr 源码调试

背景

调试环境对于学习源码非常重要,但嵌入式系统的调试环境搭建稍微有点复杂,需要的条件略多。本文章介绍如何在 Zephyr 提供的 qemu 上调试 Zephyr 源码,为后续分析 Zephyr OS 相关原理做铺垫。

环境

我的开发环境为 wsl ubuntu,对于 windows 也是同样的原理。基于 vscode 图形化界面有利于阅读源码,其基本原理是 vscode 通过 gdb 连接(tcp 通信) qemu 运行起来的 gdb server。

编译并运行 qemu

通过以下命令编译 qemu_cortex_m3 bsp

west build -b qemu_cortex_m3 samples/hello_world/ -d samples/hello_world/build

-b 指定目标 bsp
-d 指定编译文件生成的目录(cmake 生成的相关文件)

进入到 build 目录后,通过以下命令启动 qemu

ninja debugserver

vscode 环境搭建

创建 debug 配置文件 launch.json,如下图:

请添加图片描述

编辑 launch.json 文件,并修改部分配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "zephyr",
            "type": "cppdbg", // 需要安装 C/C++ 插件
            "request": "launch",
            "program": "/home/null/zephyrproject/zephyr/samples/hello_world/build/zephyr/zephyr.elf",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceRoot}",
            "externalConsole": true,
            "miDebuggerServerAddress": "localhost:1234", // 指定 gdb server 端口,默认端口为 1234
            "serverLaunchTimeout": 2000,
            "targetArchitecture": "ARM",
            "launchCompleteCommand": "exec-run",
            "MIMode": "gdb",
            "miDebuggerPath": "/home/null/zephyr-sdk-0.16.4/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

点击左侧小虫子,如下图:

请添加图片描述

最终调试窗口如下图:

请添加图片描述
这样就能调试整个 Zephyr 源码了,并且不需要真实的嵌入式环境,建议把优化等级调为 O0,Zephyr 默认优化等级为 Os

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值