0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Segger的无限Flash断点调试功能

strongerHuang 来源:麦克泰技术 作者:麦克泰技术 2022-05-07 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

嵌入式应用的开发过程中,虽然良好的编程实践和配合适当的编码规范检测软件能够减少代码编写阶段中出现的错误数量,但仍然不可避免的会出现一些只有在程序运行过程中才会触发的错误。为了解决程序运行过程中的问题,需要使用调试器,观察代码的执行及软件状态变化。

在程序调试的过程中,断点的重要性不言而喻。在调试状态下,当程序遇到断点时,会停止执行并将控制权交给调试软件,调试器可以显示当前应用程序的状态,包括变量和寄存器的值,内存、堆栈使用情况,显示应用程序到达断点位置的函数调用关系等,这些信息可以帮助开发人员分析程序的执行状况是否符合预期,并在问题出现时帮助确定错误原因。

常见的调试方法

(1)在RAM区域内调试

在开发过程中,可以将应用程序下载到RAM运行和调试,调试器只需使用简单的断点指令,且RAM允许多次读取和写入,RAM区域内的断点指令不会对程序执行产生明显的影响。但该方法的局限是MCU所拥有的RAM空间通常较小,应用较大时,无法在RAM进行调试。

(2)在Flash区域内调试

与RAM不同,Flash存储空间通常较大,当无法在RAM调试时只能在Flash区域内进行调试。微控制器设计人员提供了用于在Flash区域调试时使用的硬件断点,硬件断点会将PC指针与断点位置进行比较,并检查指令是否被调用,当断点处指令被调用时,程序将停止并启动调试器。硬件断点的数量由芯片所使用的内核决定,在ARM7和ARM9内核中仅包含2个硬件断点,在Cortex-M3和M4内核中包含4-6个可用的硬件断点。在调试过程中,当硬件断点数量用完时则无法添加新的断点,只能取消前面添加的断点后才能添加新的断点,这无疑将严重影响程序开发效率。

(3)外扩Flash存储芯片调试

当所开发的应用程序的复杂度进一步上升时,可能会使用到外扩的Flash存储,那么此时该如何进行应用程序调试呢?在大多数使用Cortex-M内核的微控制器中,芯片内部提供的硬件断点在调试过程中能够生效的地址范围是有限的,当使用外扩Flash时,自带的硬件断点将无法在外扩Flash存储的地址范围内生效,此时将无法在这些区域内设置断点来调试应用程序。

当使用基于地址映射扩展的外部Flash存储时,Segger J-Link产品所支持的无限Flash断点功能能够帮助我们对片外Flash添加断点并调试。

Segger无限Flash断点功能

J-Link支持一项名为“无限Flash断点”(Unlimited Flash Breakpoints)的调试功能。“无限Flash断点”允许用户在Flash中调试时设置无限数量的断点。如果没有此功能,在Flash中能够设置的断点数量限制为CPU调试单元支持的硬件断点数。

J-Link的“无限Flash断点”适用于片内和外扩的Flash,包括通过内存映射添加的QSPI闪存。

acb3e97e-cd9e-11ec-bce3-dac502259ad0.png

无限Flash断点的实现方式

Segger J-Link系列产品在实现无限Flash断点功能时,会使用硬件和软件断点的混合,来尽可能的减少对于Flash的影响。当硬件断点数量用完再添加新断点时,Segger软件将对断点所在位置的Flash区块进行重新编程来添加断点。

虽然Flash存在一定的写入次数限制,但Segger在实现该功能时已经做了大量针对性的优化来减少对于Flash的影响,例如处于同一区块内的多个断点,Segger将通过一次该Flash区块的重编编程来完成多个断点的添加。Segger仅在必要时才会对Flash区块进行重编程,部分操作将通过内置的指令集模拟器来完成,从而能够尽可能的减少对于Flash闪存的影响。

Segger的无限Flash断点调试功能解除了硬件断点对于程序调试的限制,能够提升开发人员的开发效率。对于Cortex-M内核芯片添加了外扩Flash的情形,无限Flash断点功能则可能是仅有的片外Flash调试解决方案。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FlaSh
    +关注

    关注

    10

    文章

    1715

    浏览量

    154701
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1398

    浏览量

    119822
  • 断点
    +关注

    关注

    0

    文章

    12

    浏览量

    8039

