logo好方法网

芯片内执行模式下的数据存储方法、装置及终端


技术摘要:
本公开实施例提供一种芯片内执行模式下的数据存储方法、装置及终端,属于嵌入式技术领域。其中方法包括:在加载模式下,将终端内运行程序中的只读数据差分为第一部分数据和第二部分数据,并将第二部分数据压缩;将第一部分数据和压缩后的第二部分数据分别存储到终端的  全部
背景技术:
嵌入式系统中代码的执行方式主要有3种,分别为: 完全映射(fully  shadowed),嵌入式系统程序运行时,将所有的代码从非易失存储器 Flash、只读存储器(Read  Only  Memory,简称ROM)复制到随机存储器(Random  Access  Memory,简称RAM)中运行; 按需分页(demand  paging),只复制部分代码到RAM中。这种方法对RAM中的页进行导 入/导出管理,如果访问位于虚存中但不在物理RAM中会产生页错误,这时才将代码和数据 映射到RAM中; 芯片内执行(eXecute  In  Place,简称XIP  ),在系统启动时,不将代码复制到RAM,而是 直接在非易失性存储(Flash、ROM等)位置执行,RAM中只存放需要不断变化的数据部分。 运行程序主要包含三类数据,分别简称RO/RW/ZI数据: 1)只读数据(Read  Only,简称RO),包含指令代码,字串图表等资源文件,占用烧写ROM 空间。 2)读写数据(Read  Write,简称RW),即在程序运行时会持续变化的数据,占用烧写 ROM空间。 3)零初始化数据(Zero  Initial,简称RI),不占用ROM空间,启动后由程序赋零初 值。 现有的嵌入式XIP执行模型如图1所示,其中左侧为加载视角Load  View,右侧为执 行视角Execution  View,ROM空间具有非易失物理属性,所以烧写时RO/RW会烧写到ROM区 域。而在程序运行时,RAM空间具有易失属性,但可以高效运行,持续读写。所以会将RW展开 到RAM空间,同时初始化ZI数据并执行程序。ROM空间中的RW数据是仅烧写存储在ROM中,是 程序执行周期时加载到RAM空间使用,于是存储在ROM中的RW数据是可以压缩存储,来提高 ROM空间利用效率,但同时会多消耗从ROM到RAM解压的时间。 可见,现有的芯片内执行模式下的数据存储方案存在占用空间较多或者消耗时间 较多的技术问题。
技术实现要素:
有鉴于此,本公开实施例提供一种芯片内执行模式下的数据存储方法、装置及终 端,至少部分解决现有技术中存在的问题。 第一方面,本公开实施例提供了一种芯片内执行模式下的数据存储方法,应用于 终端,所述方法包括: 在加载模式下,将所述终端内运行程序中的只读数据差分为第一部分数据和第二部分 4 CN 111596973 A 说 明 书 2/10 页 数据,并将所述第二部分数据压缩; 将所述第一部分数据和压缩后的所述第二部分数据分别存储到所述终端的只读存储 器内; 由所述加载模式进入芯片内执行模式时,控制所述第一部分数据参与所述芯片内执行 模式下的程序运行,以及,将所述只读存储器内的压缩后的所述第二部分数据解压到所述 终端的随机存储器并参与所述芯片内执行模式下的程序运行。 根据本公开实施例的一种具体实现方式,所述将所述终端内运行程序中的只读数 据差分为第一部分数据和第二部分数据的步骤,包括: 判断所述只读存储器的物理空间是否满足预设充足状态; 若所述只读存储器的物理空间满足预设充足状态,则将所述只读数据差分为所述第一 部分数据和所述第二部分数据,其中,所述第一部分数据的占用内存大于所述第二部分数 据的占用内存; 若所述只读存储器的物理空间不满足预设充足状态,则将所述只读数据差分为所述第 一部分数据和所述第二部分数据,其中,所述第一部分数据的占用内存小于所述第二部分 数据的占用内存。 根据本公开实施例的一种具体实现方式,所述判断所述只读存储器的物理空间是 否满足预设充足状态的步骤,包括: 获取所述终端内的初始化二值图像的实际尺寸; 根据所述终端的链接器的烧写分区布局,判断所述只读存储器的物理空间是否大于所 述初始化二值图像的实际尺寸; 若所述只读存储器的物理空间大于所述初始化二值图像的实际尺寸,则判定所述只读 存储器的物理空间满足预设充足状态; 若所述只读存储器的物理空间小于或者等于所述初始化二值图像的实际尺寸,则判定 所述只读存储器的物理空间不满足预设充足状态。 根据本公开实施例的一种具体实现方式,所述在加载模式下,将所述终端内运行 程序中的只读数据差分为第一部分数据和第二部分数据,并将所述第二部分数据压缩的步 骤,包括: 根据所述二值图像的头部信息,将尾部的只读数据中的第一部分数据和第二部分数据 分别压缩,并重新连接在一起,并在二值图像的头部更新压缩后的只读数据的信息,修改被 压缩的只读数据的内容和数量,配置链接阶段的分区文件; 所述将所述只读存储器内的压缩后的所述第二部分数据解压到所述终端的随机存储 器并参与所述芯片内执行模式下的程序运行的步骤,包括: 根据所述二值图像头部的信息,将压缩后的第二部分数据展开到随机存储器内使用。 根据本公开实施例的一种具体实现方式,所述根据所述二值图像的头部信息,将 尾部的只读数据中的第一部分数据和第二部分数据分别压缩的步骤之前,所述方法还包 括: 根据所述终端内链接器的分区布局,将需要压缩的只读部分,以加载模式的分区布局 在尾部,并将加载地址/执行地址在编译、链接阶段自动记录在所述二值图像的头部。 根据本公开实施例的一种具体实现方式,所述将所述终端内运行程序中的只读数 5 CN 111596973 A 说 明 书 3/10 页 据差分为第一部分数据和第二部分数据的步骤,包括: 确定所述只读数据包括的多个数据子集; 在产出所述二值图像时,根据分区文件中的数据排布参数,调整全部数据子集的布局, 进而得到第一部分数据和第二部分数据,其中所述排布参数包括排布顺序和排布位置。 根据本公开实施例的一种具体实现方式,所述在产出所述二值图像时,根据分区 文件中的数据排布参数,调整全部数据子集的布局的步骤之前,所述方法还包括: 接收用户输入的配置请求; 根据所述配置请求,调整所述分区文件中的数据排布参数。 根据本公开实施例的一种具体实现方式,所述方法还包括: 在所述加载模式下,将所述终端内的读写数据和零初始化数据存储到所述只读存储器 内; 由所述加载模式进入所述芯片内执行模式时,将所述只读存储器内的所述读写数据和 所述零初始化数据解压并展开到所述随机存储器内。 第二方面,本公开实施例提供了一种芯片内执行模式下的数据存储装置,所述装 置包括: 差分模块,用于在加载模式下,将所述终端内运行程序中的只读数据差分为第一部分 数据和第二部分数据,并将所述第二部分数据压缩; 存储模块,用于将所述第一部分数据和压缩后的所述第二部分数据分别存储到所述终 端的只读存储器内; 运行模块,用于由所述加载模式进入芯片内执行模式时,控制所述第一部分数据参与 所述芯片内执行模式下的程序运行,以及,将所述只读存储器内的压缩后的所述第二部分 数据解压到所述终端的随机存储器并参与所述芯片内执行模式下的程序运行。 第三方面,本公开实施例还提供了一种终端,所述终端包括: 至少一个处理器;以及, 与该至少一个处理器通信连接的存储器;其中, 该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执 行,以使该至少一个处理器能够执行前述第一方面中任一项所述的芯片内执行模式下的数 据存储方法。 第四方面,本公开实施例还提供了一种非暂态计算机可读存储介质,该非暂态计 算机可读存储介质存储计算机指令,该计算机指令用于使该计算机执行前述第一方面或第 一方面的任一实现方式中的芯片内执行模式下的数据存储方法。 第五方面,本公开实施例还提供了一种计算机程序产品,该计算机程序产品包括 存储在非暂态计算机可读存储介质上的计算程序,该计算机程序包括程序指令,当该程序 指令被计算机执行时,使该计算机执行前述第一方面或第一方面的任一实现方式中的芯片 内执行模式下的数据存储方法。 本公开实施例提供的芯片内执行模式下的数据存储方案,包括:在加载模式下,将 所述终端内运行程序中的只读数据差分为第一部分数据和第二部分数据,并将所述第二部 分数据压缩;将所述第一部分数据和压缩后的所述第二部分数据分别存储到所述终端的只 读存储器内;由所述加载模式进入芯片内执行模式时,控制所述第一部分数据参与所述芯 6 CN 111596973 A 说 明 书 4/10 页 片内执行模式下的程序运行,以及,将所述只读存储器内的压缩后的所述第二部分数据解 压到所述终端的随机存储器并参与所述芯片内执行模式下的程序运行。这样,可以根据物 理空间的具体存储状态适应性地调整只读存储器和随机存储器之间的使用平衡,既能避免 只读存储器内不合理的空间占用,提高只读存储器的空间利用效率。 附图说明 为了更清楚地说明本公开实施例的技术方案,下面将对实施例中所需要使用的附 图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域 普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。 图1为现有的嵌入式芯片内执行XIP模型的结构示意图; 图2为本公开实施例提供的一种芯片内执行模式下的数据存储方法的流程示意图; 图3为本公开实施例提供的芯片内执行模式下的数据存储方法所涉及的执行模型的示 意图; 图4为本公开实施例提供的芯片内执行模式下的数据存储方法所涉及的执行模型的其 他示意图; 图5为本公开实施例提供的一种芯片内执行模式下的数据存储装置的结构示意图; 图6为本公开实施例提供的一种终端的示意图。
分享到:
收藏