18video性欧美19sex,欧美高清videosddfsexhd,性少妇videosexfreexxx片中国,激情五月激情综合五月看花,亚洲人成网77777色在线播放

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

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

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

如何利用現(xiàn)代嵌入式開發(fā)工具中的堆棧保護(hù)功能

li5236 ? 來源:IAR Systems ? 作者:IAR Systems ? 2022-03-29 14:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在開發(fā)以MCU為核心的嵌入式系統(tǒng)時,當(dāng)軟件程序向預(yù)設(shè)的數(shù)據(jù)結(jié)構(gòu)(通常是一個固定長度的緩沖區(qū))之外的程序調(diào)用堆棧的內(nèi)存地址范圍寫入數(shù)據(jù)時,就會發(fā)生堆棧緩沖區(qū)溢出。這幾乎必然會損壞附近的數(shù)據(jù),甚至?xí)淖兎祷睾瘮?shù)。如果是有意為之,則這就是我們熟知的堆棧粉碎。防范堆棧緩沖區(qū)溢出的一種方法是使用堆棧canary,因其類似于在煤礦中使用金絲雀偵測毒氣而得名。目前,在以IAR Embedded Workbench為代表的領(lǐng)先開發(fā)工具的所有最新版本中,均已支持堆棧保護(hù)功能。

堆棧保護(hù)功能已經(jīng)成為最新嵌入式開發(fā)工具中必要的功能,但要在諸如IAR Embedded Workbench for Arm這樣的行業(yè)標(biāo)桿工具中實(shí)現(xiàn)堆棧保護(hù),就要使用一種啟發(fā)式算法來確認(rèn)一個函數(shù)是否需要堆棧保護(hù)。如果任何函數(shù)內(nèi)定義的局部變量為數(shù)組類型或包含數(shù)組類型成員的結(jié)構(gòu)類型,則該函數(shù)就需要堆棧保護(hù)。此外,如果任何局部變量的地址被傳播到函數(shù)之外,則該函數(shù)也需要堆棧保護(hù)。

如果一個函數(shù)需要堆棧保護(hù),那么該函數(shù)的局部變量將被按序排放,將數(shù)組類型的變量在函數(shù)堆棧中被放置在盡可能高的地址。在這些變量之后,會放置一個canary元素。在函數(shù)入口處,canary被初始化。初始化值取自全局變量 __stack_chk_guard。在函數(shù)退出時,代碼會驗(yàn)證canary元素是否仍然包含初始化值。如果該數(shù)值被改變,函數(shù) __stack_chk_fail就會被調(diào)用。

以被廣泛使用的IAR Embedded Workbench for Arm嵌入式開發(fā)工具為例,使用Project》Options》C/C++ Compiler》Code》Stack protection選項(xiàng),即可針對被認(rèn)定為需要保護(hù)的函數(shù)啟用堆棧保護(hù)。

image.png

或者,您也可以使用Project》Options》C/C++ Compiler》Extra Options頁面,指定 --stack_protection命令行來啟用堆棧保護(hù)功能。

在實(shí)際應(yīng)用實(shí)現(xiàn)堆棧保護(hù)

要使用堆棧保護(hù),開發(fā)人員必須在應(yīng)用中定義以下對象:

· extern uint32_t __stack_chk_guard全局變量 __stack_chk_guard在第一次使用前必須被初始化。如果初始化值是隨機(jī)的,則安全性會更高。

· __interwork __nounwind __noreturn void __stack_chk_fail(void)__stack_chk_fail函數(shù)的作用是通知發(fā)生了錯誤,然后終止應(yīng)用。請注意,這個函數(shù)的返回地址將指向失效函數(shù)。

arm\src\lib\runtime目錄下的文件stack_protection.c提供了 __stack_chk_guard和 __stack_chk_fail函數(shù)的參考模板。

總結(jié)

