一种通过精确分区保护程序存储空间的方法及装置制造方法及图纸

技术编号:14924700 阅读:112 留言:0更新日期:2017-03-30 16:46
本发明专利技术公布一种通过精确分区保护程序存储空间的方法及装置,涉及数字存储技术领域。所述方法包括:根据程序存储空间得到第一存储空间,针对第一存储空间进行处理得到前端区域和后端区域,分别将前端区域和后端区域进行递归分区,并设置分区得到的子区域的访问权限。所述装置包括:第一存储空间生成模块,第一判断模块,第一分区模块,第二判断模块,前后端区域生成模块,前端区域处理模块,后端区域处理模块,第三判断模块,第四判断模块,更新前端区域模块,更新后端区域模块。实现了通过精确分区保护程序存储空间,避免了由于分区不正确造成的程序不能正常运行的情况,也避免了系统资源的浪费。

【技术实现步骤摘要】

本专利技术涉及数字存储
,特别涉及一种通过精确分区保护程序存储空间的方法及装置
技术介绍
一些嵌入式系统使用多任务的操作和控制,这些系统必须提供一种机制来保证正在运行的任务不破坏其它任务的运行,ARM中配备了有效保护系统资源的硬件—MPU(MemoryProtectionUnit,内存保护单元),MPU可以限制对系统资源的访问权限。MPU具有以下功能:1保护存储区域,2将保护区域重叠,3控制访问权限,4将存储属性输出到系统。MPU保护模块主要是把内存分成域,ARMv7m支持的域个数有8个。如果需要保护的存储空间范围过小则用户程序将不能正常运行,如果需保护的存储空间范围过大则会造成系统资源的浪费。
技术实现思路
本专利技术的目的是为了更加准确的划分需保护的存储空间的范围,提出了一种通过精确分区保护程序存储空间的方法及装置。一种通过精确分区保护程序存储空间的方法,包括:步骤101、根据程序长度确定第一长度,根据程序存储空间的首地址和所述第一长度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储空间;步骤102、判断所述第一存储空间是否完全包含所述程序存储空间,若所述第一存储空间完全包含程序存储空间则执行步骤103,若所述第一存储空间部分包含执行步骤104;步骤103、将所述第一存储空间进行分区,设置分区得到的子区域的访问权限;对所述第一存储空间分区得到的子区域进行判断,若第一存储空间分区得到的子区域中存在包含所述程序存储空间的首地址且与所述程序存储空间部分重合的第一临时子区域时,将第一临时子区域与程序存储空间部分重合的区域作为当前前端区域,对当前前端区域进行递归分区;若第一存储空间分区得到的子区域中包含所述程序存储空间的末地址且与所述程序存储空间部分重合的第三临时子区域时,将第三临时子区域与程序存储空间部分重合的区域作为当前后端区域,对当前后端区域进行递归分区;若第一临时子区域和第三临时子区域均不存在则结束;步骤104、根据所述第一存储空间的末地址得到当前前端区域和当前后端区域,对当前前端区域进行递归分区,对当前后端区域进行递归分区;对当前前端区域进行递归分区具体包括:步骤201、计算所述当前前端区域的长度,根据所述当前前端区域的长度确定第二长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;根据所述第二长度和所述第二首地址得到第二存储空间,将所述第二存储空间进行分区,设置分区得到的子区域的访问权限;步骤202、判断所述第二存储空间分区得到的子区域中是否有与所述程序存储空间部分重合的第二临时子区域,是则更新所述当前前端区域为所述第二临时子区域与所述程序存储空间重合的区域,返回步骤201,否则结束;对当前后端区域进行递归分区具体包括:步骤301、计算所述当前后端区域的首地址和长度,根据所述当前后端区域的长度确定第三长度,根据所述当前后端区域的首地址和所述第三长度得到第三存储空间;将所述第三存储空间进行分区,设置分区得到的子区域的访问权限进行分区;步骤302、判断所述第三存储空间分区得到的子区域中是否有与所述程序存储空间部分重合的子区域并判断子区域长度是否大于预设长度,判断均为是则将与所述程序存储空间部分重合的子区域作为第四临时子区域,更新所述当前后端区域为所述第四临时子区域与所述程序存储空间重合的区域,返回步骤301,否则结束。一种通过精确分区保护程序存储空间的装置,包括:第一存储空间生成模块,用于根据程序长度确定第一长度,根据程序存储空间的首地址和第一长度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储空间;第一判断模块,用于判断所述第一存储空间生成模块生成的所述第一存储空间是否包含所述程序存储空间;第一分区模块,用于当所述第一判断模块判断所述第一存储空间完全包含所述程序存储空间时,将所述第一存储空间进行分区,设置分区得到的子区域的访问权限;前后端区域生成模块,用于当第一判断模块判断所述第一存储空间部分包含所述程序存储空间时,根据第一存储空间的末地址得到当前前端区域和当前后端区域,触发前端区域处理模块和后端区域处理模块。第二判断模块,用于将所述第一分区模块得到的所述子区域进行判断,若所述子区域中存在包含所述程序存储空间的首地址且与所述程序存储空间部分重合的第一临时子区域时将第一临时子区域与程序存储空间部分重合的区域作为当前前端区域,触发前端区域处理模块,若所述第一存储空间模块得到的子区域中包含所述程序存储空间的末地址且与所述程序存储空间部分重合的第三临时子区域时,将第三临时子区域与程序存储空间部分重合的区域作为当前后端区域,触发后端区域处理模块;若第一临时子区域和第三临时子区域均不存在则结束;前端区域处理模块,用于计算所述当前前端区域的长度,根据当前前端区域的长度确定第二长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;根据所述第二长度和所述第二首地址得到第二存储空间,将所述第二存储空间进行分区,设置分区得到的子区域的访问权限;第三判断模块,用于判断所述前端区域处理模块生成的子区域中是否有与所述程序存储空间部分重合的子区域;更新前端区域模块,用于所述第三判断模块判断第二存储空间分区得到的子区域中存在与程序存储空间部分重合的第二临时子区域时,更新当前前端区域为第二临时子区域与程序存储空间重合的区域,触发前端区域处理模块;后端区域处理模块,用于计算所述当前后端区域的首地址和长度,根据当前后端区域的长度确定第三长度,根据当前后端区域的首地址和第三长度得到第三存储空间;将所述第三存储空间进行分区,设置分区得到的子区域的访问权限;第四判断模块,用于判断后端区域处理模块得到的子区域中是否有与程序存储空间部分重合的子区域并判断子区域长度是否大于预设长度;更新后端区域模块,用于当第四判断模块判断第三存储空间分区得到的子区域中存在与程序存储空间部分重合的子区域且子区域长度大于预设长度时,将与程序存储空间部分重合的子区域作为第四临时子区域,更新当前后端区域为第四临时子区域与程序存储空间重合的区域,触发后端区域处理模块。本专利技术的有益效果是避免了由于分区不正确造成的用户程序不能正常运行的情况,也避免了系统资源的浪费,本专利技术提供的一种通过精确分区保护程序存储空间的方法,成功实现了MPU所需要的分区功能。附图说明为了更清楚的说明本文档来自技高网...
一种通过精确分区保护程序存储空间的方法及装置

