【 问题 】 debug 时 J-Link 寄存器全部读取失败 如 JLink Error: Can not read register 15 (R15) while CPU is running

cortex-M4 SWD调试笔记 从这个表可以看到 Cortex -M4 的内核存在SCS里面,关于PC指针和内部通用寄存器应该都在这里面,如下表对于SCB的解释就是处理器的R0 -R14寄存器图1 SWD各个模块之间的关系第一部分:上位机和调试器( 如ARM V9 仿真器 )上位机负责主动发起调试,通过USB与调试器交互调试器负责将调试信息编码输出给芯片,或将读取到的芯片信息上报给上位机第二部分:由芯片内部有两个物理单元组成,DP和AHB-AP(总称 DAP):DP负责AHB-AP与上位机连接和通讯解析。 阅读详情
AI摘要

本文解决J-Link调试时遇到的寄存器读取失败问题,如JLinkError:Cannotreadregister15(R15),原因是禁用了JTAG而启用了SW-DP,通过移除特定代码行即可解决。

现象

***JLink Error: Could not start CPU core. (ErrorCode: -1)
**JLink Warning: CPU could not be halted
***JLink Error: Can not read register 15 (R15) while CPU is running
***JLink Error: Can not read register 16 (XPSR) while CPU is running
***JLink Error: Can not read register 0 (R0) while CPU is running
***JLink Error: Can not read register 1 (R1) while CPU is running
***JLink Error: Can not read register 2 (R2) while CPU is running
***JLink Error: Can not read register 3 (R3) while CPU is running
***JLink Error: Can not read register 4 (R4) while CPU is running
***JLink Error: Can not read register 5 (R5) while CPU is running
***JLink Error: Can not read register 6 (R6) while CPU is running
***JLink Error: Can not read register 7 (R7) while CPU is running
***JLink Error: Can not read register 8 (R8) while CPU is running
***JLink Error: Can not read register 9 (R9) while CPU is running
***JLink Error: Can not read register 10 (R10) while CPU is running
***JLink Error: Can not read register 11 (R11) while CPU is running
***JLink Error: Can not read register 12 (R12) while CPU is running
***JLink Error: Can not read register 13 (R13) while CPU is running
***JLink Error: Can not read register 14 (R14) while CPU is running
***JLink Error: Can not read register 15 (R15) while CPU is running
***JLink Error: Can not read register 16 (XPSR) while CPU is running
***JLink Error: Can not read register 17 (MSP) while CPU is running
***JLink Error: Can not read register 18 (PSP) while CPU is running
***JLink Error: Can not read register 20 (CFBP) while CPU is running
***JLink Error: Can not read register 32 (FPSCR) while CPU is running
***JLink Error: Can not read register 33 (FPS0) while CPU is running
***JLink Error: Can not read register 34 (FPS1) while CPU is running
***JLink Error: Can not read register 35 (FPS2) while CPU is running
***JLink Error: Can not read register 36 (FPS3) while CPU is running
***JLink Error: Can not read register 37 (FPS4) while CPU is running
***JLink Error: Can not read register 38 (FPS5) while CPU is running
***JLink Error: Can not read register 39 (FPS6) while CPU is running
***JLink Error: Can not read register 40 (FPS7) while CPU is running
***JLink Error: Can not read register 41 (FPS8) while CPU is running
***JLink Error: Can not read register 42 (FPS9) while CPU is running
***JLink Error: Can not read register 43 (FPS10) while CPU is running
***JLink Error: Can not read register 44 (FPS11) while CPU is running
***JLink Error: Can not read register 45 (FPS12) while CPU is running
***JLink Error: Can not read register 46 (FPS13) while CPU is running
***JLink Error: Can not read register 47 (FPS14) while CPU is running
***JLink Error: Can not read register 48 (FPS15) while CPU is running
***JLink Error: Can not read register 49 (FPS16) while CPU is running
***JLink Error: Can not read register 50 (FPS17) while CPU is running
***JLink Error: Can not read register 51 (FPS18) while CPU is running
***JLink Error: Can not read register 52 (FPS19) while CPU is running
***JLink Error: Can not read register 53 (FPS20) while CPU is running
***JLink Error: Can not read register 64 (FPS31) while CPU is running
***JLink Error: Can not read register 40 (FPS7) while CPU is running
***JLink Error: Can not read register 41 (FPS8) while CPU is running
***JLink Error: Can not read register 42 (FPS9) while CPU is running
***JLink Error: Can not read register 43 (FPS10) while CPU is running
***JLink Error: Can not read register 44 (FPS11) while CPU is running
***JLink Error: Can not read register 45 (FPS12) while CPU is running
***JLink Error: Can not read register 46 (FPS13) while CPU is running
***JLink Error: Can not read register 47 (FPS14) while CPU is running
***JLink Error: Can not read register 48 (FPS15) while CPU is running
***JLink Error: Can not read register 49 (FPS16) while CPU is running

