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

    文章

    1638

    浏览量

    148181
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1369

    浏览量

    114765
  • 断点
    +关注

    关注

    0

    文章

    12

    浏览量

    7717

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

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

收藏 人收藏

    评论

    相关推荐

    【敏矽微ME32G070开发板免费体验】使用JLINK的RTT功能实现类似串口printf打印功能

    . 什么情况下需要用到J-Link RTT打印输出调试信息?主要是当我目当前没有功能正常的串口,但引出了SWD烧录口,并且需要输出一些log进行调试验证等,这时我们可以通过SWD口,用Jlink工具读取
    发表于 12-15 20:30

    SEGGER为J-Link和Flasher提供Device Provisioner工具

    日前,SEGGER宣布为其Flasher系列编程器以及J-Link和J-Trace系列调试跟踪工具提供Device Provisioner工具。
    的头像 发表于 10-22 15:12 440次阅读

    网关断点续传可以实现什么功能

    在数字化时代,数据传输的效率和稳定性成为了衡量信息系统性能的重要指标之一。随着云计算、大数据、物联网等威廉希尔官方网站 的飞速发展,数据量的爆炸性增长对数据传输威廉希尔官方网站 提出了更高要求。在这样的背景下,网关断点续传功能
    的头像 发表于 10-16 13:53 242次阅读

    兆易创新和SEGGER探索MCU开发的无限可能

    2023年12月,兆易创新(GigaDevice)与业界著名工具链厂商德国SEGGER Microcontroller GmbH(以下简称“SEGGER”)向所有使用GD32V系列RISC-V
    的头像 发表于 08-22 09:51 1096次阅读

    SEGGER编译器优化和安全威廉希尔官方网站 介绍 支持最新C和C++语言

    SEGGER编译器是专门为ARM和RISC-V微控制器设计的优化C/C++编译器。它建立在强大的Clang前端上,支持最新的C和C++语言功能。 除其他外,其主要功能包括: 1) 尺寸优化:通过调整
    的头像 发表于 06-04 15:31 1490次阅读
    <b class='flag-5'>SEGGER</b>编译器优化和安全威廉希尔官方网站
介绍 支持最新C和C++语言

    AG32 下使用 Segger RTT

    SEGGER RTT: RTT 是一种调试手段。 它可以从 MCU 快速输出调试信息和数据,且不影响 MCU 的实时性。 在代码中对 printf 输出进行重定向后,就可以通过仿真器(jlink 或
    发表于 05-29 09:44

    瑞萨Smart Configurator支持SEGGER集成开发工具

    SEGGER与瑞萨电子(Renesas Electronics)近日宣布达成重要合作,SEGGER的集成开发工具Embedded Studio现已无缝融入瑞萨电子的Smart
    的头像 发表于 05-10 14:25 763次阅读

    STM32G031K8程序打断点在STARTUP.S文件中,停在断点处会导致操作flash错误怎么解决?

    特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方
    发表于 03-25 07:38

    FX3有办法让SDK1.3.5与JTAG调试器配合使用吗?

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

    XMC4108想通过中断断点逐步调试,但中断断点不起作用怎么解决?

    我正在使用DAVE™ EVAL_16W_66V_BCK_CE IDE,我在 XMC4108 控制器中遇到一个问题。 调试时,它不会触及中断的断点。 它是直接运行程序的,我想通过中断断点逐步调试
    发表于 03-05 08:16

    关于使用SEGGER JLink在CX3自定义主板上调试的疑问求解

    ;quot; 上设置断点,我就能看到调试器可以在 " cycx3AppDebuginit () " 也就是 " cycx3AppInit
    发表于 02-23 06:21

    雅特力AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,雅特力与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32MCU产品,SEGGER工具链的加持使AT32MCU开发如虎添翼。雅特力自2018年对外销售以来
    的头像 发表于 02-22 08:13 498次阅读
    雅特力AT32 MCU与<b class='flag-5'>SEGGER</b>携手合作,开发量产事半功倍

    DCS系统调试内容及方法

    在这一层次中,通过设置断点1、2,使DCS调试与辅助仪表盘仪表调试相对独立、互不干扰,从而便于实现对这两个工序的平行作业,并可避免因设备状态不正常或接线错误等原因造成设备的损坏。
    发表于 01-18 10:46 1901次阅读
    DCS系统<b class='flag-5'>调试</b>内容及方法

    在TC357TA MCU上使用ADS-Limited进行调试时,程序会在没有断点功能处中断怎么解决?

    在 TC357TA MCU 上使用 ADS-Limited 进行调试时,程序会在没有断点功能处中断。 而且,即使我一直点击 \" resume \",程序也会不断在同一个地方
    发表于 01-18 09:51

    SEGGER宣布推出新的Embedded Studio- V8.10

    SEGGER宣布推出新的Embedded Studio- V8.10。这款先进的多平台IDE现在通过单一设置支持多种架构。同一软件可用于为RISC-V和ARM目标处理器构建和调试应用程序。(以前需要安装ARM和RISC-V两个版本的IDE)。
    的头像 发表于 01-16 11:06 1502次阅读