哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

如果一個函數(shù)需要堆棧保護,那么該函數(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選項,即可針對被認定為需要保護的函數(shù)啟用堆棧保護。

image.png

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

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

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

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

· __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é)

由于今天全球半導體供應(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中的堆棧保護功能,因此可以以更短的研發(fā)周期,來實現(xiàn)嵌入式開發(fā)人員的研發(fā)目標。

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

    關(guān)注

    147

    文章

    19103

    瀏覽量

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

    關(guān)注

    18

    文章

    1167

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    PPEC Workbench,不止是IDE,更是嵌入式智能開發(fā)生態(tài)中樞

    當前嵌入式開發(fā)領(lǐng)域從不缺單一功能的IDE,缺的是能連接生態(tài)、驅(qū)動產(chǎn)業(yè)的新中樞。隨著工業(yè)智能化升級加速,芯片多元化、外設(shè)多樣化、需求個性化趨勢日益凸顯,傳統(tǒng)開發(fā)工具局限于基礎(chǔ)編碼需求,無法破解全流程
    的頭像 發(fā)表于 04-03 11:04 ?1791次閱讀
    PPEC Workbench,不止是IDE,更是<b class='flag-5'>嵌入式</b>智能<b class='flag-5'>開發(fā)</b>生態(tài)中樞

    低代碼可視化,破解嵌入式開發(fā)高門檻難題

    在工業(yè)控制、智能硬件、物聯(lián)網(wǎng)快速發(fā)展的今天,嵌入式開發(fā)作為核心支撐技術(shù),其高門檻卻成為行業(yè)發(fā)展的絆腳石。專業(yè)編碼要求高、新人上手慢、項目迭代滯后等問題,制約著人才儲備與技術(shù)普及
    的頭像 發(fā)表于 03-25 14:13 ?172次閱讀
    低代碼可視化,破解<b class='flag-5'>嵌入式開發(fā)</b>高門檻難題

    MIKROE與瑞薩簽署多年MCU嵌入式開發(fā)工具支持協(xié)議

    2026年1月28日: 作為一家通過提供基于成熟標準的創(chuàng)新式硬件、軟件產(chǎn)品來大幅縮短開發(fā)時間的嵌入式解決方案公司,MIKROE與總部位于東京的全球半導體解決方案提供商瑞薩電子簽署了一項為期多年
    發(fā)表于 01-28 12:04 ?1327次閱讀
    MIKROE與瑞薩簽署多年MCU<b class='flag-5'>嵌入式開發(fā)工具</b>支持協(xié)議

    嵌入式開發(fā)常用函數(shù)速查表

    嵌入式開發(fā),掌握常用函數(shù)的用法可以大大提高開發(fā)效率。無論是單片機初學者還是有一定經(jīng)驗的工程師,熟悉函數(shù)庫和調(diào)用方式都是必備技能。今天,我們?yōu)榇蠹艺硪环?b class='flag-5'>嵌入式開發(fā)常用函數(shù)速查表,覆
    的頭像 發(fā)表于 01-19 09:06 ?442次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>常用函數(shù)速查表

    嵌入式開發(fā)在AI時代的發(fā)展變革展望

    嵌入式系統(tǒng)在現(xiàn)代科技應(yīng)用廣泛,隨著工業(yè)場景的智能化應(yīng)用需求不斷增長,其復雜性隨之增加,傳統(tǒng)開發(fā)面臨諸多挑戰(zhàn)。IDE作為核心開發(fā)工具,需適應(yīng)
    的頭像 發(fā)表于 01-14 12:15 ?735次閱讀
    <b class='flag-5'>嵌入式開發(fā)</b>在AI時代的發(fā)展變革展望

    什么是嵌入式應(yīng)用開發(fā)?

    。 · ?醫(yī)療設(shè)備?:如心電圖儀、血壓計等。 開發(fā)工具和技術(shù) 嵌入式開發(fā)過程中常用的工具包括: · ?集成開發(fā)環(huán)境(IDE)?:用于編寫、編譯和調(diào)試代碼。 · ?編譯器?:將高級
    發(fā)表于 01-12 16:13

    恩智浦嵌入式HMI應(yīng)用開發(fā)工具GUI Guider 1.10.1全新上線

    恩智浦嵌入式HMI應(yīng)用開發(fā)工具GUI Guider 1.10.1全新上線啦!新版本重點聚焦性能提升、工具鏈升級、多點觸控體驗以及開發(fā)板適配,進一步優(yōu)化IDE界面,增強
    的頭像 發(fā)表于 12-28 09:45 ?1899次閱讀

    C語言單元測試在嵌入式軟件開發(fā)的作用及專業(yè)工具的應(yīng)用

    三、winAMS工具的核心功能與優(yōu)勢 winAMS是一款專業(yè)的嵌入式C語言單元測試工具,針對嵌入式開發(fā)的特殊需求提供了全面解決方案。其主要
    發(fā)表于 12-18 11:46

    分享一個嵌入式開發(fā)學習路線

    法,這些語法在嵌入式開發(fā)至關(guān)重要。 2. 技能進階期(2-3個月) 從51單片機過渡到主流的ARM Cortex-M系列(嵌入式就業(yè)核心平臺),學會使用STM32單片機,掌握嵌入式開發(fā)
    發(fā)表于 12-04 11:01

    嵌入式開發(fā)工具版本的選擇策略

    今天,我們就來結(jié)合嵌入式常見的幾個軟件(如Keil / IAR、VS Code 、Source Insight、VMware、Git等),簡單講一講嵌入式開發(fā)工具軟件版本選擇策略。 開發(fā)團隊軟件
    發(fā)表于 11-25 06:11

    嵌入式開發(fā)的關(guān)鍵點介紹

    嵌入式開發(fā)現(xiàn)代科技扮演著非常重要的角色。隨著物聯(lián)網(wǎng)的發(fā)展,嵌入式系統(tǒng)的需求也越來越大。嵌入式開發(fā)不僅需要
    發(fā)表于 11-13 08:12

    嵌入式開發(fā)工具的現(xiàn)狀和發(fā)展簡史

    集成開發(fā)環(huán)境(IDE)正在經(jīng)歷深刻變革。傳統(tǒng)意義上披著“圖形界面”外衣的編譯器,已不再能滿足當今的需求。隨著嵌入式系統(tǒng)變得越來越強大,而且AI開始融入幾乎所有設(shè)計,開發(fā)者需要的是能夠
    的頭像 發(fā)表于 11-11 09:49 ?1438次閱讀

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

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

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

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

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

    隨著物聯(lián)網(wǎng)、智能硬件的發(fā)展,嵌入式開發(fā)成為熱門技能之一。以下將為初學者提供一份詳細的嵌入式開發(fā)入門指南,涵蓋學習路徑、必備工具、推薦資源等內(nèi)容。 1. 嵌入式系統(tǒng)的定義與應(yīng)用
    發(fā)表于 05-15 09:29
    平果县| 怀远县| 崇信县| 鄂托克旗| 龙南县| 黄山市| 涡阳县| 曲沃县| 房产| 清水县| 黔江区| 浦城县| 宁海县| 汽车| 南木林县| 大英县| 威海市| 浮山县| 罗甸县| 上饶县| 北京市| 巫溪县| 临安市| 镇坪县| 临湘市| 门头沟区| 新龙县| 高碑店市| 当雄县| 马鞍山市| 千阳县| 海林市| 田林县| 中超| 万宁市| 平乡县| 广丰县| 碌曲县| 威海市| 合阳县| 肃宁县|