dump原理及配置

(1)dump触发原理

        对Quecpython模组而言,Dump是一种特殊的异常处理程序,一般配置在不可恢复的异常中。其作用是保存异常现场的CPU和内存数据,并且以指定方式输出。进入这种模式一般需要满足两个条件:其一,模组CPU产生了无法恢复的异常。其二,模组使能了dump模式。

(2)Dump时,一般做以下操作:

        拷贝异常现场寄存器值,其中通用寄存器R0-R12、链接寄存器LR指针以及程序计数器PC指针能够还原大多数现场。
         根据我们配置的模式,建立保存dump信息的通道,一般包括:从USB/UART输出(此时需要初始化通信协议,例如Ymodem等。部分平台会重新枚举USB口),保存到存储介质(初始化对应的存储介质,并检查空间是否满足dump文件之需),从JTAG口输出(初始化JTAG硬件)。
        鉴于存储空间和使用便捷性,我们一般使用USB或UART来输出dump文件。

(3)常见的不可恢复异常触发原理一般包括以下几种:

        硬件看门狗超时: 硬件看门狗一般连接到CPU的IO引脚,因此可以触发CPU的硬件中断。在产生超时的情况下,看门狗触发CPU中断。中断ISR中通过主动assert等手段触发异常,如果此时使能了dump模式,就会进入dump模式并输出调试信息。
        内存踩踏: 出现内存踩踏时,内存里的有效值会被清除或篡改,往往会造成CPU在获取指令或数据时取得非法值。这种情况下的异常主要有两种可能:其一,CPU取到了非法地址并尝试访问,就会造成程序或数据存储器访问失败,触发Prefetch Abort或者Data Abort;其二,有时CPU会根据错误地址跳转到错误的程序入口,造成逻辑异常,进入死循环,引发看门狗超时。当发生以上异常时,如果此时使能了dump模式,就会进入dump模式并输出调试信息。
        空指针: 无论对于程序还是数据,空指针都是无效的。一般来说,在使用指针时,代码内需要过滤空指针。如果空指针被装载到了CPU中并执行访问,就会触发Prefetch Abort或者Data Abort。
        死循环: 进入死循环时,CPU会被该循环占满,其它任务无法得到正常执行。最终导致看门狗超时触发异常。
        assert: 断言,一种调试手段,当输入为FALSE时,主动触发异常,如使用abort或while(1)等。如果使能了dump模式,最终会进入dump模式并输出调试信息。
        以上即为dump模式的触发原理。进入dump模式后,模组会保存异常触发时的内存和寄存器信息并输出.接下来,我们将介绍如何抓取dump调试信息并进行分析。

(4)抓取dump调试信息

        在调试过程中如果发生程序异常,我们可以配置模组进入dump模式并抓取调试信息。

(5)配置dump模式

        一般来说,模组在程序异常时默认的行为是reset,我们需要通过调整NV参数来配置模组异常时进入dump模式,此更改需要从AT口(一般支持主串口和Quectel USB AT Port)下发AT指令来配置,各平台指令如下:

    ECX00U/ECX00G(该配置掉电不保存):
    at+qdbgcfg="dumpcfg",0

    ECX00A/ECX00N/ECX00M(该配置掉电不保存):
    AT+LOG=19,1
    AT+qdumpcfg=0,0
    AT+qdumpcfg=2,1

    ECX00E(该配置掉电保存):
    AT+ECPCFG="faultAction",0

    BG95/BG600L(该配置掉电保存):
    AT+QCFGEXT="dump",1

    发送以上指令后,模组程序异常后就会进入dump模式而非直接重启。如果需要清除以上配置,恢复reset行为,各平台指令如下:

    ECX00U/ECX00G(该配置掉电不保存):
    at+qdbgcfg="dumpcfg",1

    ECX00A/ECX00N/ECX00M(该配置掉电不保存):
    AT+qdumpcfg=0,1

    ECX00E(该配置掉电保存):
    AT+ECPCFG="faultAction",4

    BG95/BG600L(该配置掉电保存):
    AT+QCFGEXT="dump",0

        除以上指令外,ECX00A/ECX00N/ECX00M平台可以通过清除NV参数来达到恢复reset行为的目的:AT+RSTSET

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值