在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

如何利用現代嵌入式開發工具中的堆棧保護功能

li5236 ? 來源:IAR Systems ? 作者:IAR Systems ? 2022-03-29 14:50 ? 次閱讀

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

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

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

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

image.png

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

在實際應用實現堆棧保護

要使用堆棧保護,開發人員必須在應用中定義以下對象:

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

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

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

總結

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

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

    關注

    146

    文章

    17336

    瀏覽量

    352684
  • 嵌入式開發
    +關注

    關注

    18

    文章

    1035

    瀏覽量

    47728
收藏 人收藏

    評論

    相關推薦

    盤點工程師常用的嵌入式開發工具

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

    如何提高嵌入式代碼質量?

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

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

    實用干貨!嵌入式開發學習必備-RK3562演示Linux常用系統查詢命令(上)關注觸覺智能持續為大家帶來更多嵌入式開發內容
    的頭像 發表于 12-31 10:51 ?117次閱讀
    <b class='flag-5'>嵌入式開發</b>必備-RK3562演示Linux常用系統查詢命令(上)觸覺智能出品

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

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

    如何使用 RISC-V 進行嵌入式開發

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

    零基礎嵌入式開發學習路線

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

    嵌入式開發領域,有哪些好用的國產工具

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

    嵌入式開發常見問題排查

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

    嵌入式開發常用軟件有哪些?

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

    AWFlow:內置豐富的功能節點,簡化嵌入式開發流程

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

    聚焦嵌入式開發的合規性工具、項目管理工具、版本迭代工具應用

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

    嵌入式開發前景怎么樣?

    嵌入式開發前景非常廣闊,這主要得益于物聯網、人工智能、大數據等技術的快速發展,以及嵌入式系統在各個領域的廣泛應用。以下是對嵌入式開發前景的詳細分析
    的頭像 發表于 07-10 09:00 ?2949次閱讀
    <b class='flag-5'>嵌入式開發</b>前景怎么樣?

    嵌入式開發者的未來

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

    嵌入式開發就業前景怎么樣?

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

    fpga是嵌入式開發

    FPGA(現場可編程門陣列)與嵌入式開發之間確實存在一定的關聯,但它們在本質上是兩個不同的領域。
    的頭像 發表于 03-15 14:18 ?1145次閱讀
    主站蜘蛛池模板: 色综合久久综精品 | 中文字幕国产一区 | 久久精品福利 | 天天摸天天操免费播放小视频 | 国产精品亚洲一区二区三区在线播放 | 久久国产精品久久久久久久久久 | 中文字幕在线播放第一页 | 手机精品视频在线观看免费 | 日韩一卡 二卡 三卡 四卡 免费视频 | 天堂日本| 性夜黄a爽爽免费视频国产 羞羞答答xxdd影院欧美 | 亚洲a视频 | 真实的国产乱xxxx在线 | 一级片免费在线观看视频 | 天天摸天天看 | 天堂8资源在线官网资源 | 国产精品久久久精品三级 | 在线观看免费黄视频 | 国产成人啪午夜精品网站男同 | 韩国中文字幕在线观看 | 天天干天 | aaa一级最新毛片 | 欧美日韩一区二区三区视频 | 欧美区在线 | 大量国产后进翘臀视频 | 男人天堂综合网 | 日韩亚洲欧美日本精品va | 国产精品一区二区三区免费视频 | 一区二区三区电影 | 四虎影视永久在线精品免费播放 | 丁香婷婷综合五月综合色啪 | 日韩在线三级 | 日韩一级欧美一级在线观看 | 婷婷激情综合 | 不良视频在线观看 | 五月天婷五月天综合网在线 | 一级视频在线播放 | 色老头网站久久网 | 日本高清网站 | 国产自在自线午夜精品视频在 | 欧美怡红院免费全视频 |