【技术保护点】
一种通过精确分区保护程序存储空间的方法,其特征在于,包括:步骤101、根据程序长度确定第一长度,根据程序存储空间的首地址和所述第一长度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储空间;步骤102、判断所述第一存储空间是否完全包含所述程序存储空间,若所述第一存储空间完全包含所述程序存储空间则执行步骤103,若所述第一存储空间部分包含所述程序存储空间执行步骤104;步骤103、将所述第一存储空间进行分区,设置分区得到的子区域的访问权限;对所述第一存储空间分区得到的子区域进行判断,若第一存储空间分区得到的子区域中存在包含所述程序存储空间的首地址且与所述程序存储空间部分重合的第一临时子区域时,将第一临时子区域与程序存储空间部分重合的区域作为当前前端区域,对当前前端区域进行递归分区;若第一存储空间分区得到的子区域中包含所述程序存储空间的末地址且与所述程序存储空间部分重合的第三临时子区域时,将第三临时子区域与程序存储空间部分重合的区域作为当前后端区域,对当前后端区域进行递归分区;若第一临时子区域和第三临时子区域均不存在则结束;步骤104、根据所述第一存储空间的末地址得到当前前端区域和当前后端区域,对当前前端区域进行递归分区,对当前后端区域进行递归分区;对当前前端区域进行递归分区具体包括:步骤201、计算所述当前前端区域的长度,根据所述当前前端区域的长度确定第二长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;根据所述第二长度和所述第二首地址得到第二存储空间,将所述第二存储空间进行分区,设置分区得到的子区域的访问权限;步骤202、判断所述第二存储空间分区得到的子区域中是否有与所述程序存储空间部分重合的第二临时子区域,是则更新所述当前前端区域为所述第二临时子区域与所述程序存储空间重合的区域,返回步骤201,否则结束;对当前后端区域进行递归分区具体包括:步骤301、计算所述当前后端区域的首地址和长度,根据所述当前后端区域的长度确定第三长度,根据所述当前后端区域的首地址和所述第三长度得到第三存储空间;将所述第三存储空间进行分区,设置分区得到的子区域的访问权限进行分区;步骤302、判断所述第三存储空间分区得到的子区域中是否有与所述程序存储空间部分重合的子区域并判断子区域长度是否大于预设长度,判断均为是则将与所述程序存储空间部分重合的子区域作为第四临时子区域,更新所述当前后端区域为所述第四临时子区域与所述程序存储空间重合的区域,返回步骤301,否则结束。...