解决

程序中出现代码:

// NOJTAG: JTAG-DP Disabled and SW-DP Enable
__HAL_AFIO_REMAP_SWJ_NOJTAG();

删除即可

原因

jlink被禁用了,这句代码一般是引脚资源不足时,才使用的。

相关博客

[J-Link] 不同引脚初始化导致大量错误JLink Error: Can not read register 15 (R15) while C

JLINK 调试报错 JLink Error: Can not read register 解决办法

STM32 HAL库如何启用PB3-5与PA13-15

STM32用SW下载提示T-bit of XPSR is 0 but should be 1. Changed to 1/Could not start CPU core.(ErrorCode:-1) 最近使用SW模式对STM32L431下载程序时,出现以下三种情况的报错: ①: ***JLink Error: Could not start CPU core. (ErrorCode: -1) ***JLink Error: Can not read register 15 (R15) while CPU is running **JLink Warning: CPU could not be halted ***JLink Error: Could not read memory location 0x 阅读详情

相关推荐

STM32调试中error 122与HardFault的系统性排查与解决

在嵌入式系统开发中,内存管理是确保程序稳定运行的核心基础。其原理涉及编译器、链接器根据芯片的物理内存地址空间,将代码、数据及运行时结构(如堆栈)分配到正确位置。当软件配置的内存映射与硬件实际资源不匹配时,极易引发总线错误等严重故障,导致程序崩溃。这在工程实践中的技术价值在于,通过精确控制内存布局,可以避免资源冲突、提升系统可靠性,尤其是在资源受限的微控制器应用中。此类问题常见于使用Keil MDK、J-Link调试STM32等ARM Cortex-M系列芯片的场景,具体表现为调试时出现“memory rea

weixin_30516243的博客 299

JLink Error: Cannot read register 15 (R15) while CPU is running 解决方案

改变程序Debug速度没用,从5M,改为1M,改为500k,200k,50k都没用,反而开始报别的错了。更新Jlink驱动为最新版本驱动,Jlink_Windows_V767d_i386。将Reset选项改为Normal和Core and Peripheral没用。但是SWD模式不能下载程序不能Debug,keil5 Jlink调试报错。Debug选项可以连接到芯片,

lixiaohuanhuan的博客 7919

ARDEP开源车载开发平台:Zephyr车规级BSP与CAN FD实时通信实践

车载嵌入式系统正从传统AUTOSAR向轻量实时操作系统演进,Zephyr RTOS凭借极简内核、模块化驱动和多核支持,成为车规级开发新选择。其核心价值在于平衡实时性、安全性和开发效率,适用于ADAS域控制器、ECU功能验证及TSN时间敏感网络等场景。ARDEP项目作为梅赛德斯-奔驰官方开源的i.MX93平台,提供了完整的Zephyr车规增强BSP、CAN FD协议栈实现与HSM安全启动集成,填补了社区在真实车规环境下的工程落地空白。对于嵌入式工程师而言,它是理解车载通信本质、掌握Zephyr BSP开发与C

weixin_33851177的博客 391

JLINK 调试报错 JLink Error: Can not read register 解决办法

Keil5  JLINK调试报如下错误, 原因是JLINK的SW调试模式的频率太大了, 默认是2MHz, 修改为1MHz就好了。 另外是FLASH DOWNLOAD 里面要根据芯片的型号和FLASH的尺寸, 选择一个和你的芯片匹配的配置, 默认是1M的FLASH,  我的芯片是512K的。 另外还有一个要注意的地方就是,  你调试的时候, 设置了断点, 可能只能 watch 全局变量,

Langeldep的专栏 4万+

Ozone嵌入式调试原理:硬件级追踪与RTOS深度分析

嵌入式调试工具的核心差异在于是否直达硬件执行层。传统IDE如Keil、IAR依赖编译器生成的调试信息和软件抽象,而Ozone基于J-Link与ARM CoreSight架构,直接解析DWT、ITM、ETM等内核级调试单元,实现指令周期级时序捕获与内存物理映射透视。这种能力使其在RTOS任务状态解构、中断嵌套失效定位、MPU内存越界拦截等硬核场景中不可替代。尤其在FreeRTOS可视化调试与系统视图(System View)时间轴分析方面,Ozone突破了符号级调试的局限,成为验证芯片真实行为的终极仲裁工具。

