控制器已设置看门狗无法调试?我想了个办法

谈思汽车 2024-02-16 10:00

 智能汽车安全新媒体 

作者 | 王御

最近返回来一个故障件,需要分析故障原因,这次解决问题的过程比较有意思,记录一下。

01

问题定位及看门狗的影响

首先上电测试,发现工作电流与正常电流差异比较大,控制器也没有CAN报文输出。一般这个时候我会通过调试器接口把整个Flash全部dump为一个s19文件,再把这个s19文件通过调试器刷到另一个正常的件上,如果另一个正常,那就是硬件问题;如果问题依旧,那就是软件问题。这次还是这么操作。

在dump的过程中,如果由于故障这个控制器(A控制器)不断重启,是attach不上的。一般通过在上电时发送10 02指令强制跳转到BT,然后可以dump出完整的flash。

把这个flash通过调试器下载到另一个控制器(B控制器)中,需要注意,必须先通过CAN将特殊的不带看门狗的程序刷写到控制器中,才可以使用调试器下载,否则会导致控制器异常,只能通过Cyclone的小红盒才能救回来。

下载以后测试,果不其然,故障复现,基本确定是软件的问题。照理说现在应该attach以后通过单步调试查找问题,但是控制器不断重启,attach不上。即使attach上,断点停住后会导致电源芯片没喂狗导致异常,所以单步调试前必须去掉电源芯片看门狗。

先说一下分工,这个控制器是由硬件、基础软件、应用软件及集成三个团队共同开发的,基础软件交付给我们应用组是静态库文件。基础软件在初始化的时候对电源芯片进行配置,开启或者关闭看门狗,电源芯片对MCU进行复位。

正常要关看门狗,就要和基础软件的同事提需求,他给代码并重新编成库给我们,我们再重新集成。但是这个故障件这么操作可能会导致失去故障现场,因此需要一种不影响软件和硬件的方式来实现。

02

关闭看门狗方案

与硬件同事沟通,了解电源芯片MCZ33903进入的条件为:DBG PIN电压在8-10V,退出条件为:DBG PIN电压在8-10V以外 or SPI 设置MODE 寄存器。说明如下图:

2.1 硬件方案

硬件的同事介绍,DBG电压还受MCU控制,上电默认进入DEBUG模式,但是基础软件初始化后就退出了DEBUG模式。硬件同事提供了几个解决办法:

  • 通过焊接一个零欧电阻,屏蔽MCU对DBG的控制;同时将MCZ33903的片选针脚弄断,以此断开MCU合MCZ33903的SPI通信

  • 断开某个零欧电阻,断开MCZ33903重启MCU的通路,使得电源芯片无法重启MCU

以上两种方式都需要物理改造,而且有副作用,暂时先不采用,实在不行再说。

2.2 软件方案

与基础软件的同事沟通,设置看门狗的代码如下:

s_uasSendBuffer[0]=LEAVE_DEBUG_MODE; 	// 0xDD00
Spi_SyncTransmit(s_ucSequenceNumber); // 发送退出DBG模式SPI指令:Leave_DBG_MODE(0xDD00)
// 略过
Rte_Call_GPO_GPIO130(0); // 配置DBG控制IO口为低,禁用DBGSET GPIO130=0;
我先想到的办法是通过PC寄存器实现,先把断点下在Spi_SyncTransmit之前,停住后,修改PC寄存器,跳过退出debug的指令,实际操作的时候,发现压根attach不上,此方法宣告失败。

第二个办法是直接修改dump出的s19,直接把这两个语句改了。思路是从C代码找汇编码,然后找机器码,然后确定修改后的机器码,然后在s19中完成替换,再修改s19的行校验,然后再刷写到控制器中进行单步调试。

03

实施过程

先找汇编码和机器码,打开调试器的Assem窗口,搜索函数名MCZ33903,找到关键代码如下:

0x4d09a: 701b0500 	e_li r0,0xdd00
0x4d09e: b00f se_sth r0,0(r31)
0x4d0a0: 307e2570 e_lbz r3,0x2570(r30)
0x4d0a4: 78025da5 Spi_SyncTransmit(0x72e48)
// 略过
0x4d0b2: 4803 se_li r3,0
0x4d0b4: 79ffe2e7 e_bl IoHwAb_OutputGPIO130(0x4b39a)


看到这一堆东西,我整个人是有点懵的,上一次用汇编还是十几年前的微机原理和51单片机,语法和这个差挺多的。没事,慢慢来,第一步是弄明白机器码和汇编码的对应关系。在网上下载了《Programmer’s reference manual》,根据这个手册,对关键的两行代码做分析。

3.1 SPI设置代码分析过程

701b0500 e_li r0,0xdd00

先看汇编码的含义

701b0500: 0111-0000-0001-1011-0000-0101-0000-0000


按照e_li指令重新划分,为:

701b0500: 0111-00|00-000|1-1011|-0|000-0|101-0000-0000


得到相应位置为:

RD=0
LI20(4:8)=11011
LI20(0:3)=0000
LI20(9:19)=101-0000-0000
LI20=LI20(0:3)LI20(4:8)LI20(9:19)=0000-1101-1101-0000-0000=0xDD00


这下对上了,把0xDD00替换为一个查询指令0x2100(RD_CAN:确认CAN寄存器)

