国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在IAR Embedded Workbench中填充提高系統的健壯性

IAR愛亞系統 ? 來源:IAR愛亞系統 ? 作者:IAR愛亞系統 ? 2022-11-03 17:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

嵌入式軟件開發中一般會預留一些MCU資源(ROMRAMCPU Load等)以方便項目升級,即使是很成熟的產品,ROM資源也不會100%被使用。在嵌入式軟件構建(Build)過程中,編譯器(Compiler)和鏈接器(Linker)會放置對應的代碼和常量數據到ROM中。沒有被使用的ROM,編譯器和鏈接器會填充0或者不做任何處理(保留ROM擦除之后的值):比如為了半字/字(16-bit Halfword/32-bit Word)對齊,編譯器和鏈接器會填充0到相應的ROM字節 (8-bit Byte);而連續沒有使用的ROM,編譯器和鏈接器不做任何處理(保留ROM擦除之后的值0xFF)。正常情況下,MCU的程序指針(PC)會按照既定程序來運行。但是在有些極端情況下,程序指針有可能發生不可知的變化,從而指向了沒有使用的ROM地址,如果相應地址包含的指令執行一些非期望的操作,產生的影響是未知的(注意:嵌入式系統中未知的影響有可能是非常嚴重的,特別是一些高安全性的嵌入式系統)。為了提高系統的健壯性,通常需要往沒有使用的ROM填充相應的值,這個值可以讓系統快速恢復到可靠的狀態。

本文主要介紹如何在IAR Embedded Workbench中填充沒有使用的ROM來提高系統的健壯性。

填充沒有使用的ROM

在Linker中填充沒有使用的ROM

在IAR Embedded Workbench工程選項(Options)里面Linker選項里面Checksum:勾選“Fill unused code memory”, Fill pattern里面填充相應的值(注意,該值與使用的MCU/CPU相關,具體需要參考對應的CPU指令手冊。原則是該值能夠讓MCU/CPU快速恢復到指定的狀態)。這里以ARM Cortex-M為例,0xFF對應的是未定義的指令(Undefined Instruction),運行改指令會觸發對應的錯誤(Fault)。Start address和End address分別輸入ROM的起始地址和結束地址。

efbdf6b0-5b56-11ed-a3b6-dac502259ad0.png

構建(Build)成功之后,查看生成的map文件未使用的范圍部分(Unused ranges):

eff18a0c-5b56-11ed-a3b6-dac502259ad0.png

下載到目標板進行調試。

首先打開Memory窗口查看未使用的ROM范圍部分是不是之前指定填充的值:這里看到都是0xFF。

f021ded2-5b56-11ed-a3b6-dac502259ad0.png

運行程序一段時間并暫停。打開Register窗口,查看PC值。正常情況下,PC值不會跑到未使用的范圍部分:這里PC值是0x0800_89CA,不在未使用的范圍部分(0x0800_221C ~ 0x0800_2FFF,0x0800_9274 ~ 0x080F_FFFF)。

f050695a-5b56-11ed-a3b6-dac502259ad0.png

強制將PC值改變到未使用的范圍部分(0x0800_221C ~ 0x0800_2FFF,0x0800_9274 ~ 0x080F_FFFF),比如0x080F_FFFC:

f080c5dc-5b56-11ed-a3b6-dac502259ad0.png

運行程序。程序會跑到HardFault_Handler,因為執行未定義的指令會觸發錯誤(Fault)。

(注意:HardFault_Handler里面具體的操作需要根據系統的需求來定,但是最終一定要復位讓系統恢復到可靠的狀態。)

f09f5b3c-5b56-11ed-a3b6-dac502259ad0.png

可以查看對應的寄存器確認相關的Fault: Undefined instruction usage fault

f0db9520-5b56-11ed-a3b6-dac502259ad0.png

總結

本文主要分析了沒有使用的ROM的潛在風險并介紹了如何在IAR Embedded Workbench中填充沒有使用的ROM來提高系統的健壯性。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5196

    文章

    20404

    瀏覽量

    333052
  • 編譯器
    +關注

    關注

    1

    文章

    1672

    瀏覽量

    51407

原文標題:填充沒有使用的ROM來提高系統的健壯性