weixin_34129696的博客 256

AURIX开发环境搭建:从MemTool烧录失败定位根因

AURIX是Infineon推出的车规级多核MCU,基于Cortex-R5锁步架构,广泛应用于ADAS、电控单元等高可靠场景。其开发本质是构建一条贯穿硬件、驱动、协议与工具链的可信执行链,核心挑战在于调试通信(SWD/JTAG)信号完整性、DSM安全模块初始化、Flash Bank映射及DAS服务协同。MemTool作为关键烧录工具,依赖底层Infineon Debug Access Server与Keil/ADS的Flash算法精准配合;常见‘Target not connected’或‘Verify f

weixin_34357928的博客 376

JLink调试器无法读取R0寄存器:XMC4700连接问题排查指南

在嵌入式开发中,调试器连接失败是常见问题,尤其是使用J-Link调试ARM Cortex-M内核时出现的“无法读取寄存器”错误。其核心原理在于调试器需要通过SWD或JTAG接口与CPU内核建立通信,读取核心寄存器以确认芯片状态。这一过程涉及硬件信号完整性、时钟配置、芯片复位状态及低功耗模式等多个技术环节。对于工程师而言,掌握系统性的排查方法具有重要价值,能显著提升开发效率。本文以英飞凌XMC4700微控制器为例,针对典型的“JLink Error: Can not read register 0 (R0)

weixin_34355559的博客 297

Arm9裸机逆向实战:AT91SAM9260 Bootloader分析与主镜像提取

Bootloader是嵌入式系统启动的基石,它负责硬件初始化、存储加载与控制权移交。理解其工作原理需深入ARM架构、NAND Flash控制器、时钟树配置及中断向量表机制。本文以AT91SAM9260(Arm926EJ-S内核)为对象,解析裸机环境下无操作系统依赖的启动流程,涵盖串口协议识别、SWD调试接入、ECC校验剥离、向量表重映射等关键技术点。内容聚焦真实硬件逆向过程,适用于嵌入式安全研究、固件分析及底层开发工程师,尤其对Arm9 bootloader逆向、NAND Flash镜像提取等高频搜索场景提

weixin_33805992的博客 341

J-Link连接失败根源解析:SWD握手、VTREF电平与复位时序

SWD(Serial Wire Debug)是ARM Cortex-M系列MCU主流调试协议,其稳定运行依赖物理层电平匹配、协议层时序合规与目标芯片状态就绪。J-Link连接失败本质是SWD握手异常,常见诱因包括VTREF参考电压偏移导致逻辑电平识别错误、nRESET复位脉冲宽度不足引发MCU未进入调试态、以及SWDIO/SWCLK信号完整性劣化。这些底层问题无法通过KEIL软件配置修复,必须从供电质量、引脚状态、时钟源和Flash保护机制协同排查。典型应用场景涵盖STM32、GD32等国产及主流ARM M

weixin_33843947的博客 412

RISC-V MCU调试配置实战:从OpenOCD到VS Code全链路解析

在嵌入式开发中,调试是连接代码逻辑与硬件行为的关键桥梁,其核心原理是通过调试接口与芯片内部调试模块通信,实现对程序执行的控制与观测。RISC-V架构的开放性带来了芯片设计的多样性,也使得其调试生态更具挑战性。技术价值在于,掌握RISC-V调试配置能力,意味着能高效进行代码下载、单步执行、断点调试和变量查看,这是所有功能开发、性能优化与问题排查的基础。应用场景广泛覆盖从物联网终端、工业控制到边缘计算的各类RISC-V MCU开发。本文聚焦于**OpenOCD**这一核心调试服务器与**VS Code**集成环

weixin_33985679的博客 378

Can not read register 0 (R0) while CPU is running

问题一、cubemx生成工程,烧录程序后,不能再烧录。 问题二、5PIN端子SWD烧录器可以烧录,但是不能仿真。 程序仿真提示错误如下: ***JLink Error: CPU is not halted ***JLink Error: Can not read register 0 (R0) while CPU is running ***JLink Error: Can not read register 1 (R1) while CPU is running ***JLink Error: Can n

小灰灰的博客 5203

KW45烧写故障排查:J-Link与MCUXpresso协同调试要点

