一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

如何在IAR Embedded Workbench中填充提高系統(tǒng)的健壯性

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

掃碼添加小助手

加入工程師交流群

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

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

填充沒有使用的ROM

在Linker中填充沒有使用的ROM

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

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

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

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

下載到目標(biāo)板進(jìn)行調(diào)試。

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

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

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

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

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

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

運(yùn)行程序。程序會(huì)跑到HardFault_Handler,因?yàn)閳?zhí)行未定義的指令會(huì)觸發(fā)錯(cuò)誤(Fault)。

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

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

可以查看對應(yīng)的寄存器確認(rèn)相關(guān)的Fault: Undefined instruction usage fault

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

總結(jié)

本文主要分析了沒有使用的ROM的潛在風(fēng)險(xiǎn)并介紹了如何在IAR Embedded Workbench中填充沒有使用的ROM來提高系統(tǒng)的健壯性。

審核編輯:郭婷

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

    關(guān)注

    5149

    文章

    19655

    瀏覽量

    317285
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1661

    瀏覽量

    50193

原文標(biāo)題:填充沒有使用的ROM來提高系統(tǒng)的健壯性

文章出處:【微信號:IAR愛亞系統(tǒng),微信公眾號:IAR愛亞系統(tǒng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    溝槽填充技術(shù)介紹

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

    基于 IAR Embedded Workbench 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    在嵌入式軟件開發(fā)領(lǐng)域,MCU芯片軟件的架構(gòu)設(shè)計(jì)與內(nèi)存布局的精細(xì)規(guī)劃對系統(tǒng)性能和穩(wěn)定性起著關(guān)鍵作用。本文檔聚焦于IAR Embedded Workbench環(huán)境下,為自研MCU芯片軟件提
    的頭像 發(fā)表于 04-30 16:38 ?286次閱讀
    基于 <b class='flag-5'>IAR</b> <b class='flag-5'>Embedded</b> <b class='flag-5'>Workbench</b> 的自研 MCU 芯片軟件函數(shù)與變量內(nèi)存布局優(yōu)化精控方法

    IAR全面支持芯馳科技車規(guī)MCU芯片E3650

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

    極海半導(dǎo)體與IAR開展全面合作

    隨著各領(lǐng)域應(yīng)用技術(shù)的不斷精進(jìn),嵌入式系統(tǒng)開發(fā)生態(tài)支持變得尤為重要。極海致力于為廣大客戶提供功能強(qiáng)大、高安全的開發(fā)工具,以便完成快速、簡單、高質(zhì)量的開發(fā)。IAR Embedded Workbe
    的頭像 發(fā)表于 04-12 14:13 ?509次閱讀

    如何將項(xiàng)目從IAR遷移到Embedded Studio

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

    IAR與紫光同芯合作,全面支持THA6系列汽車芯片

    近日,全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案提供商IAR與業(yè)內(nèi)知名的芯片及解決方案提供商紫光同芯攜手宣布,最新版本的IAR Embedded Work
    的頭像 發(fā)表于 12-27 11:46 ?1282次閱讀

    PCB設(shè)計(jì)填充銅和網(wǎng)格銅有什么區(qū)別?

    填充銅(SolidCopper)和網(wǎng)格銅(HatchedCopper)是PCB設(shè)計(jì)兩種不同的鋪銅方式,它們在電氣性能、熱管理、加工工藝和成本方面存在一些區(qū)別:1.電氣性能:填充銅:提供連續(xù)的導(dǎo)電層
    的頭像 發(fā)表于 12-10 16:45 ?101次閱讀
    PCB設(shè)計(jì)<b class='flag-5'>中</b><b class='flag-5'>填充</b>銅和網(wǎng)格銅有什么區(qū)別?

    PCB設(shè)計(jì)填充銅和網(wǎng)格銅有什么區(qū)別?

    填充銅(SolidCopper)和網(wǎng)格銅(HatchedCopper)是PCB設(shè)計(jì)兩種不同的鋪銅方式,它們在電氣性能、熱管理、加工工藝和成本方面存在一些區(qū)別:1.電氣性能:填充銅:提供連續(xù)的導(dǎo)電層
    的頭像 發(fā)表于 12-10 11:18 ?80次閱讀
    PCB設(shè)計(jì)<b class='flag-5'>中</b><b class='flag-5'>填充</b>銅和網(wǎng)格銅有什么區(qū)別?

    IAR Systems最新版開發(fā)環(huán)境全面賦能芯海科技32位MCU芯片

    隨著IAR Embedded Workbench for Arm 9.32版本對芯??萍糓CU系列的全面支持,雙方將攜手為開發(fā)者提供更加高效、便捷的開發(fā)體驗(yàn),共同推動(dòng)物聯(lián)網(wǎng)、工業(yè)控制、消費(fèi)電子等領(lǐng)域的創(chuàng)新發(fā)展。
    的頭像 發(fā)表于 11-14 14:47 ?937次閱讀
    <b class='flag-5'>IAR</b> Systems最新版開發(fā)環(huán)境全面賦能芯??萍?2位MCU芯片

    IAR支持旗芯微車規(guī)級MCU,助力汽車行業(yè)智能化發(fā)展

    在全球汽車電子產(chǎn)業(yè)迅猛發(fā)展的背景下,IAR與蘇州旗芯微半導(dǎo)體有限公司(簡稱“旗芯微”)攜手宣布了一項(xiàng)重大合作成果:IAR Embedded Workbench for Arm 9.60
    的頭像 發(fā)表于 10-23 11:09 ?1261次閱讀

    底部填充工藝在倒裝芯片上的應(yīng)用

    底部填充工藝在倒裝芯片(FlipChip)上的應(yīng)用是一種重要的封裝技術(shù),旨在提高封裝的可靠和延長電子產(chǎn)品的使用壽命。以下是該工藝的主要應(yīng)用和優(yōu)勢:增強(qiáng)可靠:倒裝芯片封裝
    的頭像 發(fā)表于 07-19 11:16 ?1259次閱讀
    底部<b class='flag-5'>填充</b>工藝在倒裝芯片上的應(yīng)用

    IAR與芯科集成攜手,賦能中國汽車行業(yè)RISC-V MCU創(chuàng)新研發(fā)

    2024年7月16日,全球嵌入式系統(tǒng)開發(fā)軟件領(lǐng)域的領(lǐng)軍者IAR Systems與芯科集成電路(簡稱“芯科集成”)聯(lián)合宣布了一項(xiàng)重要合作成果:IAR Embedded
    的頭像 發(fā)表于 07-17 14:37 ?2.8w次閱讀

    ?IAR全面支持芯科集成CX3288系列車規(guī)RISC-V MCU

    全球領(lǐng)先的嵌入式系統(tǒng)開發(fā)軟件解決方案供應(yīng)商IAR與芯科集成電路(以下簡稱“芯科集成”)聯(lián)合宣布,最新版本IAR Embedded Workbench
    的頭像 發(fā)表于 07-16 17:32 ?1108次閱讀
    ?<b class='flag-5'>IAR</b>全面支持芯科集成CX3288系列車規(guī)RISC-V MCU

    芯科集成與IAR展開生態(tài)合作,IAR全面支持CX3288系列車規(guī)MCU

    IAR與芯科集成電路(以下簡稱“芯科集成”)聯(lián)合宣布,最新版本IAR Embedded Workbench for RISC-V 3.30.2功能安全版已全面支持芯科集成CX3288系
    發(fā)表于 07-16 16:17 ?478次閱讀

    IAR全面支持芯馳科技E3系列車規(guī)MCU產(chǎn)品E3119/E3118

    IAR與全場景智能車芯引領(lǐng)者芯馳科技宣布進(jìn)一步擴(kuò)大合作,最新版IAR Embedded Workbench for Arm已全面支持芯馳科技的E3119/E3118車規(guī)級MCU產(chǎn)品
    的頭像 發(fā)表于 07-15 10:16 ?268次閱讀
    <b class='flag-5'>IAR</b>全面支持芯馳科技E3系列車規(guī)MCU產(chǎn)品E3119/E3118