【技术特征摘要】
1.一种通过精确分区保护程序存储空间的方法,其特征在于,包括:
步骤101、根据程序长度确定第一长度,根据程序存储空间的首地址和所述
第一长度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储
空间;
步骤102、判断所述第一存储空间是否完全包含所述程序存储空间,若所述
第一存储空间完全包含所述程序存储空间则执行步骤103,若所述第一存储空间
部分包含所述程序存储空间执行步骤104;
步骤103、将所述第一存储空间进行分区,设置分区得到的子区域的访问权
限;对所述第一存储空间分区得到的子区域进行判断,若第一存储空间分区得
到的子区域中存在包含所述程序存储空间的首地址且与所述程序存储空间部分
重合的第一临时子区域时,将第一临时子区域与程序存储空间部分重合的区域
作为当前前端区域,对当前前端区域进行递归分区;若第一存储空间分区得到
的子区域中包含所述程序存储空间的末地址且与所述程序存储空间部分重合的
第三临时子区域时,将第三临时子区域与程序存储空间部分重合的区域作为当
前后端区域,对当前后端区域进行递归分区;若第一临时子区域和第三临时子
区域均不存在则结束;
步骤104、根据所述第一存储空间的末地址得到当前前端区域和当前后端区
域,对当前前端区域进行递归分区,对当前后端区域进行递归分区;
对当前前端区域进行递归分区具体包括:
步骤201、计算所述当前前端区域的长度,根据所述当前前端区域的长度确
定第二长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;
根据所述第二长度和所述第二首地址得到第二存储空间,将所述第二存储空间
进行分区,设置分区得到的子区域的访问权限;
步骤202、判断所述第二存储空间分区得到的子区域中是否有与所述程序存
储空间部分重合的第二临时子区域,是则更新所述当前前端区域为所述第二临
时子区域与所述程序存储空间重合的区域,返回步骤201,否则结束;
对当前后端区域进行递归分区具体包括:
步骤301、计算所述当前后端区域的首地址和长度,根据所述当前后端区域
的长度确定第三长度,根据所述当前后端区域的首地址和所述第三长度得到第
三存储空间;将所述第三存储空间进行分区,设置分区得到的子区域的访问权
限进行分区;
步骤302、判断所述第三存储空间分区得到的子区域中是否有与所述程序存
储空间部分重合的子区域并判断子区域长度是否大于预设长度,判断均为是则
将与所述程序存储空间部分重合的子区域作为第四临时子区域,更新所述当前
后端区域为所述第四临时子区域与所述程序存储空间重合的区域,返回步骤301,
否则结束。
2.如权利要求1所述的方法,其特征在于,所述根据程序长度确定第一长
度具体包括:确定所述程序长度所处的预设区间,将预设区间的上边界值作为
第一长度。
3.如权利要求1所述的方法,其特征在于,所述根据程序存储空间的首地
址和所述第一长度得到第一首地址,具体包括:将所述程序存储空间的首地址向
左对齐到所述第一长度的整数倍得到第一首地址。
4.如权利要求1所述的方法,其特征在于,所述步骤102具体包括:根据
所述第一首地址和所述第一长度得到第一末地址;判断所述第一末地址是否小
于所述程序存储空间的末地址,若所述第一末地址小于所述程序存储空间的末
地址则表明所述第一存储空间部分包含所述程序存储空间,若所述第一末地址

