如何查找嵌入式軟件設計中缺陷分析[3]

終端與業(yè)務 責任編輯:ainichp 2011-01-12

摘要:2.確定調(diào)用樹中每個函數(shù)的堆棧用量。3.檢查每棵調(diào)用樹,確定從樹根到外部“樹葉”的哪條調(diào)用路徑需要使用的堆棧最多。4.將每個獨立線程調(diào)用樹的最大堆棧用量相加。5.確定每個中斷優(yōu)先級內(nèi)各中斷服務程序(ISR)的最大堆棧用量并計算其總和。但是,如果ISR本身沒有堆棧而使用被中斷線程的堆棧,則應將ISR使用的最大堆棧數(shù)

  2. 確定調(diào)用樹中每個函數(shù)的堆棧用量。

  3. 檢查每棵調(diào)用樹,確定從樹根到外部“樹葉”的哪條調(diào)用路徑需要使用的堆棧最多。

  4. 將每個獨立線程調(diào)用樹的最大堆棧用量相加。

  5. 確定每個中斷優(yōu)先級內(nèi)各中斷服務程序(ISR)的最大堆棧用量并計算其總和。但是,如果ISR本身沒有堆棧而使用被中斷線程的堆棧,則應將ISR使用的最大堆棧數(shù)加到各線程堆棧之上。

  6. 對于每個優(yōu)先級,加上中斷發(fā)生時用來保存處理器狀態(tài)的堆棧數(shù)。

  7.如果使用RTOS,則加上RTOS自身內(nèi)部用途需要的最大堆棧數(shù)(與應用代碼引發(fā)的系統(tǒng)調(diào)用不同,后者已包含在步驟2中)。

  除此之外,還有兩個重要事項需要考慮。首先,僅僅從高級語言源代碼建立的調(diào)用樹很可能并不完善。大部分編譯器采用運行時庫(run-time library)來優(yōu)化常用計算任務,如大值整數(shù)的乘除、浮點運算等,這些調(diào)用只在編譯器產(chǎn)生的匯編語言中才可見。運行時庫函數(shù)本身可能使用大量的堆棧空間,在分析時必須將它們包括進去。如果使用的是C++語言,則以下所有類型的函數(shù)(方法)也都必須包含到調(diào)用樹內(nèi):結構器、析構器、重載運算符、復制結構器和轉換函數(shù)。所有的函數(shù)指針也都必須進行解析,并且將它們調(diào)用的函數(shù)包含進分析之中。

[1]  [2]  [3]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內(nèi)容不斷變化與調(diào)整,本網(wǎng)站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內(nèi)容為準!

通信工程師備考資料免費領取

去領取

距離2025 通信工程師考試

還有
  • 3
  • 1
  • 3
專注在線職業(yè)教育23年

項目管理

信息系統(tǒng)項目管理師

廠商認證

信息系統(tǒng)項目管理師

信息系統(tǒng)項目管理師

!
咨詢在線老師!