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

文档序号:9910824阅读:421来源:国知局
一种通过精确分区保护程序存储空间的方法及装置的制造方法
【技术领域】
[0001] 本发明涉及数字存储技术领域,特别涉及一种通过精确分区保护程序存储空间的 方法及装置。
【背景技术】
[0002] -些嵌入式系统使用多任务的操作和控制,这些系统必须提供一种机制来保证正 在运行的任务不破坏其它任务的运行,ARM中配备了有效保护系统资源的硬件一 MPU (Memory Protection Unit,内存保护单元),MPU可以限制对系统资源的访问权限。MPU具有 以下功能:1保护存储区域,2将保护区域重叠,3控制访问权限,4将存储属性输出到系统。 MPU保护模块主要是把内存分成域,ARM v7m支持的域个数有8个。如果需要保护的存储空间 范围过小则用户程序将不能正常运行,如果需保护的存储空间范围过大则会造成系统资源 的浪费。

【发明内容】

[0003] 本发明的目的是为了更加准确的划分需保护的存储空间的范围,提出了一种通过 精确分区保护程序存储空间的方法及装置。
[0004] -种通过精确分区保护程序存储空间的方法,包括:
[0005] 步骤101、根据程序长度确定第一长度,根据程序存储空间的首地址和所述第一长 度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储空间;
[0006] 步骤102、判断所述第一存储空间是否完全包含所述程序存储空间,若所述第一存 储空间完全包含程序存储空间则执行步骤103,若所述第一存储空间部分包含执行步骤 104;
[0007] 步骤103、将所述第一存储空间进行分区,设置分区得到的子区域的访问权限;对 所述第一存储空间分区得到的子区域进行判断,若第一存储空间分区得到的子区域中存在 包含所述程序存储空间的首地址且与所述程序存储空间部分重合的第一临时子区域时,将 第一临时子区域与程序存储空间部分重合的区域作为当前前端区域,对当前前端区域进行 递归分区;若第一存储空间分区得到的子区域中包含所述程序存储空间的末地址且与所述 程序存储空间部分重合的第三临时子区域时,将第三临时子区域与程序存储空间部分重合 的区域作为当前后端区域,对当前后端区域进行递归分区;若第一临时子区域和第三临时 子区域均不存在则结束;
[0008] 步骤104、根据所述第一存储空间的末地址得到当前前端区域和当前后端区域,对 当前前端区域进行递归分区,对当前后端区域进行递归分区;
[0009] 对当前前端区域进行递归分区具体包括:
[0010]步骤201、计算所述当前前端区域的长度,根据所述当前前端区域的长度确定第二 长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;根据所述第二长 度和所述第二首地址得到第二存储空间,将所述第二存储空间进行分区,设置分区得到的 子区域的访问权限;
[0011] 步骤202、判断所述第二存储空间分区得到的子区域中是否有与所述程序存储空 间部分重合的第二临时子区域,是则更新所述当前前端区域为所述第二临时子区域与所述 程序存储空间重合的区域,返回步骤201,否则结束;
[0012] 对当前后端区域进行递归分区具体包括:
[0013] 步骤301、计算所述当前后端区域的首地址和长度,根据所述当前后端区域的长度 确定第三长度,根据所述当前后端区域的首地址和所述第三长度得到第三存储空间;将所 述第三存储空间进行分区,设置分区得到的子区域的访问权限进行分区;
[0014] 步骤302、判断所述第三存储空间分区得到的子区域中是否有与所述程序存储空 间部分重合的子区域并判断子区域长度是否大于预设长度,判断均为是则将与所述程序存 储空间部分重合的子区域作为第四临时子区域,更新所述当前后端区域为所述第四临时子 区域与所述程序存储空间重合的区域,返回步骤301,否则结束。
[0015] -种通过精确分区保护程序存储空间的装置,包括:
[0016] 第一存储空间生成模块,用于根据程序长度确定第一长度,根据程序存储空间的 首地址和第一长度得到第一首地址,根据所述第一首地址和所述第一长度得到第一存储空 间;
[0017] 第一判断模块,用于判断所述第一存储空间生成模块生成的所述第一存储空间是 否包含所述程序存储空间;
[0018] 第一分区模块,用于当所述第一判断模块判断所述第一存储空间完全包含所述程 序存储空间时,将所述第一存储空间进行分区,设置分区得到的子区域的访问权限;
[0019] 前后端区域生成模块,用于当第一判断模块判断所述第一存储空间部分包含所述 程序存储空间时,根据第一存储空间的末地址得到当前前端区域和当前后端区域,触发前 端区域处理模块和后端区域处理模块。
[0020] 第二判断模块,用于将所述第一分区模块得到的所述子区域进行判断,若所述子 区域中存在包含所述程序存储空间的首地址且与所述程序存储空间部分重合的第一临时 子区域时将第一临时子区域与程序存储空间部分重合的区域作为当前前端区域,触发前端 区域处理模块,若所述第一存储空间模块得到的子区域中包含所述程序存储空间的末地址 且与所述程序存储空间部分重合的第三临时子区域时,将第三临时子区域与程序存储空间 部分重合的区域作为当前后端区域,触发后端区域处理模块;若第一临时子区域和第三临 时子区域均不存在则结束;
[0021] 前端区域处理模块,用于计算所述当前前端区域的长度,根据当前前端区域的长 度确定第二长度,根据所述程序存储空间的首地址和所述第二长度得到第二首地址;根据 所述第二长度和所述第二首地址得到第二存储空间,将所述第二存储空间进行分区,设置 分区得到的子区域的访问权限;
[0022] 第三判断模块,用于判断所述前端区域处理模块生成的子区域中是否有与所述程 序存储空间部分重合的子区域;
[0023] 更新前端区域模块,用于所述第三判断模块判断第二存储空间分区得到的子区域 中存在与程序存储空间部分重合的第二临时子区域时,更新当前前端区域为第二临时子区 域与程序存储空间重合的区域,触发前端区域处理模块;
[0024] 后端区域处理模块,用于计算所述当前后端区域的首地址和长度,根据当前后端 区域的长度确定第三长度,根据当前后端区域的首地址和第三长度得到第三存储空间;将 所述第三存储空间进行分区,设置分区得到的子区域的访问权限;
[0025] 第四判断模块,用于判断后端区域处理模块得到的子区域中是否有与程序存储空 间部分重合的子区域并判断子区域长度是否大于预设长度;
[0026] 更新后端区域模块,用于当第四判断模块判断第三存储空间分区得到的子区域中 存在与程序存储空间部分重合的子区域且子区域长度大于预设长度时,将与程序存储空间 部分重合的子区域作为第四临时子区域,更新当前后端区域为第四临时子区域与程序存储 空间重合的区域,触发后端区域处理模块。
[0027]本发明的有益效果是避免了由于分区不正确造成的用户程序不能正常运行的情 况,也避免了系统资源的浪费,本发明提供的一种通过精确分区保护程序存储空间的方法, 成功实现了 MPU所需要的分区功能。
【附图说明】
[0028] 为了更清楚的说明本发明实施例的技术方案,下面将对实施例或现有技术描述中 所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实 施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图 获得其他的附图。
[0029] 图1是本发明实施例1提供的一种通过精确分区保护程序存储空间的方法的流程 图。
[0030]图2是本发明实施例2提供的一种通过精确分区保护程序存储空间的装置的方框 图。
【具体实施方式】
[0031] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完 整地描述。显然所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本 发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实 施例,都属于本发明保护的范围、例如,实施例提供一种通过精确分区保护程序存储空间的 方法,所述程序存储空间可以为任何需要的保护的存储空间。
[0032] MPU最小能支持32字节的域,每个域的权限特性都可以被设置。设置访问权限时: 需要保护的存储空间的长度和首地址需要遵循一个规则:首地址必须是其长度的整数倍。 例如:如果要保护一个256字节的存储空间,那这个空间的首地址必须是256字节的整数倍。 因此要对一个任意地址,任意长度的存储空间进行保护时,就涉及到如何分区的问题。
[0033] 实施例1
[00
当前第1页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1