LI20=0X2100=0000-0010-0001-0000-0000
LI20(9:19)=001-0000-0000
LI20(0:3)=0000
LI20(4:8)=00100


更新后的指令为:

0111-00|00-000|0-0100|-0|000-0|001-0000-0000


换算为十六进制为:

70040100 e_li r0,0x2100


4803 se_li r3,0

先看汇编码的含义

4803:0100-1|000-0000-|0011

UI7=0,修改为UI7=1,则代码为

0100-1!000-0001-!0011:4813 se_li r3,1。


3.2 s19替换

到这一步为止,已经知道替换的机器码了。701b0500->70040100,4803->4813,开始搞s19.

用VScode打开s19,寻找并替换,同时计算最后的校验byte,修改后如下:

用hexview打开这个文件,并和dump出来的s19做比较,确认修改正确。

3.3 下载测试

使用调试器将修改后的s19下载到控制器中,需要注意,必须先通过CAN将特殊的不带看门狗的程序刷写到控制器中,才可以使用调试器下载,否则会导致控制器异常。

下载成功!attach,成功!在初始位置下断点,在周期任务下断点,reset,初始位置停住了,run,周期位置停不住!好,问题定位,继续查找,发现是NVM相关的问题,好了,接下来就可以将问题移交给基础软件的同事解决了。完结撒花!

最后补充一个操作上的失误,别人告诉我控制器里面的版本号是2007,在Attach的时候选择了2007版本的elf,导致单步的时候代码对不上了,在调试器窗口看到0x4d09a位置不是701b0500了,然后又从dump出的s19找版本号的字符串,发现是2009,在Attach的时候选择了2009版本的elf,这才一切正常,所以一定要注意维护好elf的版本,一旦丢失,排查问题的时候就抓瞎了。

来源:@知乎王御

https://zhuanlan.zhihu.com/p/508465914

-  THE END  -


 精品活动推荐 


因文章部分文字及图片涉及到引用,如有侵权,请及时联系17316577586,我们将删除内容以保证您的权益。

谈思汽车 智能汽车安全新媒体
评论
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 40浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 125浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 63浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 80浏览
  • 彼得·德鲁克被誉为“现代管理学之父”,他的管理思想影响了无数企业和管理者。然而,关于他的书籍分类,一种流行的说法令人感到困惑:德鲁克一生写了39本书,其中15本是关于管理的,而其中“专门写工商企业或为企业管理者写的”只有两本——《为成果而管理》和《创新与企业家精神》。这样的表述广为流传,但深入探讨后却发现并不完全准确。让我们一起重新审视这一说法,解析其中的矛盾与根源,进而重新认识德鲁克的管理思想及其著作的真正价值。从《创新与企业家精神》看德鲁克的视角《创新与企业家精神》通常被认为是一本专为企业管
    优思学院 2025-01-06 12:03 113浏览
  • 这篇内容主要讨论三个基本问题,硅电容是什么,为什么要使用硅电容,如何正确使用硅电容?1.  硅电容是什么首先我们需要了解电容是什么?物理学上电容的概念指的是给定电位差下自由电荷的储藏量,记为C,单位是F,指的是容纳电荷的能力,C=εS/d=ε0εrS/4πkd(真空)=Q/U。百度百科上电容器的概念指的是两个相互靠近的导体,中间夹一层不导电的绝缘介质。通过观察电容本身的定义公式中可以看到,在各个变量中比较能够改变的就是εr,S和d,也就是介质的介电常数,金属板有效相对面积以及距离。当前
    知白 2025-01-06 12:04 167浏览
  • PLC组态方式主要有三种,每种都有其独特的特点和适用场景。下面来简单说说: 1. 硬件组态   定义:硬件组态指的是选择适合的PLC型号、I/O模块、通信模块等硬件组件,并按照实际需求进行连接和配置。    灵活性:这种方式允许用户根据项目需求自由搭配硬件组件,具有较高的灵活性。    成本:可能需要额外的硬件购买成本,适用于对系统性能和扩展性有较高要求的场合。 2. 软件组态   定义:软件组态主要是通过PLC
    丙丁先生 2025-01-06 09:23 83浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 66浏览
  • 根据Global Info Research项目团队最新调研,预计2030年全球封闭式电机产值达到1425百万美元,2024-2030年期间年复合增长率CAGR为3.4%。 封闭式电机是一种电动机,其外壳设计为密闭结构,通常用于要求较高的防护等级的应用场合。封闭式电机可以有效防止外部灰尘、水分和其他污染物进入内部,从而保护电机的内部组件,延长其使用寿命。 环洋市场咨询机构出版的调研分析报告【全球封闭式电机行业总体规模、主要厂商及IPO上市调研报告,2025-2031】研究全球封闭式电机总体规
    GIRtina 2025-01-06 11:10 103浏览
  • 本文介绍Linux系统更换开机logo方法教程,通用RK3566、RK3568、RK3588、RK3576等开发板,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。制作图片开机logo图片制作注意事项(1)图片必须为bmp格式;(2)图片大小不能大于4MB;(3)BMP位深最大是32,建议设置为8;(4)图片名称为logo.bmp和logo_kernel.bmp;开机
    Industio_触觉智能 2025-01-06 10:43 87浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 141浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