由于今天全球半導(dǎo)體供應(yīng)鏈緊張狀況尚未得到緩解,因此許多MCU等嵌入式應(yīng)用需要利用開發(fā)工具來保持核心技術(shù)和器件供應(yīng)上的靈活性,并最大限度地在不同硬件平臺上重用已完成的軟件。在這種情況下,無論是MCU芯片開發(fā)商還是嵌入式系統(tǒng)工程師,都需要利用那些已被業(yè)界最廣泛使用的開發(fā)工具,如IAR Embedded Workbench for Arm。由于這些工具也是其開發(fā)商和行業(yè)領(lǐng)先的MCU供應(yīng)商多年合作的成果,可以針對不同的硬件資源體系和應(yīng)用環(huán)境給出相應(yīng)的幫助,如IAR Embedded Workbench中的堆棧保護(hù)功能,因此可以以更短的研發(fā)周期,來實(shí)現(xiàn)嵌入式開發(fā)人員的研發(fā)目標(biāo)。

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

    關(guān)注

    147

    文章

    18408

    瀏覽量

    380021
  • 嵌入式開發(fā)
    +關(guān)注

    關(guān)注

    18

    文章

    1087

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    新一代嵌入式開發(fā)平臺 AMD嵌入式軟件和工具2025.1版現(xiàn)已推出

    AMD 2025.1 版嵌入式軟件和工具是面向新一代嵌入式系統(tǒng)開發(fā)而打造的綜合平臺,全面加速概念構(gòu)想到部署落地。 2025.1 版嵌入式軟件
    的頭像 發(fā)表于 08-20 09:15 ?3373次閱讀

    嵌入式開發(fā)就業(yè)還有前景嗎?

    嵌入式的發(fā)展前景如何呢?隨著科技的飛速發(fā)展,嵌入式開發(fā)在各個領(lǐng)域的應(yīng)用越來越廣泛,因此嵌入式開發(fā)的就業(yè)前景也備受關(guān)注。以下將從智能家居、醫(yī)療設(shè)備、工業(yè)控制、汽車電子、航空航天等方面,探討嵌入式
    發(fā)表于 07-16 10:47

    RIGOL MSO5000系列混合信號示波器如何加速嵌入式開發(fā)

    MSO5000系列混合信號示波器憑借其高性能參數(shù)、多功能集成和智能化分析能力,為嵌入式開發(fā)提供了全面的解決方案,大幅提升了調(diào)試效率。本文將從技術(shù)特性、應(yīng)用場景及實(shí)戰(zhàn)技巧三個方面,深入探討MSO5000如何加速嵌入式開發(fā)。 ?
    的頭像 發(fā)表于 06-24 12:08 ?294次閱讀
    RIGOL MSO5000系列混合信號示波器如何加速<b class='flag-5'>嵌入式開發(fā)</b>

    嵌入式開發(fā)入門指南:從零開始學(xué)習(xí)嵌入式

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開發(fā)成為熱門技能之一。以下將為初學(xué)者提供一份詳細(xì)的嵌入式開發(fā)入門指南,涵蓋學(xué)習(xí)路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應(yīng)用
    發(fā)表于 05-15 09:29

    嵌入式開發(fā):高門檻的系統(tǒng)性工程與 996 的行業(yè)困局

    嵌入式開發(fā)的門檻,往往被培訓(xùn)機(jī)構(gòu)和表象所掩蓋。許多人誤以為 “用 C 語言寫個跑在 ARM 上的程序” 就是嵌入式,實(shí)則連皮毛都未觸及。真正的嵌入式開發(fā)是硬件與軟件深度融合的系統(tǒng)性工程,需跨越三重壁壘
    的頭像 發(fā)表于 04-09 11:06 ?530次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>:高門檻的系統(tǒng)性工程與 996 的行業(yè)困局

    BlackBerry QNX推出通用嵌入式開發(fā)平臺

    BlackBerry有限公司(紐交所代碼:BB;多倫多證券交易所代碼:BB)旗下部門QNX今日宣布推出QNX 通用嵌入式開發(fā)平臺(General Embedded Development
    的頭像 發(fā)表于 03-11 16:04 ?824次閱讀

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實(shí)戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機(jī)CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發(fā)表于 03-03 15:15 ?905次閱讀
    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32<b class='flag-5'>嵌入式開發(fā)</b>實(shí)戰(zhàn)正式出版

    如何成為嵌入式開發(fā)工程師?

    如何成為嵌入式開發(fā)工程師? 成為嵌入式開發(fā)工程師通常需要掌握一系列技能和知識,并且在實(shí)踐不斷積累經(jīng)驗(yàn)。以下是一些基本步驟和建議: 1. 基礎(chǔ)教育:- 獲取電子工程、計(jì)算機(jī)科學(xué)或相關(guān)領(lǐng)域的學(xué)位
    發(fā)表于 02-19 10:39

    盤點(diǎn)工程師常用的嵌入式開發(fā)工具

    嵌入式開發(fā)涉及硬件與軟件的緊密結(jié)合,開發(fā)工具的選擇對效率和質(zhì)量至關(guān)重要。以下是嵌入式開發(fā)中常用的工具分類及代表性工具,涵蓋
    的頭像 發(fā)表于 02-07 10:06 ?3220次閱讀

    如何提高嵌入式代碼質(zhì)量?

    技術(shù) 現(xiàn)代嵌入式開發(fā)工具和測試技術(shù)可以極大地提升代碼質(zhì)量和開發(fā)效率: 1. 靜態(tài)分析工具:如Coverity、Lint等,能夠幫助發(fā)現(xiàn)潛在的代碼缺陷和安全漏洞。 2. 單元測試和集
    發(fā)表于 01-15 10:48

    嵌入式開發(fā)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺智能出品

    實(shí)用干貨!嵌入式開發(fā)學(xué)習(xí)必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)關(guān)注觸覺智能持續(xù)為大家?guī)砀?b class='flag-5'>嵌入式開發(fā)內(nèi)容
    的頭像 發(fā)表于 12-31 10:51 ?117次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>必備-RK3562演示Linux常用系統(tǒng)查詢命令(上)觸覺智能出品

    嵌入式工程師常用的開發(fā)工具有哪些?

    。 一、集成開發(fā)環(huán)境(IDE) IDE是嵌入式開發(fā)的核心工具之一。例如 Keil MDK,它支持多種微控制器架構(gòu),提供了強(qiáng)大的代碼編輯、編譯、調(diào)試功能。工程師可以在一個集成的環(huán)境
    發(fā)表于 12-20 15:29

    如何使用 RISC-V 進(jìn)行嵌入式開發(fā)

    RISC-V是一種開源的指令集架構(gòu)(ISA),它允許任何人設(shè)計(jì)、制造和銷售基于RISC-V的處理器,這為嵌入式開發(fā)提供了極大的靈活性和創(chuàng)新空間。以下是使用RISC-V進(jìn)行嵌入式開發(fā)的基本步驟: 一
    的頭像 發(fā)表于 12-11 17:32 ?2513次閱讀

    零基礎(chǔ)嵌入式開發(fā)學(xué)習(xí)路線

    是一種集成了處理器、內(nèi)存、輸入輸出接口等功能的微型電路板,它是嵌入式開發(fā)的基礎(chǔ)硬件設(shè)備。學(xué)習(xí)單片機(jī)可以讓你了解硬件的基本原理和操作方法,比如如何連接電源、如何配置引腳、如何編寫驅(qū)動程序等。目前應(yīng)用最多
    發(fā)表于 10-25 15:55

    嵌入式開發(fā)領(lǐng)域,有哪些好用的國產(chǎn)工具?

    嵌入式開發(fā)領(lǐng)域,好用的國產(chǎn)工具不斷涌現(xiàn),為開發(fā)者提供了更多選擇。以下是一些備受推崇的國產(chǎn)工具: INTEWORK-DDC(Diagnostic Database Convertor)
    的頭像 發(fā)表于 10-23 09:21 ?803次閱讀