色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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)桿工具中實現(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ù)退出時,代碼會驗證canary元素是否仍然包含初始化值。如果該數(shù)值被改變,函數(shù) __stack_chk_fail就會被調(diào)用。

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

image.png

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

在實際應(yīng)用實現(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ā)周期,來實現(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)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17316

    瀏覽量

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

    關(guān)注

    18

    文章

    1035

    瀏覽量

    47664
收藏 人收藏

    評論

    相關(guān)推薦

    如何提高嵌入式代碼質(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)查詢命令(上)觸覺智能出品

    實用干貨!嵌入式開發(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è)計、制造和銷售基于RISC-V的處理器,這為嵌入式開發(fā)提供了極大的靈活性和創(chuàng)新空間。以下是使用RISC-V進(jìn)行嵌入式開發(fā)的基本步驟: 一
    的頭像 發(fā)表于 12-11 17:32 ?695次閱讀

    基于Xilinx ZYNQ7000 FPGA嵌入式開發(fā)實戰(zhàn)指南

    電子發(fā)燒友網(wǎng)站提供《基于Xilinx ZYNQ7000 FPGA嵌入式開發(fā)實戰(zhàn)指南.pdf》資料免費(fèi)下載
    發(fā)表于 12-10 15:31 ?2次下載

    零基礎(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 ?255次閱讀

    嵌入式開發(fā)常見問題排查

    嵌入式開發(fā)問題排查很多人認(rèn)為嵌入式開發(fā)很難,主要是因為在這個過程中常常會遇到各式各樣的問題。這些問題的復(fù)雜性和多樣性使得許多人感到困惑和無所適從。然而,如果將這些問題逐一拆解,實際上大部分都可以
    的頭像 發(fā)表于 09-22 08:04 ?399次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>常見問題排查

    嵌入式開發(fā)常用軟件有哪些?

    查看源代碼,注釋文檔等非常方便,因為它查找,定位,彩色顯示等功能非常強(qiáng)大。開發(fā)人員會當(dāng)成源代碼閱讀工具使用。 4.Keil uVision5 Keil 5 軟件是一款功能強(qiáng)大的
    發(fā)表于 09-09 15:22

    AWFlow:內(nèi)置豐富的功能節(jié)點(diǎn),簡化嵌入式開發(fā)流程

    AWFlow突破傳統(tǒng)C語言限制的嵌入式開發(fā)框架,通過封裝硬件驅(qū)動和系統(tǒng)平臺,集成通用軟件功能與通信協(xié)議,助力開發(fā)者專注于核心業(yè)務(wù),提升效率,縮短周期,迅速適應(yīng)市場變化。在傳統(tǒng)的嵌入式
    的頭像 發(fā)表于 08-09 08:25 ?328次閱讀
    AWFlow:內(nèi)置豐富的<b class='flag-5'>功能</b>節(jié)點(diǎn),簡化<b class='flag-5'>嵌入式開發(fā)</b>流程

    聚焦嵌入式開發(fā)的合規(guī)性工具、項目管理工具、版本迭代工具應(yīng)用

    ,就嵌入式開發(fā)與管理領(lǐng)域的最新趨勢、工具選擇以及DevSecOps實踐應(yīng)用等方面展開了深入探討。 本期對話龍智資深DevSecOps顧問徐晨暉, 分享嵌入式開發(fā)的合規(guī)性
    的頭像 發(fā)表于 07-29 15:15 ?625次閱讀

    嵌入式開發(fā)前景怎么樣?

    嵌入式開發(fā)前景非常廣闊,這主要得益于物聯(lián)網(wǎng)、人工智能、大數(shù)據(jù)等技術(shù)的快速發(fā)展,以及嵌入式系統(tǒng)在各個領(lǐng)域的廣泛應(yīng)用。以下是對嵌入式開發(fā)前景的詳細(xì)分析
    的頭像 發(fā)表于 07-10 09:00 ?2856次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>前景怎么樣?

    嵌入式開發(fā)者的未來

    和測試這些產(chǎn)品的硬件和軟件。汽車行業(yè):現(xiàn)代汽車包含大量的嵌入式系統(tǒng),例如車載娛樂系統(tǒng)、發(fā)動機(jī)控制單元、自動駕駛系統(tǒng)等。在這個領(lǐng)域,工程師可以從事嵌入式軟件開發(fā)、系統(tǒng)集
    的頭像 發(fā)表于 06-23 08:10 ?422次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>者的未來

    嵌入式開發(fā)就業(yè)前景怎么樣?

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

    fpga是嵌入式開發(fā)

    FPGA(現(xiàn)場可編程門陣列)與嵌入式開發(fā)之間確實存在一定的關(guān)聯(lián),但它們在本質(zhì)上是兩個不同的領(lǐng)域。
    的頭像 發(fā)表于 03-15 14:18 ?1125次閱讀
    主站蜘蛛池模板: 亚洲一区高清 | 免费看黄软件 | 2017日日干| 国内精品视频久久久久免费 | 亚洲在线国产日韩欧美 | 最近2019中文字幕免费 | 毛片无码免费无码播放 | 午夜福利92看看电影80 | 国产亚洲精品久久久999无毒 | 综合一区无套内射中文字幕 | 国产成人无码一区AV在线观看 | 国产69精品久久久久乱码韩国 | 国产欧美日韩国产高清 | 日韩一区二区三区视频在线观看 | 啪啪羞羞GIF男女0OXX动态图 | chinese情侣自拍啪hd | 日韩欧无码一区二区三区免费不卡 | 国产免费播放一区二区三区 | 歪歪漫画羞羞漫画国产 | 乌克兰成人性色生活片 | 在线视频 日韩视频二区 | 金发欧美一区在线观看 | 天天干夜夜曰 | 国产成人免费网站在线观看 | FREESEXVIDEO 性老少配 | 久久久久久久国产精品视频 | 国产在线精品亚洲另类 | 一个人的免费完整在线观看HD | 午夜射精日本三级 | 91天仙tv嫩模福利 | 国产亚洲精品久久久久久白晶晶 | 久久精品国产免费 | 中文字幕在线免费观看视频 | 国产伦精品一区二区免费 | 2022精品福利在线小视频 | 免费在线视频成人 | 无码AV毛片色欲欧洲美洲 | 中文中幕无码亚洲视频 | 色视频色露露永久免费观看 | 99国产在线视频 | 人妻少妇久久久久久97人妻 |