在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

記錄一下bootloader升級Bug分析及復(fù)現(xiàn)最后解決的整個過程

汽車ECU開發(fā) ? 來源:汽車電子嵌入式 ? 作者:Tomas Li ? 2022-11-22 09:03 ? 次閱讀

前言

這幾天遇到一個bootloader升級的奇怪問題,分析問題的過程使用了一些常用的分析工具和方法覺得很有普遍性,這里記錄一下Bug分析、復(fù)現(xiàn)最后解決的整個過程,希望能給大家?guī)硪恍﹩l(fā)。

正文

環(huán)境描述

ECU使用瑞薩公司的RH850芯片,bootloader支持應(yīng)用的雙分區(qū)刷寫。

測試用例

當(dāng)前程序處于A分區(qū) --> 開始升級,跳入bootloader --> 升級A分區(qū)程序 --> 故障注入,跳過升級的0x34服務(wù),直接開始0x36服務(wù)傳輸升級包程序

94742832-69fd-11ed-8abf-dac502259ad0.png

圖1:Bootloader故障注入測試

94948c1c-69fd-11ed-8abf-dac502259ad0.png

圖2:Bootloader升級常用的UDS服務(wù)ID

期望結(jié)果

Bootloader升級失敗,0x11 01軟件復(fù)位后Bootloader校驗A分區(qū)失敗(默認(rèn)跳到A分區(qū)),程序跳到B分區(qū),正常運行B分區(qū)程序。

94b79e14-69fd-11ed-8abf-dac502259ad0.png

圖3:A分區(qū)升級失敗后跳到B分區(qū)期望正常通信狀態(tài)

實際結(jié)果

Bootloader升級失敗,0x11 01軟件復(fù)位后Bootloader校驗A分區(qū)失敗(默認(rèn)跳到A分區(qū)),程序跳到B分區(qū),程序的通信都異常(每次重啟后只發(fā)出一幀報文,間隔很久又會發(fā)出一幀報),但是診斷功能是OK的。

94d68f9a-69fd-11ed-8abf-dac502259ad0.png

圖4:A分區(qū)升級失敗后跳到B分區(qū)實際異常通信狀態(tài)

問題分析

1)診斷功能OK的,說明程序沒有跑死,上電只發(fā)一幀報文很像是應(yīng)用滿足條件關(guān)閉通信了。ECU在以下三個狀態(tài)下會關(guān)閉通信。

. IGOFF

.低電壓(低于6.5V)

.低功耗模式 && 沒有處于EOL(End Of Line,下線模式)

第一個和第二個條件直接測試外部硬件輸入可以確定不可能滿足。第三個條件需要診斷觸發(fā),理論上是不可能滿足條件。

初步結(jié)論1:不是外部硬件輸入狀態(tài)導(dǎo)致關(guān)閉通信,也不是診斷時間關(guān)閉通信。

2)嘗試各種正常情況下的刷寫操作

. 處于A分區(qū),刷A分區(qū)

. 處于A分區(qū),刷B分區(qū)

. 處于B分區(qū),刷A分區(qū)

. 處于B分區(qū),刷B分區(qū)

結(jié)果,無論最后是在A分區(qū)還是B分區(qū),通信都是正常的。

初步結(jié)論2:正常情況下的程序刷寫都成功,且通信正常。

3)問題發(fā)生后ECU就一直處于故障狀態(tài)了,這個時候可以考慮使用調(diào)試器的熱插拔功能(Hot Plug-in,不重新Download程序到ECU當(dāng)中,直接進(jìn)入調(diào)試模式,ECU中運行的還是故障狀態(tài)下的程序)。

調(diào)試上位機:RH850提供的CS+

調(diào)試仿真器:瑞薩專用的E2

94f65adc-69fd-11ed-8abf-dac502259ad0.png

圖5:CS+的熱插拔選項

95204e50-69fd-11ed-8abf-dac502259ad0.png

圖6:CS+的調(diào)試器E2配置

圖7:程序進(jìn)入了低功耗狀態(tài)下關(guān)閉通信的分支

按照1)中的分析,程序不可能進(jìn)入低功耗狀態(tài)下關(guān)閉通信的分支,除非是進(jìn)行分支判斷的全局變量被異常篡改了。

初步結(jié)論3:啟動模式的全局變量被異常篡改,導(dǎo)致程序進(jìn)入到低功耗模式下關(guān)閉通信了。

