汽车电子嵌入式技术篇(二) -autosar中的嵌入式系统函数的调用
1 程序的內(nèi)存分布
嵌入式系統(tǒng)中,一個(gè)函數(shù)調(diào)用時(shí),它的內(nèi)部機(jī)理是什么,執(zhí)行了哪些步驟?如圖1所示,先看 看 一個(gè)程序在運(yùn)行時(shí),它的內(nèi)存分布狀況。
圖1 系統(tǒng)中的內(nèi)存分布
當(dāng)程序運(yùn)行時(shí),它的代碼會(huì)被裝入內(nèi)存,保存在代碼區(qū),包括主函數(shù)和其他函數(shù)。主要有三塊內(nèi)存區(qū)域用來存放數(shù)據(jù):
第一塊是全局變量區(qū)域,存放了程序當(dāng)中的所有全局變量。由于全局變量的個(gè)數(shù)和大小是已知的,所以這一塊區(qū)域所占用的內(nèi)存大小在開始就確定下來,它們被稱為是靜態(tài)分配。位于此區(qū)域內(nèi)的變量,它們在程序的整個(gè)運(yùn)行過程當(dāng)中,都一直存在,只有當(dāng)整個(gè)程序運(yùn)行結(jié)束了, 這一塊內(nèi)存區(qū)域才會(huì)被釋放。
第二塊區(qū)域是棧(stack)區(qū)域,它包含了所有的棧幀。所謂的棧幀( stack frame),就是在調(diào)用函數(shù)時(shí),系統(tǒng)自動(dòng)地為該函數(shù)分配一塊內(nèi)存區(qū)域,用來保存它的運(yùn)行上下文、形參和局部變量等信息,這樣的一塊內(nèi)存區(qū)域,就叫做一個(gè)棧幀。棧幀是在函數(shù)調(diào)用時(shí)分配,當(dāng)函數(shù)調(diào)用結(jié)束,相應(yīng)的棧幀則被釋放。所以,對于一個(gè)函數(shù)的局部變量來說,只有當(dāng)函數(shù)調(diào)用發(fā)生時(shí),系統(tǒng)才會(huì)給這個(gè)函數(shù)的形參和局部變量分配存儲(chǔ)空間;當(dāng)函數(shù)調(diào)用結(jié)束后,這些局部變量就被釋放掉了。另外,棧區(qū)是由系統(tǒng)自動(dòng)分配,用戶不需要關(guān)心,所以也稱為是自動(dòng)分配。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的汽车电子嵌入式技术篇(二) -autosar中的嵌入式系统函数的调用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汽车电子嵌入式技术篇(一) -CRC-8
- 下一篇: AUTOSAR从入门到精通100讲(十八