嵌入式常用调试方法

news2024/12/26 9:22:18

目录

调试工具

日志打印

1. Debug日志打印

2. RTT日志打印

3. 串口日志打印

总结


嵌入式系统的调试是一个复杂且关键的过程,涉及多种工具和技术的综合应用。以下是对嵌入式常见调试工具、日志打印方式的全面报告,包括Debug、RTT(Real-Time Terminal)和串口日志打印。

调试工具

  1. Debug调试器
    • 功能:通过连接嵌入式设备和计算机,允许开发者单步执行代码、查看变量值、设置断点等,以识别和解决程序中的错误。
    • 示例:J-Link调试器,用于与嵌入式开发板建立调试连接,并通过RTT进行数据传输。
  2. SEGGER J-Link软件
    • 功能:用于设置和配置J-Link调试器的软件工具,提供图形化界面,简化调试过程。
  3. 网络调试工具
    • 功能:如网络调试助手和Wireshark,用于捕获和分析网络数据,帮助开发者诊断网络相关问题。
  4. 远程调试工具
    • 功能:如向日葵远程调试,允许开发者远程连接到客户的设备,进行实时调试和故障排除。

日志打印

1. Debug日志打印

  • 方式:通过Debug调试器,在开发环境中直接查看和打印程序执行过程中的调试信息。
  • 特点:实时性强,信息详细,但通常需要连接调试器才能查看。

2. RTT日志打印

  • 功能:RTT是一种轻量级的调试库,通过串口连接嵌入式设备和主机端,实现实时的日志输出和输入,使用JLink调试器, 可以通过RTT(Real-Time Transfer)方式输出log, 不增加引脚占用而且速度很快.。
  • 实现
    • 在项目中配置RTT功能,并添加RTT库的引用和初始化代码。
    • 在源代码中调用RTT的打印函数,将数据发送到主机端。
  • 特点:低资源占用,高效率,适合嵌入式系统调试。

        

  • 引用
    • 首先需要再项目工程引入RTT文件,其中SEGGER_RTT_printf.c和SEGGER_RTT.c
    • 日志打印
    • RTT可以有多个输入输出通道,最大通道数可以在Conf头文件里配置,其中channel0是默认通道。
    • 基本上SEGGER_RTT_printf()这条API就够用了, 比如以往通道0输出字符串:
  • 日志打印方式
  • 日志查看方式
    • JLink工具包里提供了3种客户端: RTTClient/RTTViewer/RTTLogger.
    • J-Link RTT Client客户端方式

                RTTClient最常用也很方便用, 它会不断地尝试连接到Debugger开放的19021端口, 比如开启JLinkGDBServer或者Keil的Debugger之后它就会自动连上去, 显示channel0的数据:

配置好GDB

                

窗口会自动连接,可以进行日志输出

  • RTTViewer

        RTTLogger就是个日志记录工具, 能单独连接到JLink, 把指定通道输出的数据输出到一个文件里

  • RTTLogger

RTTViewer只在windows下有, 它能直接连接Jlink或者像RTTClient一样加入到现有的会话(Session)中, 显示各个通道的数据.

3. 串口日志打印

  • 方式:通过UART串口将调试和日志信息输出到外部设备(如计算机、串口终端等)。
  • 实现
    • 在嵌入式设备上配置UART串口参数(如波特率、数据位、停止位等)。
    • 在源代码中使用标准库函数(如printf)或微库函数,将数据发送到UART串口。
  • 特点:简单易用,通用性强,但可能受到串口资源限制。

总结

嵌入式系统的调试和日志打印涉及多种工具和技术的综合应用。Debug调试器提供了强大的调试功能,但通常需要连接调试器才能查看信息;RTT日志打印具有低资源占用和高效率的特点,适合嵌入式系统调试;串口日志打印简单易用,通用性强,但可能受到串口资源限制。在实际应用中,开发者可以根据项目需求和硬件资源选择合适的调试工具和日志打印方式,码哥比较喜欢用RTT进行日常调试打印,无需占用太多资源,输出也方便,大家对RTT感兴趣的可,在公众号回复“RTT” 下载资源包

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1819335.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

植物大战僵尸杂交版2.1版本重磅发布!更新内容介绍讲解

植物大战僵尸杂交版2.1版,简直是游戏迷们的福音!这个版本不仅更新了大量的新植物和僵尸角色,还加入了更多的游戏模式和挑战关卡,让玩家们可以更加畅快地玩耍。 植物大战僵尸杂交版V2.1 :苹果安卓 PC防闪退工具修改工具高清工具通关…

ComfyUI 完全入门:Refiner精炼器

在 SDXL基础模型1.0版本发布时,Stability AI 公司同时发布了一个名为SDXL Refiner的模型。这个Refiner模型是专门设计用来对基础模型生成的图像进行进一步优化和细化的,所以大家也经常称之为精炼器或者精修器。 Refiner模型的主要目的是提升图像的质量&…

Linux进程间通信---使用【共享内存+信号量+消息队列】的组合来实现服务器进程与客户进程间的通信

IPC结合实现进程间通信实例 下面将使用【共享内存信号量消息队列】的组合来实现服务器进程与客户进程间的通信。 共享内存用来传递数据;信号量用来同步;消息队列用来 在客户端修改了共享内存后通知服务器读取。 server.c:服务端接收信息 …

【机器学习】新网络环境docker实战:AI智能体平台DIFY部署与升级

目录 一、引言 二、Dify在dockerhub被禁用后,如何部署、升级 2.1 网络及硬件条件 2.2 docker部署、升级方案 三、总结 一、引言 关于dify,之前力推过,大家可以跳转 AI智能体研发之路-工程篇(二):Dify…