全局變量被異常篡改,一般是數(shù)組越界或者是指向全局變量的指針操作異常導(dǎo)致的,但是如果是這樣的話,和升級沒啥關(guān)系,無論最后跳到A分區(qū)還是B分區(qū)都會出現(xiàn)異常,所以應(yīng)該不是程序本身的問題。

4)讓測試同事在B分區(qū)進(jìn)行故障注入測試。

. 當(dāng)前處于B分區(qū)

. 升級B分區(qū)

. 跳過0x34開始傳輸數(shù)據(jù)服務(wù)

最后升級B分區(qū)失敗,跳到A分區(qū),A分區(qū)的通信是正常的。

初步結(jié)論4:B分區(qū)升級B分區(qū)進(jìn)行故障注入后跳到A分區(qū)是正常的。

5)嘗試自己復(fù)現(xiàn)問題。測試同事的測試用例是跳過0x34服務(wù)后開始傳輸數(shù)據(jù),其實也就是A分區(qū)被擦除后升級失敗,跳到了B分區(qū)。那么理論上我復(fù)現(xiàn)問題的時候,只要滿足以下條件就能復(fù)現(xiàn)文:

. 當(dāng)前處于A分區(qū)

. 開始升級程序

. 擦除完A分區(qū)數(shù)據(jù)

. 還沒升級完A分區(qū)程序就斷開物理連接,確保A分區(qū)升級失敗

最后確實升級A分區(qū)失敗,跳到了B分區(qū),但是B分區(qū)的通信卻是正常的。為什么自己的測試結(jié)果和測試同事的測試結(jié)果不一樣了?-- 分析測試同事的測試用例:

. 開始升級

. 跳過0x34服務(wù)

. 0x36開始傳輸數(shù)據(jù)

和上面我的復(fù)現(xiàn)步驟對比,測試同學(xué)的測試用例因為跳過了0x34服務(wù),所以ECU的A分區(qū)是完全被擦除的狀態(tài),我的操作是在程序刷寫了一部分的情況下斷開物理連接,所以A分區(qū)被擦除后又被寫入部分?jǐn)?shù)據(jù)。

6)模擬測試同事的測試步驟。

擦除完A分區(qū)數(shù)據(jù)后還沒開始傳輸A分區(qū)的數(shù)據(jù)就立馬斷開物理連接。

成功復(fù)現(xiàn)問題!!!

分析5)和6)兩種操作,不同點就是擦除完A分區(qū)后數(shù)據(jù)后又往A分區(qū)寫入了部分?jǐn)?shù)據(jù)。寫入的部分?jǐn)?shù)據(jù)影響了A分區(qū)程序的運行。

7)使用瑞莎公司提供的RFPV(Renesas Flash Programmer)將5)和6)兩種操作后的程序都讀出來進(jìn)行對比。

953f872a-69fd-11ed-8abf-dac502259ad0.png

圖8:讀取兩種操作下的Flash中的程序

955e7cb6-69fd-11ed-8abf-dac502259ad0.png

圖9:使用hexview工具對比B分區(qū)通信異常和B分區(qū)通信正常下的程序

異常情況下的程序從0x40000開始處數(shù)據(jù)是被擦除的,正常情況下的程序的0x40000開始的程序是有數(shù)據(jù)的。

為啥A分區(qū)0x40000處開始的數(shù)據(jù)會影響B(tài)分區(qū)的程序運行?

8)查看A分區(qū)和B分區(qū)的鏈接文件

957b3bf8-69fd-11ed-8abf-dac502259ad0.png

圖10:A分區(qū)鏈接文件

9591e1aa-69fd-11ed-8abf-dac502259ad0.png

圖11:B分區(qū)鏈接文件

找到問題,A分區(qū)和B分區(qū)的標(biāo)定數(shù)據(jù)用的是同一塊Flash地址!

9)修改B分區(qū)鏈接文件

95ace392-69fd-11ed-8abf-dac502259ad0.png

圖12:修改B分區(qū)鏈接文件的標(biāo)定量起始地址

最后上板驗證通過,問題解決。

10)為啥標(biāo)定量的數(shù)據(jù)被擦除后會影響到通信?-- 猜測是標(biāo)定段數(shù)據(jù)被擦除后標(biāo)定相關(guān)的協(xié)議數(shù)據(jù)讀寫異常,最后導(dǎo)致進(jìn)行分支判斷的全局變量被異常篡改了。目前還未想到驗證猜想的辦法。