文章出處:【微信號:IAR愛亞系統,微信公眾號:IAR愛亞系統】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    IAR Embedded Workbench for Renesas RH850實現ROPI

    隨著汽車智能化程度的提高,集成的ECU(Electronic Control Unit)數量不斷增加,OTA(Over-the-Air)技術變得越來越普遍,它允許車輛通過無線網絡接收軟件更新,從而實現功能升級和性能改進,提高了便利
    的頭像 發表于 01-10 15:25 ?6552次閱讀
    在<b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> for Renesas RH850<b class='flag-5'>中</b>實現ROPI

    瑞薩RL78F2x系列MCU在三種開發環境下的選項字節與安全ID設置方法

    不同的開發環境,設置方法也各不相同。本文將手把手教你如何在主流的CS+for CC、e2studio和IAR Embedded Workbench
    的頭像 發表于 12-11 16:33 ?4546次閱讀
    瑞薩RL78F2x系列MCU在三種開發環境下的選項字節與安全ID設置方法

    漢思新材料:芯片底部填充膠可靠有哪些檢測要求

    芯片底部填充膠可靠有哪些檢測要求?芯片底部填充膠(Underfill)在先進封裝(如FlipChip、CSP、2.5D/3DIC等)起著至關重要的作用,主要用于緩解焊點因熱膨脹系數
    的頭像 發表于 11-21 11:26 ?422次閱讀
    漢思新材料:芯片底部<b class='flag-5'>填充</b>膠可靠<b class='flag-5'>性</b>有哪些檢測要求

    CW32 MCU用什么IDE開發?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發CW32 MCU應用,其中新版本IAR EWARM直接支持CW
    發表于 11-12 07:52

    何在IAR Embedded Workbench for Arm開發和調試Infineon MOTIX MCU

    Infineon MOTIX MCU集成了感應、控制和驅動電機的所有基本功能,支持繼電器、半橋和全橋直流和 BLDC 電機應用,為先進的電機控制應用提供全面的解決方案[1]。
    的頭像 發表于 11-08 14:24 ?8217次閱讀
    如<b class='flag-5'>何在</b><b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> for Arm<b class='flag-5'>中</b>開發和調試Infineon MOTIX MCU

    使用J-Link Attach NXP S32K3導致對應RAM區域被初始化成0xDEADBEEF

    IAR Embedded Workbench for Arm中使用J-Link Attach NXP S32K3的時候,會提示對應RAM區域被初始化成0xDEADBEEF,導致對應RAM區域的數據被“篡改”。
    的頭像 發表于 11-03 15:26 ?5291次閱讀
    使用J-Link Attach NXP S32K3導致對應RAM區域被初始化成0xDEADBEEF

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?
    發表于 08-26 07:49

    請問如何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?

    何在 IAR Embedded Workbench for ARM 開發環境啟用可配置數據閃存并設置大小?
    發表于 08-20 06:23

    「芯生態」杰發科技AC7870攜手IAR開發工具鏈,助推汽車電子全棧全域智能化落地

    IAR Embedded Workbench for Arm已全面支持杰發科技AutoChips車規級MCU AC7870,為其提供涵蓋開發、調試、優化等一站式服務
    的頭像 發表于 07-22 12:06 ?659次閱讀
    「芯生態」杰發科技AC7870攜手<b class='flag-5'>IAR</b>開發工具鏈,助推汽車電子全棧全域智能化落地

    溝槽填充技術介紹

    圖2.2是現代CMOS 器件剖面的示意圖。一般來說,水平方向的尺寸微縮幅度比垂直方向的幅度更大,這將導致溝槽(包含接觸孔)的深寬比(aspect ratio)也隨之提高,為避免溝槽填充過程中產生空穴
    的頭像 發表于 05-21 17:50 ?1408次閱讀
    溝槽<b class='flag-5'>填充</b>技術介紹

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數與變量內存布局優化精控方法

    在嵌入式軟件開發領域,MCU芯片軟件的架構設計與內存布局的精細規劃對系統性能和穩定性起著關鍵作用。本文檔聚焦于IAR Embedded Workbench環境下,為自研MCU芯片軟件提
    的頭像 發表于 04-30 16:38 ?737次閱讀
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片軟件函數與變量內存布局優化精控方法

    IAR全面支持芯馳科技車規MCU芯片E3650

    2025年4月22日,全場景智能車芯引領者芯馳科技與全球嵌入式軟件開發解決方案領導者IAR正式宣布,IAR Embedded Workbench for Arm已全面支持芯馳E3650
    的頭像 發表于 04-23 15:45 ?1368次閱讀

    極海半導體與IAR開展全面合作

    隨著各領域應用技術的不斷精進,嵌入式系統開發生態支持變得尤為重要。極海致力于為廣大客戶提供功能強大、高安全的開發工具,以便完成快速、簡單、高質量的開發。IAR Embedded Workbe
    的頭像 發表于 04-12 14:13 ?930次閱讀

    芯片底部填充填充不飽滿或滲透困難原因分析及解決方案

    芯片底部填充膠(Underfill)在封裝工藝若出現填充不飽滿或滲透困難的問題,可能導致芯片可靠下降(如熱應力失效、焊點開裂等)。以下是系統性
    的頭像 發表于 04-03 16:11 ?1579次閱讀
    芯片底部<b class='flag-5'>填充</b>膠<b class='flag-5'>填充</b>不飽滿或滲透困難原因分析及解決方案

    如何將項目從IAR遷移到Embedded Studio

    本文描述如何將IAR EWARM項目遷移到SEGGER Embedded Studio(簡稱SES)
    的頭像 發表于 02-25 17:11 ?1281次閱讀
    如何將項目從<b class='flag-5'>IAR</b>遷移到<b class='flag-5'>Embedded</b> Studio