Spring Boot整合hibernate-validator实现数据校验

文章目录 概念基本概念常用校验注解 前置内容整合Hibernate Validator快速入门优雅处理参数校验异常其余注解校验自定义校验注解 参考来源 概念 基本概念 Hibernate Validator 是一个参数校验框架,可以非常方便地帮助我们校验应用程序的入参,实现了参数…

App UI 风格展现非凡创意

App UI 风格展现非凡创意

基于 Python 解析 XML 文件并将数据存储到 MongoDB 数据库

1. 问题背景 在软件开发中,我们经常需要处理各种格式的数据。XML 是一种常用的数据交换格式,它可以存储和传输结构化数据。很多网站会提供 XML 格式的数据接口,以便其他系统可以方便地获取数据。 我们有这样一个需求:我们需要从…

Maven认识与学习

1. Maven介绍 1.2 初识Maven 1.2.1 什么是Maven Maven是Apache旗下的一个开源项目,是一款用于管理和构建java项目的工具。 官网:Maven – Welcome to Apache Maven Apache 软件基金会,成立于1999年7月,是目前世界上最大的最受…

13600KF+3060Ti,虚拟机安装macOS 14,2024年6月

距离上次装macOS虚拟机已经有一段时间了,macOS系统现在大版本升级的速度也是越来越快了,由于Office只支持最新三个版本的macOS,所以现在保底也得安装macOS 12了,我这次是用macOS 14做实验,13和12的安装方式和macOS 14一…

“人事助理转产品经理”历险记

​好久没写就业喜报了 去年太忙,年后了,必须给大家把同学们就业的情况梳理一下分享出来。希望对大家有所帮助。 同学档案 原岗位:HR 地点:西安 工作年限:2年 转岗级别:中级产品经理 转岗工资&#xff1…

【Android】Android系统性学习——Android系统架构

前言 部分内容参考《Android进阶解密》 – 刘望舒 1. Android版本 官方链接:https://developer.android.com/studio/releases/platforms 里面有各个版本的官方文档,有些新功能的用法在这里面。 现在做安卓11,有时候需要向下兼容 2. AOSP …

做了2年前端,盘点前端技术栈!大佬轻喷~

前言 自己写了快两年前端,但是大致总结一下哈哈哈哈我觉得这个话题蛮有意思的,可以看看大家的技术广度,可以进行分享和学习以及讨论所以这里说一下我对我的前端技术,做一下盘点和总结因为我的开发年限有限,所以我觉得…

CSS 字体颜色渐变

CSS 字体颜色渐变 css 代码: 注意:background: linear-gradient(属性),属性可以调整方向 例如:to bottom 上下结构,to right 左右结构font-family: DIN, DIN;font-weight: normal;font-size: 22px;color:…

openlayers 绘图功能,编辑多边形,select,snap组件的使用(六)

本篇介绍一下vue3-openlayers的select,snap的使用 1 需求 点击开始绘制按钮开始绘制多边形,可以连续绘制多个多边形点击撤销上步按钮,撤销上一步绘制点绘制多个多边形(或编辑多边形时),鼠标靠近之前的已绘…

Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件的RouterLink传参

Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件传参 Vue3【二十二】Vue 路由模式的嵌套路由和用query给组件传参 RouterLink 的两种传参方法 RouterView 案例截图 目录结构 代码 index.ts // 创建一个路由器,并暴漏出去// 第一步:引入createRou…

0613#111. 构造二阶行列式

时间限制&#xff1a;1.000S 空间限制&#xff1a;256MB 题目描述 小欧希望你构造一个二阶行列式&#xff0c;满足行列式中每个数均为不超过 20 的正整数&#xff0c;且行列式的值恰好等于x。你能帮帮她吗? 输入描述 一个正整数x。-1000 < x < 1000 输出描述 如果…

商家转账到零钱最全面攻略:申请、使用、注意事项等详解

一、微信商家转账到零钱功能概述 微信支付作为国内最大社交软件的增值服务&#xff0c;在商业活动中广泛使用。其开发的营销功能“商家转账到零钱”则允许商家直接将资金转入用户的微信钱包&#xff0c;操作简便快捷。本文将详细探讨此功能的使用条件、操作步骤以及解答一些常…

如何通过 6 种方法从 iPhone 恢复已删除的文件

想知道如何从 iPhone 恢复已删除的文件吗&#xff1f;本文将指导您如何从 iPhone 恢复数据&#xff0c;无论您是否有 iTunes/iCloud 备份。 iPhone 上已删除的文件去哪儿了&#xff1f; 许多 iPhone 用户抱怨他们经常丢失 iPhone 上的一些重要文件。由于意外删除、iOS 更新失败…

遇到JSON文件就头大?掌握Python这几种方法,让你轻松应对

目录 1、标准库json模块 📄 1.1 json.load()函数介绍 1.2 json.loads()处理字符串 1.3 使用json.dump()写入JSON 1.4 json.dumps()美化输出 1.4 错误处理与编码问题 1.5 高效读取大文件技巧 2、第三方库simplejson加持 🔧 2.1 安装与导入simplejson 2.2 性能优势与…

韩国版AlphaFold?深度学习模型AlphaPPIMd:用于蛋白质-蛋白质复合物构象集合探索

在生命的舞台上&#xff0c;蛋白质扮演着不可或缺的角色。它们是生物体中最为活跃的分子&#xff0c;参与细胞的构建、修复、能量转换、信号传递以及无数关键的生物学功能。同时&#xff0c;蛋白质的结构与其功能密切相关&#xff0c;而它们的功能又通过与蛋白质、多肽、核苷酸…