總結(jié)

這個問題分析了足足一天,分析問題的過程很具有代表性:發(fā)現(xiàn)問題 --> 推測原因 -->驗證猜想 --> 驗證失敗 -->對比分析推測-->猜測驗證 -->成功解決,逐步抽絲剝繭,層層遞進(jìn),最后解決問題。

希望對各位看官有所啟示。中間還用到了調(diào)試器的熱插拔功能,編程器的讀取ECU程序的功能,hexview對比Hex文件的功能,這些功能在分析問題中經(jīng)常用到。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ecu
    ecu
    +關(guān)注

    關(guān)注

    14

    文章

    901

    瀏覽量

    55251
  • bootloader
    +關(guān)注

    關(guān)注

    2

    文章

    238

    瀏覽量

    46262
  • EOL
    EOL
    +關(guān)注

    關(guān)注

    0

    文章

    10

    瀏覽量

    12351
  • rh850
    +關(guān)注

    關(guān)注

    2

    文章

    24

    瀏覽量

    4724

原文標(biāo)題:Bootloader升級A分區(qū)失敗跳到B分區(qū)后通信異常

文章出處:【微信號:eng2mot,微信公眾號:汽車ECU開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    汽車ECU的Bootloader升級過程分析

    MCU正常運行時總是從固定地方取指令,順序運行,程序更新時需要使用燒錄器等工具燒錄,于是有人將程序設(shè)計成,由個程序跳轉(zhuǎn)到另個程序,這個程序通常稱作Bootloader,另個叫做A
    的頭像 發(fā)表于 04-20 10:31 ?1.3w次閱讀

    project復(fù)現(xiàn)過程踩到坑對應(yīng)的解決方案

    最近做的個 project 需要復(fù)現(xiàn) EMNLP 2020 Findings 的 TinyBERT,本文是對復(fù)現(xiàn)過程對踩到坑,以及對應(yīng)的解決方案和實現(xiàn)加速的
    的頭像 發(fā)表于 08-19 11:09 ?1920次閱讀

    STM32F745 USART1 Bootloader失敗原因分析與解決

    使用 STM32F745 進(jìn)行產(chǎn)品開發(fā)的時候,出現(xiàn)了使用 STM32CubeProgramer 無法通過 USART1 Bootloader 進(jìn)行程序升級的問題。為了解決客戶的問題,我在 NUCLEO-F746ZG 開發(fā)板上,復(fù)現(xiàn)
    的頭像 發(fā)表于 01-13 10:33 ?2821次閱讀
    STM32F745 USART1 <b class='flag-5'>Bootloader</b>失敗原因<b class='flag-5'>分析</b>與解決

    STM32 Bootloader實現(xiàn)

    主要采用256000bps串口傳輸BIN文件數(shù)據(jù),文件每10KB分為個數(shù)據(jù)包下發(fā),同時控制LED作為簡單的輸出;最后做CRC校驗,整個升級過程
    發(fā)表于 08-26 11:46

    無法使用內(nèi)置Bootloader的DFU方式進(jìn)行固件升級的問題進(jìn)行分析

    本文將針對客戶無法使用內(nèi)置Bootloader的DFU方式進(jìn)行固件升級的問題進(jìn)行分析
    發(fā)表于 08-06 09:52

    記錄次STM32H743 CANFD調(diào)試過程中的BUG

    記錄次STM32H743 CANFD調(diào)試過程中的BUG
    發(fā)表于 08-13 06:30

    bootloader的主要作用是什么

    :OTA:簡介bootloader是嵌入式開發(fā)領(lǐng)域非常重要的環(huán),特別是在商業(yè)領(lǐng)域。bootloader的主要作用是程序升級,也就是更新代碼。俗話說得好,人非圣賢,孰能無過,我們寫的代
    發(fā)表于 11-10 06:33

    記錄一下UI界面的思路與main函數(shù)掃描問題

    在上篇文章中,轉(zhuǎn)載了種上流的方法,使用狀態(tài)機、函數(shù)指針、結(jié)構(gòu)體、結(jié)構(gòu)體指針等,異常的上流,但是有些bug。目錄調(diào)試其他矩陣鍵盤掃描的思路暴力掃描另外記錄
    發(fā)表于 01-18 07:18

    記錄一下MCU存在ROM中的bootloader的三種方法

    網(wǎng)上查到的直接進(jìn)入TIVA系列MCU存在ROM中的bootloader的三種方法,記錄一下。使用 TM4C ROM bootloader 的三種方式:Flash Empty當(dāng) MCU
    發(fā)表于 02-14 06:45

    記錄一下RK3399 GPIO電源域配置過程

    1、RK3399 GPIO配置問題/電源域配置  平臺RK3399  OS Linux  Kernel 4.4  硬件需要拉高gpio1 A3來使能OTG功能,但是在配置dts后直沒有電壓,最后查下來是硬件與軟件的電源域配置不
    發(fā)表于 11-08 17:40

    Bootloader是什么Bootloader的介紹和過程詳細(xì)解

    3.Bootloader工作模式 4.Bootloader啟動過程5.vivi Bootloader源代碼分析 6.vivi
    發(fā)表于 12-11 17:33 ?48次下載
    <b class='flag-5'>Bootloader</b>是什么<b class='flag-5'>Bootloader</b>的介紹和<b class='flag-5'>過程</b>詳細(xì)解

    單片機的Bootloader可以實現(xiàn)用戶輕松升級程序

    并存儲在規(guī)定的Flash中。 這個過程與手機端更新APP類似。 以STM8單片機為例,該如何實現(xiàn)Bootloader呢?今天和大家分享一下。 01 什么是Bootloader
    的頭像 發(fā)表于 10-23 16:57 ?5097次閱讀
    單片機的<b class='flag-5'>Bootloader</b>可以實現(xiàn)用戶輕松<b class='flag-5'>升級</b>程序

    介紹一下CAN Bootloader整個實現(xiàn)過程

    對于大多數(shù)汽車軟件開發(fā)者來說,從客戶需求的角度,他們更多關(guān)心Bootloader的下載模式。
    發(fā)表于 06-29 11:13 ?2145次閱讀
    介紹<b class='flag-5'>一下</b>CAN <b class='flag-5'>Bootloader</b>的<b class='flag-5'>整個</b>實現(xiàn)<b class='flag-5'>過程</b>

    記錄一下uboot編譯的問題

    前幾天編譯uboot時遇到些問題,先記錄一下,linux嵌入式開發(fā)還是蠻意思的,要想玩的溜,就必須掌握最基本的uboot、kernel移植、適配、裁剪。
    的頭像 發(fā)表于 07-21 16:05 ?1047次閱讀
    <b class='flag-5'>記錄</b><b class='flag-5'>一下</b>uboot編譯的問題

    某些bug正常運行時會出現(xiàn),當(dāng)打開串口log時又不再復(fù)現(xiàn)怎么辦?

    。但是在某些情況,當(dāng)我們打開串口log時,這些bug就不再復(fù)現(xiàn)了。 這種情況,我們需要考慮以下幾個方面來解決這個問題。 首先,我們需要確定一下
    的頭像 發(fā)表于 10-31 14:37 ?474次閱讀
    主站蜘蛛池模板: 三级在线观看视频 | 久久永久免费视频 | 精品伊人久久香线蕉 | 四虎影视4hu4虎成人 | 国产成人综合日韩精品婷婷九月 | 色网站免费看 | 天天射夜夜操 | 精品国产理论在线观看不卡 | 亚洲成人高清在线观看 | 国产成人精品系列在线观看 | 亚洲综合一二三区 | 亚洲欧洲无码一区二区三区 | 日韩有色| 天天视频国产免费入口 | 午夜色站| aaa一级片| 67pao强力打造| 日本三级s级在线播放 | 日本免费人成黄页在线观看视频 | 色婷婷激情五月综合 | www.色午夜.com | 免费欧美黄色网址 | 婷婷狠狠 | 午夜啪| 免费黄视频在线观看 | 国产精品最新资源网 | 亚洲乱亚洲乱妇41p国产成人 | 四虎在线最新地址4hu | 成人深夜视频 | 中文字幕卡二和卡三的视频 | 亚洲国产精品久久精品怡红院 | 亚洲人成一区 | 天天干天天综合 | 青青青青久久精品国产h | 亚洲天堂三级 | 婷婷六月丁香午夜爱爱 | 女人张开腿等男人桶免费视频 | 亚洲一区二区三 | 美女被曹 | 日本啪啪小视频 | 亚洲午夜精品久久久久久成年 |