请选择 进入手机版 | 继续访问电脑版
查看: 2574|回复: 14

[分享] [痞子衡]不同复位类型设置对Keil在线调试有何影响?

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3298

    主题

    6545

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31998
    最后登录
    2024-4-9
    发表于 2021-6-21 11:37:40 | 显示全部楼层 |阅读模式
    不同复位类型设置对Keil在线调试有何影响?


    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致。

    本篇是 《IAR EWARM复位类型》、《MCUXpresso IDE复位类型》的同系列篇,三大经典IDE(IAR EWARM、Keil MDK、MCUXpresso IDE)下的复位策略只剩 Keil MDK 没介绍了,心事不了,觉睡不好。今天痞子衡就来认真讲一下搞嵌入式生涯里最早接触的 IDE - Keil,完结这个系列。

    Note: 痞子衡测试的Keil MDK版本是v5.31。
    一、Keil调试机制与调试分类
    关于 Keil MDK 下的调试机制原理在 \Keil_v5\ARM\Hlp 目录下没有找到专门的设计性文档,IDE 帮助手册 uv4.chm 里 Debugging 章节更多是介绍如何在 IDE 里使用下载调试功能。

    不过调试机制在各 IDE 上大同小异,设计理念都是一致的,这部分建议参考 《IAR EWARM复位类型》 里的一、二章节。

    二、复位类型全解析
    好了,现在我们进入正题,开始介绍 Keil 下复位类型。我们知道不同硬件仿真器下复位功能有差异,痞子衡主要介绍 i.MXRT 上两种最常用的仿真器:J-Link 和 DAPLink。此外不管是哪种仿真器,其都借助了 Cortex-M7 内核功能,内核在 SCB 模块的 AIRCR 寄存器中集成了复位的支持,详见 《IAR EWARM复位类型》 的 3.1 Cortex-M7复位功能 小节。

    2.1 J-Link复位类型
    Keil 里关于 J-Link 连接(Connect)和复位(Reset)是两级设置,先连接后复位,并且复位动作仅在勾选了"Reset after Connect"之后才有效。实际使用中推荐 Connect 选项固定设为"Normal",且勾选上"Reset after Connect",然后在 Reset 选项里指定想要的复位类型。
    1. Note: 详细介绍可以查看 \Keil_v5\ARM\Hlp\jlink.chm 文档中 Debug 小节
    复制代码
    12.png
    连接类型选项:
    1. Normal:默认的连接策略,连接后只是将 PC 停在当前执行的指令处
    2. with Pre–reset:在连接前,先执行一次 HW RESET
    3. under Reset:在连接过程中一直保持 HW RESET 有效(该选项适用于用户程序误将 JTAG/SWD 禁掉的情况)
    复制代码
    复位类型选项:
    1. Normal(复位编号0):默认的复位策略,对于i.MXRT来说等同于Core and peripherals方式
    2. Core(复位编号1):借助Cortex-M内核模块SCB中的AIRCR寄存器的VECTRESET位功能来复位Core
    3. Reset Pin(复位编号2):通过拉低J-Link的RESET引脚(一般也会接到MCU reset脚)来复位MCU
    4. Core and peripherals(复位编号8):借助Cortex-M内核模块SCB中的AIRCR寄存器的VECTRESET位和SYSRESETREQ位来同时复位Core和MCU外设模块
    复制代码
    剩下几种复位类型不适用i.MXRT,暂不介绍。


    2.2 DAPLink复位类型
    Keil 里关于 DAP-Link 连接(Connect)和复位(Reset)也是两级设置,先连接后复位,并且复位动作仅在勾选了"Reset after Connect"之后才有效。实际使用中推荐 Connect 选项固定设为"Normal",且勾选上"Reset after Connect",然后在 Reset 选项里指定想要的复位类型。此外相比 J-Link 还多一个 "Stop after Reset "选项,这个选项用于永久使能应用程序复位向量的捕获,我们一般不勾选。
    1. Note: 详细介绍可以查看 \Keil_v5\ARM\Hlp\dapdebug.chm 文档中 Debug 小节
    复制代码
    13.png
    连接类型选项:
    1. Normal:默认的连接策略,连接后只是将 PC 停在当前执行的指令处
    2. with Pre–reset:在连接前,先执行一次 HW RESET
    3. under Reset:在连接过程中一直保持 HW RESET 有效(该选项适用于用户程序误将 JTAG/SWD 禁掉的情况)
    4. without Stop:连接后任 CPU 自由执行(适用于观测存储器或者外设 SFR 情况)
    复制代码
    复位类型选项:
    1. HW RESET:通过翻转DAPLink的nSRST/nRESET引脚(一般也会接到MCU reset脚)来复位MCU
    2. SYSRESETREQ:借助Cortex-M内核模块SCB中的AIRCR寄存器的SYSRESETREQ位来同时复位MCU外设模块
    3. VECTRESET:借助Cortex-M内核模块SCB中的AIRCR寄存器的VECTRESET位功能来复位Core
    复制代码
    三、复位类型对在线调试的影响
    复位类型对在线调试的影响分两种:一、是否影响应用程序正常调试;二、是否影响应用程序正常运行。对于第二点,因为应用程序的设计差异,无法确定复位类型的不同导致的未复位模块对其产生何种影响,因此我们暂不讨论这点,我们主要看第一点。


    设置不同的复位类型是否影响应用程序正常调试(能否停在程序入口函数,能否进行单步)?痞子衡在MIMXRT1050-EVKB上实测了SDK里的led_blinky例程,选取了flexspi_nor_debug(在Flash)build做了很多组测试,结果如下:
    16.png
    从上表的测试结果,我们可以得到如下结论:
    1. 结论1:在Flash调试,要想正常调试,要么不复位片上外设(保留Flashloader对FlexSPI等模块的初始化),要么启动模式设成Flash Boot(让BootROM完成FlexSPI等模块的初始化),因为Clock/GPIO/FlexSPI的初始化必须保留,CPU才能正常获得Flash里指令。
    2. 结论2:JLink复位下,Keil MDK调试体验与其他IDE是一致的。
    3. 结论3:DAPLink复位下,Keil MDK下HW RESET方式复位可能会报奇怪的内核连接错误。
    复制代码
    至此,Keil在线调试时设不同复位类型可能会导致i.MXRT下调试现象不一致现象痞子衡便介绍完毕了,掌声在哪里~~~









    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-12-25 08:42
  • 签到天数: 391 天

    [LV.9]以坛为家II

    45

    主题

    1337

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3156
    最后登录
    2024-2-19
    发表于 2021-6-25 16:39:04 | 显示全部楼层
    不错不错,深入学习了
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 1930 天

    [LV.Master]伴坛终老

    61

    主题

    1万

    帖子

    3

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    17199
    最后登录
    2024-4-16
    发表于 2021-6-25 21:51:37 | 显示全部楼层
    学习了
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    8 分钟前
  • 签到天数: 1992 天

    [LV.Master]伴坛终老

    23

    主题

    6153

    帖子

    21

    金牌会员

    Rank: 6Rank: 6

    积分
    11853
    最后登录
    2024-4-16
    发表于 2021-6-26 09:11:50 | 显示全部楼层
    分析透彻,讲解详细嘛
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1335 天

    [LV.10]以坛为家III

    88

    主题

    4292

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9049
    最后登录
    2024-4-13
    发表于 2021-6-26 16:07:47 | 显示全部楼层
    平时只使用了软复件。
    这功能点还是蛮多的
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    5 小时前
  • 签到天数: 2107 天

    [LV.Master]伴坛终老

    56

    主题

    4766

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    24788
    最后登录
    2024-4-16
    发表于 2021-6-27 11:08:57 | 显示全部楼层
    学习了。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-1-31 09:34
  • 签到天数: 202 天

    [LV.7]常住居民III

    7

    主题

    1515

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3811
    最后登录
    2024-2-19
    发表于 2021-6-28 09:19:04 | 显示全部楼层
    讲的很好  学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-4-24 15:04
  • 签到天数: 508 天

    [LV.9]以坛为家II

    0

    主题

    1273

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3360
    最后登录
    2023-5-22
    发表于 2021-6-28 13:08:16 | 显示全部楼层
    学习了   
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2021-6-16 07:43
  • 签到天数: 155 天

    [LV.7]常住居民III

    9

    主题

    519

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1150
    最后登录
    2021-11-12
    发表于 2021-6-29 06:36:58 | 显示全部楼层
    好帖帮顶
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2023-8-30 17:43
  • 签到天数: 306 天

    [LV.8]以坛为家I

    14

    主题

    1746

    帖子

    4

    金牌会员

    Rank: 6Rank: 6

    积分
    2521
    最后登录
    2023-8-30
    发表于 2021-6-29 09:13:20 | 显示全部楼层
    不错,学习了
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-16 19:52 , Processed in 0.139666 second(s), 28 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表