原文标题:如何使用J-Link无限Flash断点功能调试应用?

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    在FPGA设计中集成事件断点的实现过程

    如果对处于全速(at-speed)运行下的FPGA调试,工程师在现有通用“能力技术”基础上,再增加“硬件断点功能,那么对高速运行FPGA,也就拥有像调试软件程序类似的完整可观测能力(
    的头像 发表于 11-07 11:20 5029次阅读
    在FPGA设计中集成事件<b class='flag-5'>断点</b>的实现过程

    RVMCU课堂「2」: 手把手教你玩转RVSTAR—SEGGER Embedded Studio+蜂鸟调试器篇

    Embedded Studio是SEGGER公司推出的一款嵌入式开发的集成开发环境,具有开发与编译界面专业、调试功能强大(配备知名的J-Link仿真器)、非商业使用免费、跨平台兼容和配置灵活等特点。 在
    发表于 10-31 08:29

    RVMCU课堂「3」:手把手教你玩转RVSTAR—SEGGER Embedded Studio+JLink调试器篇

    Embedded Studio 和 JLink驱动的下载和安装 SEGGER Embedded Studio是SEGGER公司推出的一款嵌入式开发的集成开发环境,具有开发与编译界面专业、调试
    发表于 10-31 06:42

    基于蜂鸟E203的硬件断点功能添加

    我们为蜂鸟e203新添加了硬件断点功能。添加Trigger Module,并实现包括tselect,tdata1~7,tcontrol,tinfo在内的寄存器,在flash模式下可以在IDE中直
    发表于 10-23 07:11

    SEGGER Ozone调试器支持第三方调试工具

    SEGGER强大的Ozone调试器和性能分析器,长期以来一直深受J-Link和J-Trace用户的信任,现在可以支持第三方调试工具了。
    的头像 发表于 09-29 11:45 690次阅读

    AS32X601芯片Flash擦写调试技术解析

    本文聚焦于 国科安芯推出的AS32X601 芯片的 Flash 擦写调试工作,深入剖析其片内 Flash 存储器架构,详述 Flash 控制器功能
    的头像 发表于 07-22 13:47 517次阅读
    AS32X601芯片<b class='flag-5'>Flash</b>擦写<b class='flag-5'>调试</b>技术解析

    通过SEGGER JLINK调试CYUSB3014-BZXI遇到的问题求解

    最新版本)。 我按照《 EZ-USB™ Suite 用户指南》第 3 节“使用 Segger J-Link 进行调试”进行调试配置 然而我在调试过程中遇到了一些问题 1. 运行程序时,
    发表于 07-16 08:27

    SEGGER工具支持GigaDevice GD32C2系列微控制器

    J-Link和Flasher软件包从V8.46版本开始,SEGGER增加了基于Cortex-M23内核的GigaDevice GD32C2系列微控制器的调试Flash编程支持。
    的头像 发表于 07-09 16:12 701次阅读

    SEGGER J-Link调试器支持Allegro微控制器

    SEGGER领先的J-Link调试器现在可用于Allegro MicroSystems MCU的程序下载和在线调试。有了J-Link的支持,结合Ozone多平台调试器,以及Flashe
    的头像 发表于 06-10 09:29 896次阅读

    边缘计算网关支持断点续传吗

    边缘计算网关通常支持断点续传功能断点续传功能是边缘计算网关的重要特性之一,它能够在网络中断或设备故障时,将采集到的数据暂存在本地存储空间中,待网络恢复后再将数据上传至云平台,从而保证数据的完整性
    的头像 发表于 05-27 15:25 537次阅读

    有办法让SDK 1.3.5与JTAG调试器配合使用吗?

    使用 Segger J- 6EDL_SPI_LINK GDB 服务器的调试配置。 我看到控制台中打印了多个错误,如下所示: 827^error,msg=\"Dwarf Error:无法找到从
    发表于 05-23 07:32

    SEGGER emFile支持大型数据库

    SEGGER宣布emFile对大型数据库的支持,集成了SQLite,方便与SEGGER的BigFAT和微软的exFAT一起使用。
    的头像 发表于 04-23 15:51 557次阅读

    Segger RTT调试工具的使用方法

    上一期已经跟着小编介绍的安装步骤,相信大家都已经开始使用了Segger Ozone调试工具。那么今天小编继续趁热打铁,给大家介绍另一个Segger推出的调试辅助工具
    的头像 发表于 03-28 14:21 2686次阅读
    <b class='flag-5'>Segger</b> RTT<b class='flag-5'>调试</b>工具的使用方法

    基于SEGGER的Ozone调试器和J-Trace工具跟踪Ferrocene的Rust应用

    2025年3月,SEGGER和Ferrous Systems合作,确保使用Ferrous Systems的Ferrocene工具链编译的Rust应用程序可以通过SEGGER的J-Trace工具实时下载分析。
    的头像 发表于 03-14 11:27 1264次阅读

    HarmonyOS NEXT 原生应用/元服务-ArkTS代码调试使用断点

    断点,此类断点仅会在满足特定条件时才会暂停应用。 点击Debug图标 ,开始调试。如果您的应用已经在运行,请点击Attach Debugger to Process图标 。 当应用运行到代码处,会在代码
    发表于 03-04 17:15