ARM Cortex-M0+/M4双核MCU(如NXP KW45)的Flash烧写并非标准CMSIS-DAP流程,其核心难点在于调试协议适配、OTP安全区域管理及启动模式硬件依赖。原理上需协同J-Link固件版本、SWD时钟分频策略、CoreSight初始化顺序与BOOT_CFG引脚状态;技术价值体现在保障Secure Boot可靠性、OTA升级兼容性及量产良率;典型应用于低功耗蓝牙Mesh网关、工业传感器节点等嵌入式场景。本文聚焦KW45在MCUXpresso IDE中使用J-Link烧写时的关键配置项、

weixin_34301132的博客 414

用python提取PDF中各类文本内容的方法

用python提取PDF中各类文本内容的方法

安静的软件工程师 6086

KW45B J-Link烧录深度指南:MCUXpresso调试配置与固件协同

ARM Cortex-M多核无线MCU(如KW45B)的J-Link烧录并非标准流程,其本质是调试协议(SWD)、芯片安全机制(OTP/BootROM)与IDE底层工具链(GDB Server/Flash算法)三者的精密协同。理解SWD电气约束、CoreSight调试架构兼容性及OTP密钥校验原理,是解决‘No target connected’‘Verify failed’等典型报错的技术基础。该类问题广泛存在于BLE/Thread网关、低功耗工业节点等嵌入式开发场景,尤其在量产烧录与产测工装部署中,需兼

weixin_34008933的博客 415

DRAM刷新refresh相关知识归类-基础小知识(三)

RAM每一位数据都是通过芯片内的一个小电容充电(或低电平)存储的。但随着时间的推移,电容逐渐失去电荷。为避免丢失存储的数据,必须定期刷新以将电荷(如果存在)恢复到其原始级别。此刷新过程包括读取每个位的值,然后将其写回。在此“刷新”期间,内存被占用,无法执行加载或存储位等正常操作。知道了应该这么做,但怎么去做以及有什么办法更有效率去做,就是接下来要整理的内容。

Paul 安的博客 1万+

揭秘Outlook/QQ邮箱伪造:如何利用Unicode编码绕过SPF检测

本文深入剖析了利用Unicode编码进行邮件显示名伪造的攻击手法,揭示了攻击者如何通过插入零宽字符等特殊编码绕过SPF检测,使邮件在Outlook、QQ邮箱等客户端中看似来自可信发件人。文章通过Python代码示例演示了伪造过程,并提供了从用户自查到管理员部署DMARC策略的多层次防御建议。

weixin_29063035的博客 332

JLink烧录仿真工具全攻略:从驱动安装到产线烧录

在嵌入式开发中,程序烧录与在线调试是MCU开发的基础环节。调试器通过SWD或JTAG接口连接目标芯片,实现固件下载、实时仿真与日志输出,是连接开发环境与硬件的重要桥梁。JLink作为应用广泛的调试工具家族,集烧录、仿真、虚拟串口等功能于一体,凭借强大的软件生态和跨平台兼容性,成为众多工程师的首选。无论是基于Keil5进行应用调试,还是使用JFlash进行产线批量烧录,JLink都提供了成熟的解决方案。本文围绕JLink的驱动安装、接口定义、烧录配置、常见报错排查以及HEX、BIN、S19固件文件处理等核心操

weixin_33851177的博客 376

浅谈功放PA的VBW

摘要:VBW(视频带宽)反映功放的宽带非线性特性和记忆效应,影响数字预失真(DPD)校正能力。其成因是功放管寄生参数(如Cshunt和Leff)形成低频并联谐振,导致供电臂阻抗增大,引发电压波动和记忆效应。测试方法包括双音IM3/IM5测试(以两侧IM3差≥3dB定义VBW)和魔T测试(通过S21曲线测量谐振频率)。改善措施主要是减小Leff,如采用双电源平衡馈电。VBW指标要求通常为魔T测试结果大于3倍信号带宽,以确保功放线性度。

weixin_49761275的博客 1573

GD32H759+RT-Thread工控环境搭建实战指南

嵌入式实时操作系统(RTOS)与高性能MCU的协同开发,是工业边缘设备落地的核心基础。RT-Thread作为国产主流轻量级RTOS,凭借可裁剪内核、组件化生态和FinSH调试能力,成为中高端工控场景首选;GD32H759则代表国产Cortex-M7 MCU的性能标杆,具备550MHz主频、双Bank Flash、硬件加密及多协议外设等关键特性。二者结合,不仅支撑确定性实时调度,更可承载Modbus、CAN FD、安全启动等工业刚需功能。本文聚焦从零构建可复现、可调试、可交付的嵌入式开发环境——涵盖Ubunt

