如何通过J-Link Commander调试MIMXRT MCU

控制/MCU

1854人已加入

描述

    在分析和定位RT异常复位或者启动失败的原因时,RT内部有两个寄存器复位寄存器SRC_SRSR和BootMode寄存器SRC_SBMR1,我们可以通过J-Link Commander注入探针命令读取这两个寄存器内容作为辅助分析手段,具体方法如下:

寄存器

寄存器

    在出现异常复位情况时(MCU已经正常跑起来了),我们连上J-Link并打开J-Link Commander,先敲入connect,然后按照提示步骤连接到内核,如右图所示;

寄存器

    查看RT参考手册(以RT1020为例)确定SRC_SRSR寄存器地址为0x400F8008,然后继续在J-Link Commander窗口输入“mem32 0x400F8008 1”,即可返回该寄存器内容如下图,默认RT第一次运行时该寄存器为0x1,由该寄存器描述可知上一次触发MCU复位的原因为POR_B有效,即外部有信号拉低POR_B或者MCU上电复位;

寄存器

寄存器

    可以模拟一次软件复位来观察该寄存器的变化,先输入“w4 0x400F8008 1”即写1清零SRC_SRSR对应的位,然后再次输入“mem32 0x400F8008 1”以确认寄存器位是否正确清0,接下来输入“r”即复位命令,默认该复位命令为软件复位命令(即写ARM内核寄存器位SYSRESETREQ触发CPU内核软复位),最后输入“mem32 0x400F8008 1”,可以看到SRC_SRSR寄存器变为2,对照手册即上一次复位类型为软复位;

寄存器

    这一步我们模拟一次启动失败的情况,将RT1021_EVK的SW7拨码由原来的“0010”(QSPI Flash启动)改为“1010”(SD卡启动),然后我们手动按复位按键,此时MCU处于启动失败的条件(因为我们没有插入SD卡)。我们需要重新打开J-Link Commander,继续输入“connect”一系列操作连接到内核,最后输入“mem32 0x400F8004 1”读取SRC_SBMR1寄存器内容为0x40,即BT_CFG[6](GPIO_B0_10)=1;

    打EMC的时候或者板子干扰比较大的时候,很容易出现MCU的假象死机(即MCU电源都正常且POR_B也为高,这种情况实际是MCU复位后启动失败死在ROM里),通过这种方式可以有效判定外部哪个BT_CFG管脚的干扰造成的。此外,mem32命令也可以通过AHB读的方式访问RT片上RAM空间,片外SDRAM和片外SPI NorFlash。

寄存器

寄存器

    当用户需要检查Flash内容是否被意外篡改或者要回读Flash内容以确认当前运行的软件版本时,J-Link Commander也提供了这样的功能,即“savebin”和“verifybin”命令如下图,具体用法如下:

寄存器

编辑:黄飞


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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分