[發(fā)明專(zhuān)利]嵌入式系統(tǒng)棧溢出保護(hù)方法、電子設(shè)備及可讀存儲(chǔ)介質(zhì)在審
| 申請(qǐng)?zhí)枺?/td> | 202310737904.1 | 申請(qǐng)日: | 2023-06-21 |
| 公開(kāi)(公告)號(hào): | CN116643907A | 公開(kāi)(公告)日: | 2023-08-25 |
| 發(fā)明(設(shè)計(jì))人: | 劉洪洋 | 申請(qǐng)(專(zhuān)利權(quán))人: | 上海偉世通汽車(chē)電子系統(tǒng)有限公司 |
| 主分類(lèi)號(hào): | G06F11/07 | 分類(lèi)號(hào): | G06F11/07 |
| 代理公司: | 上海遠(yuǎn)同律師事務(wù)所 31307 | 代理人: | 許力 |
| 地址: | 201319 上海市浦東*** | 國(guó)省代碼: | 上海;31 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 嵌入式 系統(tǒng) 溢出 保護(hù) 方法 電子設(shè)備 可讀 存儲(chǔ) 介質(zhì) | ||
本發(fā)明提供一種嵌入式系統(tǒng)棧溢出保護(hù)方法、電子設(shè)備及可讀存儲(chǔ)介質(zhì),其將內(nèi)存保護(hù)單元的region區(qū)域作為任務(wù)的棧區(qū)域,在切換任務(wù)時(shí),僅使目標(biāo)任務(wù)的region區(qū)域具有讀寫(xiě)權(quán)限,而其它region區(qū)域都禁止訪問(wèn),這樣目標(biāo)任務(wù)運(yùn)行過(guò)程中,如果其region區(qū)域的棧頂或者棧底溢出,都會(huì)觸發(fā)內(nèi)存保護(hù)單元的訪問(wèn)權(quán)限錯(cuò)誤中斷,從而實(shí)現(xiàn)棧溢出保護(hù),與現(xiàn)有技術(shù)相比,可以避免漏檢,不需要額外劃分內(nèi)存做檢測(cè)區(qū)域,節(jié)省了棧區(qū)內(nèi)存,并且對(duì)能檢測(cè)到棧底部和頂部的溢出。
技術(shù)領(lǐng)域
本發(fā)明屬于棧溢出保護(hù)技術(shù)領(lǐng)域,尤其涉及一種嵌入式系統(tǒng)棧溢出保護(hù)方法、電子設(shè)備及可讀存儲(chǔ)介質(zhì)。
背景技術(shù)
在現(xiàn)有嵌入式系統(tǒng)中,需要為每個(gè)任務(wù)分配堆棧,針對(duì)棧溢出,通常采用以下兩種方式應(yīng)對(duì):
一、在棧的末端預(yù)設(shè)一段內(nèi)存區(qū)域,然后在程序運(yùn)行前采用特殊的值填充該區(qū)域(通常用0xaaaaaaaa或者0xffffffff),系統(tǒng)定時(shí)或者定期對(duì)比該區(qū)域的值與所設(shè)的特殊值是否一致,一旦檢測(cè)到不一致說(shuō)明堆棧使用的到了末尾,代表堆棧有溢出。
二、把棧末端的一段內(nèi)存區(qū)域設(shè)置為MPU(內(nèi)存保護(hù)單元,MemoryProtectionUnit)保護(hù)區(qū),一旦該區(qū)域被訪問(wèn),代表堆棧有溢出,會(huì)觸發(fā)MPU訪問(wèn)異常中斷。
在第一種方式中,由于大數(shù)組局部變量可能直接越過(guò)預(yù)設(shè)區(qū)域,存在漏檢的風(fēng)險(xiǎn),第二種方式相較于第一種,檢測(cè)實(shí)時(shí)性較高,能大大降低漏檢的風(fēng)險(xiǎn),然而兩種方式都要額外劃分內(nèi)存做檢測(cè)區(qū)域,浪費(fèi)棧區(qū)內(nèi)存,并且只能檢測(cè)到棧底部溢出,無(wú)法檢測(cè)到棧頂部的溢出。
發(fā)明內(nèi)容
基于此,針對(duì)上述技術(shù)問(wèn)題,提供一種嵌入式系統(tǒng)棧溢出保護(hù)方法、電子設(shè)備及可讀存儲(chǔ)介質(zhì)。
本發(fā)明采用的技術(shù)方案如下:
作為本發(fā)明的第一方面,提供一種嵌入式系統(tǒng)棧溢出保護(hù)方法,包括:
為每個(gè)任務(wù)分配內(nèi)存保護(hù)單元的region區(qū)域作為相應(yīng)的棧區(qū)域;
每次切換任務(wù)前,先關(guān)閉所述內(nèi)存保護(hù)單元和當(dāng)前任務(wù)的棧區(qū)域,再打開(kāi)目標(biāo)任務(wù)的棧區(qū)域,并為所述目標(biāo)任務(wù)的棧區(qū)域分配讀寫(xiě)權(quán)限,同時(shí),關(guān)閉背景region;
打開(kāi)所述內(nèi)存保護(hù)單元,切換至所述目標(biāo)任務(wù)。
作為本發(fā)明的第二方面,提供一種嵌入式系統(tǒng)棧溢出保護(hù)裝置,包括:
第一模塊,用于為每個(gè)任務(wù)分配內(nèi)存保護(hù)單元的region區(qū)域作為相應(yīng)的棧區(qū)域;
第二模塊,用于每次切換任務(wù)前,先關(guān)閉所述內(nèi)存保護(hù)單元和當(dāng)前任務(wù)的棧區(qū)域,再打開(kāi)目標(biāo)任務(wù)的棧區(qū)域,并為所述目標(biāo)任務(wù)的棧區(qū)域分配讀寫(xiě)權(quán)限,同時(shí),關(guān)閉背景region;
第三模塊,用于打開(kāi)所述內(nèi)存保護(hù)單元,切換至所述目標(biāo)任務(wù)。
作為本發(fā)明的第三方面,提供一種電子設(shè)備,包括存儲(chǔ)模塊,所述存儲(chǔ)模塊包括由處理器加載并執(zhí)行的指令,所述指令在被執(zhí)行時(shí)使所述處理器執(zhí)行上述第一方面的一種嵌入式系統(tǒng)棧溢出保護(hù)方法。
作為本發(fā)明的第四方面,提供一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)存儲(chǔ)一個(gè)或多個(gè)程序,所述一個(gè)或多個(gè)程序當(dāng)被處理器執(zhí)行時(shí),實(shí)現(xiàn)上述第一方面的一種嵌入式系統(tǒng)棧溢出保護(hù)方法。
本發(fā)明將內(nèi)存保護(hù)單元的region區(qū)域作為任務(wù)的棧區(qū)域,在切換任務(wù)時(shí),僅使目標(biāo)任務(wù)的region區(qū)域具有讀寫(xiě)權(quán)限,而其它region區(qū)域都禁止訪問(wèn),這樣目標(biāo)任務(wù)運(yùn)行過(guò)程中,如果其region區(qū)域的棧頂或者棧底溢出,都會(huì)觸發(fā)內(nèi)存保護(hù)單元的訪問(wèn)權(quán)限錯(cuò)誤中斷,從而實(shí)現(xiàn)棧溢出保護(hù),與現(xiàn)有技術(shù)相比,可以避免漏檢,不需要額外劃分內(nèi)存做檢測(cè)區(qū)域,節(jié)省了棧區(qū)內(nèi)存,并且對(duì)能檢測(cè)到棧底部和頂部的溢出。
附圖說(shuō)明
下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明:
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于上海偉世通汽車(chē)電子系統(tǒng)有限公司,未經(jīng)上海偉世通汽車(chē)電子系統(tǒng)有限公司許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202310737904.1/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 同類(lèi)專(zhuān)利
- 專(zhuān)利分類(lèi)
G06F 電數(shù)字?jǐn)?shù)據(jù)處理
G06F11-00 錯(cuò)誤檢測(cè);錯(cuò)誤校正;監(jiān)控
G06F11-07 .響應(yīng)錯(cuò)誤的產(chǎn)生,例如,容錯(cuò)
G06F11-22 .在準(zhǔn)備運(yùn)算或者在空閑時(shí)間期間內(nèi),通過(guò)測(cè)試作故障硬件的檢測(cè)或定位
G06F11-28 .借助于檢驗(yàn)標(biāo)準(zhǔn)程序或通過(guò)處理作錯(cuò)誤檢測(cè)、錯(cuò)誤校正或監(jiān)控
G06F11-30 .監(jiān)控
G06F11-36 .通過(guò)軟件的測(cè)試或調(diào)試防止錯(cuò)誤