weixin_33766805的博客 400

四足机械臂避坑指南:从URDF配置到逆运动学控制的完整流程

本文为四足机械臂(Loco-Manipulation)系统开发提供了一份详实的实战避坑指南。文章深入剖析了从URDF模型配置、核心控制循环设计到逆运动学(IK)求解与奖励函数构建的完整流程,重点讲解了如何避免关节命名错误、惯性参数设置不当、IK求解不稳定等常见陷阱,并强调了利用collision_bbox等可视化工具进行高效调试的方法,旨在帮助工程师构建稳定、高效的四足机械臂控制系统。

weixin_42509507的博客 192

若依集成mybatisplus、兼容旧分页【亲测有效】

service类继承ServiceImpl类 实现 你的Service接口。hutool工具包和lombok工具包如果不需要的话可以自行删除并修改后面的类里面的代码。自带的pagehelper用的1.4.6里面的jsqlparser用的4.5.0。mybatis-plus用的3.4.2里面的jsqlparser用的4.0.0。jsqlparser包,不剔除是这样的,有个冲突,我用的前端写的请求,返回的格式和原来的一样,已兼容。你的Entity类上面需要增加表的名字。

lh155136的博客 3566

固件下载全链路解析:从JTAG调试到OTA安全升级

固件下载是嵌入式系统启动前的关键环节,本质是通过JTAG或SWD等硬件通道,协同调试协议栈与Flash存储控制器,完成对NOR/NAND/eMMC等介质的精确时序编程。其技术核心在于物理接口握手、Flash擦写时序控制、Bootloader跳转机制及OTA差分更新策略。在工程实践中,它直接关联产线烧录效率、设备安全防护(如JTAG熔丝、Option Bytes配置)与远程升级可靠性。本文深入拆解ST-Link/J-Link调试器选型、自研Bootloader向量表重定向、AES-XTS固件加密、WSL2下O

weixin_34345753的博客 374

EGO-Planner文章解读(一)——论文原理和算法实现

详细解读egoplanner论文和代码

fegxg的博客 3987

嵌入式MCU软件交付链路:编译链接烧录仿真实战解析

嵌入式开发中,MCU从静态芯片到可执行系统,依赖一套严谨的软件交付链路——它不是IDE黑盒操作,而是由编译、链接、烧录、仿真四个深度耦合的技术环节构成的基础工程能力。其核心原理在于:编译将C代码转为位置无关的目标码,链接依据内存布局脚本(.ld)赋予绝对地址与段映射,烧录通过底层协议(解锁-擦除-编程-校验)将镜像写入Flash物理空间,仿真则借助CoreSight调试架构实时监控CPU执行流与外设状态。这一链路直接决定固件可靠性、调试效率与跨平台迁移能力,广泛应用于STM32、GD32、nRF52等主流M

weixin_34122810的博客 333

【Halcon-2D测量】set_metrology_object_param 函数功能(用于配置计量对象常规参数)

HALCON算子 set_metrology_object_param 是2D计量模块的核心配置工具,用于动态修改计量对象的测量区域、边缘检测和几何拟合参数。该算子需在检测前调用,支持批量或单独修改对象参数,包含三类关键参数:测量区域(如长度、间距)、边缘检测(如平滑Sigma、阈值)和几何拟合(如RANSAC阈值、最小分数)。使用时需注意参数互斥规则(如measure_distance优先于num_measures)和多线程同步要求。算子无输出参数,仅修改计量模型内部状态,需配合apply_metrolo

weixin_45590420的博客 291

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

VS Code调试STM32实战指南:从环境搭建到AI辅助调试

嵌入式开发中,STM32调试工具正从Keil等传统IDE向VS Code迁移,核心驱动力在于对符号调试深度、多源码上下文连贯性及实时AI辅助能力的需求升级。VS Code通过GDB+OpenOCD+ST-Link构成的调试链路,实现寄存器级可视化、SVD外设映射、DWARF4调试信息解析等关键技术支撑,显著提升结构体变量查看、中断分析、HardFault根因定位等高频场景效率。结合cortex-debug插件、launch.json精准配置与SVD文件定制,可解决keil调试助手无法显示结构体变量、stm3

weixin_34248705的博客 520

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

上一篇: 【 C++ 】 讲解与实现 对数器接口
下一篇: 【 工具 】 日志秒开工具 1G日志秒开 过滤器功能
嵌入一下?
博客等级 码龄6年 324粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入一下?

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值