\t大于或等于所述程序存储空间的末地址则表明所述第一存储空间完全包含所述
程序存储空间。
5.如权利要求1所述的方法,其特征在于,所述设置分区得到的子区域的
访问权限具体包括:将分区得到的子区域中与所述程序存储空间重合的子区域
的访问权限设置为禁止访问,剩余的子区域的访问权限设置为允许访问。
6.如权利要求1所述的方法,其特征在于,所述根据所述当前前端区域的
长度确定第二长度,具体包括:确定所述前前端区域的长度所处的预设区间,
将预设区间的上边界值作为第二长度。
7.如权利要求1所述的方法,其特征在于,根据所述程序存储空间首地址
得到第二首地址具体包括:所述将程序存储空间的首地址向左对齐到所述第二
长度的整数倍得到第二首地址。
8.如权利要求1所述的方法,其特征在于,所述判断所述第二存储空间分
区得到的子区域中是否有与所述程序存储空间部分重合的子区域具体包括:
步骤801、计算子区域长度,设置第一子区域地址为所述程序存储空间的首
地址与子区域长度之和;
步骤802、判断所述第一子区域地址是否小于所述程序存储空间的首地址,
是则执行步骤803,否则执行步骤804;
步骤803、更新所述第一子区域地址为当前第一子区域地址与子区域长度之
和;返回步骤802;
步骤804、判断所述第一子区域地址是否等于所述程序存储空间的首地址,
是则所述第二存储空间分区得到的子区域中没有与所述程序存储空间部分重合
的子区域,否则所述第二存储空间分区得到的子区域中存在与所述程序存储空
间部分重合的子区域。
9.如权利要求1所述的方法,其特征在于,所述计算当前后端区域的首地
址具体包括:当所述第一存储空间完全包含所述程序存储空间,设置所述后端
区域的首地址为所述第三临时子区域的首地址;若所述第一存储空间部分包含
所述程序存储空间,设置当前后端区域的首地址为所述第一存储空间的末地址。
10.如权利要求1所述的方法,其特征在于,所述根据所述当前后端区域
的长度确定第三长度,具体包括:确定所述当前后端区域的长度所处的预设区
间,将预设区间的上边界值作为第三长度。
11.如权利要求1所述的方法,其特征在于,所述判断所述第三存储空间
分区得到的子区域中是否有与所述程序存储空间部分重合的子区域具体包括:
步骤B01、计算子区域长度,根据所述当前后端区域的首地址和长度计算当
前后端区域的末地址,设置第二子区域地址为后端区域的末地址与子区域长度
之差;
步骤B02、判断所述第二子区域地址是否大于所述程序存储空间的末地址,
是则执行步骤B03,否则执行步骤B04;
步骤B03、更新所述第二子区域地址为所述当前第二子区域地址与子区域长
度之差;返回步骤B02;
步骤B04、判断所述第二子区域地址是否等于所述程序存储空间的末地址,
是则第三存储空间分区得到的子区域中没有与所述程序存储空间部分重合的子
区域,否则第三存储空间分区得到的子区域中存在与所述程序存储空间部分重
合的子区域。
12.如权利要求1所述的方法,其特征在于,所述根据所述第一存储空间
的末地址得到当前前端区域和当前后端区域具体包括:将所述程序存储空间的
首地址与所述第一存储空间的末地址之间的存储空间作为当前前端区域,将所

\t述第一存储空间的末地址与程序存储空间的末地址之间的存储空间作为当前后
端区域。
13.一种通过精确分区保护程序存储空间的装置,其特征在于,包括:
第一存储空间生成模块,用于根据程序长度确定第一长度,根据程序存储
空间的首地址和第一长度得到第一首地址,根据所述第一首地址和所述第一长
度得到第一存储空间;
第一判断模块,用于判断所述第一存储空间生成模块生成的所述第一存储
空间是否完全包含所述程序存储空间;
第一分区模块,用于当所述第一判断模块判断所述第一存储空间完全包含
所述程序存储空间时,将所述第一存储空间进行分区,设置分区得到的子区域
的访问权限;
前后端区域生成模块,用于当第一判断模块判断所述第一存储空间部分包
含所述程序存储空间时,根据第一存储空间的末地址得到当前前端区域和当前
后端区域;
第二判断模块,用于将所述第一分区模块得到的...

【专利技术属性】
技术研发人员:陆舟于华章
申请(专利权)人:飞天诚信科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1