CN108008981A - 一种片上系统SoC中进行程序初始化的方法和装置 - Google Patents
一种片上系统SoC中进行程序初始化的方法和装置 Download PDFInfo
- Publication number
- CN108008981A CN108008981A CN201610969992.8A CN201610969992A CN108008981A CN 108008981 A CN108008981 A CN 108008981A CN 201610969992 A CN201610969992 A CN 201610969992A CN 108008981 A CN108008981 A CN 108008981A
- Authority
- CN
- China
- Prior art keywords
- initial value
- variable
- storage
- address
- storage address
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种片上系统SoC中进行程序初始化的方法和装置,方法包括:根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;根据所述初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。由于只需要在存储区域中存储一条初始化语句,即可完成该存储区域内所有变量的初始化,通过简化初始化语句,减少了程序的大小,从而减少了程序在该存储区域中的空间占用,优化了存储区域的存储空间,也缩短了初始化处理的时间。
Description
技术领域
本发明涉及通信技术领域,特别涉及一种片上系统(System on Chip,简称SoC)中进行程序初始化的方法和装置。
背景技术
物联网(Internet of Things,简称IOT)是当前应用热点,同时也是设备互联互通的技术发展方向。作为IOT技术的重要载体—SoC,以其低成本,高效互联技术特征,得到广泛应用。SoC被称为系统级芯片或片上系统,是一个有专用目标的集成电路,包含了完整系统并有嵌入软件的全部内容,用来实现从系统功能确定、到软硬件划分及完成设计在内的整个过程。从狭义角度讲,SoC是信息系统核心的芯片集成,是将系统关键部件集成在一块芯片上。从广义角度看,SoC是一个微小型系统,包括微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)等部件。
SoC中包括只读存储器(Read Only Memory,简称ROM)和随机访问存储器(RandomAccess Memory,简称RAM),ROM中用来存储程序数据、常量数据或变量数据。RAM中用来存储程序中用到的需要被改写的量,包括全局变量、局部变量和堆栈段。由于ROM是只读存储器,CPU只能从ROM中读数据,而不能往ROM中写数据,掉电后数据依然保存在ROM中,而RAM是随机存储器,CPU既可以从RAM中读出数据,又可以往RAM中写入数据,掉电后数据不保存,所以若在程序中定义了一些全局变量,这些变量将全部存储在ROM上,但之后程序运行过程中这些变量也会占用RAM空间。
每一个变量都会占用ROM空间,每一个变量的初始化语句也占用ROM空间,变量的数量越多,所需的初始化语句越多,而且还包括了初始化值的存储,则占据的ROM空间越大,因为程序需要保持初始化值、逐项初始化执行代码。而任何一个程序中,变量是必不可少的,因此,如何优化ROM存储空间是SoC开发过程中亟需解决的问题。
发明内容
本发明实施例提供了一种SoC中进行程序初始化的方法和装置,优化了SoC中的存储空间。
第一方面,提供了一种片上系统SoC中进行程序初始化的方法,包括:
根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
根据初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
一种可能的实施方式中,所述约束条件为存储地址连续,或任意两个存储地址间隔相同。
进一步的,若所述约束条件为存储地址连续,所述初始化语句中还包括所述变量的数量,或者所述初始化语句中还包括变量结束存储地址和初始值结束存储地址;
若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中还包括所述变量的数量和存储地址间隔,或者所述初始化语句中还包括变量结束存储地址、初始值结束存储地址和存储地址间隔。
一种可能的实施方式中,所述变量存储于只读存储器ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
基于上述任一实施例,一种可能的实施方式中,所述方法还包括:
若至少一个变量的初始值发生更新,所述方法还包括:在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值;或者
若所述ROM中至少两个变量的初始值之间进行调整,所述方法还包括:
在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
第二方面,提供了一种计算机可读存储介质,其中存储有可执行的程序代码,该程序代码用以实现第一方面所述的方法。
第三方面,提供了一种片上系统SoC中进行程序初始化的装置,包括:
读取模块,用于根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
初始化模块,用于根据初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
一种可能的实施方式中,所述约束条件为存储地址连续,或任意两个存储地址间隔相同。
进一步的,若所述约束条件为存储地址连续,所述初始化语句中还包括所述变量的数量,或者所述初始化语句中还包括变量结束存储地址和初始值结束存储地址;
若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中还包括所述变量的数量和存储地址间隔,或者所述初始化语句中还包括变量结束存储地址、初始值结束存储地址和存储地址间隔。
一种可能的实施方式中,所述变量存储于只读存储器ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
一种可能的实施方式中,所述装置还包括:
调整模块,用于若至少一个变量的初始值发生更新,在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值;或者
若所述ROM中至少两个变量的初始值之间进行调整,在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
第四方面,提供了一种片上系统SoC,所述SoC包括第三方面所述的装置。
本发明实施例提供的方法和装置中,由于所有需要初始化的变量的存储地址满足设定的约束条件,所述变量的初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同,因此,可以通过一条初始化语句,一次性读取存储空间中需要初始化的所有变量的初始值,并根据初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量,以实现变量的初始化。由于只需要存储一条初始化语句,即可完成所有变量的初始化,通过简化初始化语句,减少了程序的大小,从而减少了程序在存储空间中的空间占用,优化了存储空间,也缩短了初始化处理的时间。
附图说明
图1为本发明实施例提供的一种SoC中进行程序初始化的方法的示意图;
图2为本发明实施例1提供的方法流程示意图;
图3为本发明实施例2提供的方法流程示意图;
图4为本发明实施例3提供的方法流程示意图;
图5为本发明实施例提供的一种SoC中进行程序初始化的装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合说明书附图对本发明实施例作进一步详细描述。应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限定本发明。
图1所示实施例中提供了一种SoC中进行程序初始化的方法,包括:
S11、根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
S12、根据所述初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
本发明实施例中,由于所有需要初始化的变量的存储地址满足设定的约束条件,所述变量的初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同,因此,可以通过一条初始化语句,一次性读取存储空间中需要初始化的所有变量的初始值,并根据初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量,以实现变量的初始化。由于只需要存储一条初始化语句,即可完成所有变量的初始化,通过简化初始化语句,减少了程序的大小,从而减少了程序在存储空间中的空间占用,优化了存储空间,也缩短了初始化处理的时间。
本发明实施例适用于SoC中所有存储有变量并需要进行初始化的存储空间的优化,如ROM、RAM等。由于ROM中的数据在掉电后不会清除,因此,本发明实施例尤其适用于ROM的空间优化。
本发明实施例中,作为一种可能的实施方式,所述约束条件可以为存储地址连续,即该存储区域内需要初始化的所有变量的存储地址是连续的,该存储区域内需要初始化的所有变量对应的初始值的存储地址也是连续的。
进一步的,若所述约束条件为存储地址连续,则所述初始化语句中除了包括变量起始存储地址和初始值起始存储地址,还包括:
所述变量的数量n,以使在读取初始值时,从初始值起始存储地址开始读取连续的n个存储地址内的初始值,并将所读取的初始值,依次赋值给从变量起始存储地址开始连续读取的n个存储地址内的变量;
或者
所述初始化语句中还包括变量结束存储地址和初始值结束存储地址,以使在读取初始值时,从初始值起始存储地址开始至初始值结束存储地址为止的多个存储地址内的初始值,并将所读取的初始值,依次赋值给从变量起始存储地址开始至变量结束存储地址为止的连续多个存储地址内的变量。
以ROM为例进行说明,先将ROM中所有需要初始化的变量存储在一个连续空间内,例如将所有需要初始化的变量形成一个结构体变量,使所有需要初始化的变量的存储地址是连续的;再在另一个连续空间内存储变量对应的初始值,以使所有需要初始化的变量对应的初始值的存储地址是连续的。在为变量及其初始值分配为存储空间后,即可基于连续存储的变量和连续存储且与变量对应的初始值,通过一条初始化语句,完成所有变量的初始化,从而在不需要减少ROM中的变量数量与使用的情况下,通过简化初始化语句,优化了ROM的空间。
该方式中,所采用的初始化语句为拷贝语句,拷贝语句的一种可能的实现方式为:memcpy(wsaddr,vladdr,n);
其中,在ROM中,变量存储于以wsaddr为起始地址的连续区域内,存储长度为n;变量对应的初始化值存储于以vladdr为起始地址的连续区域内,长度为n。
通过上述拷贝语句,即可将以vladdr为起始地址的连续n个字节的数据(即初始值)复制到以wsaddr为起始地址的连续n个字节的空间内,即将初始值赋予相应的变量。
举例说明,若ROM中有10个需要初始化的变量,现有技术中需要通过10条赋值语句,分别为该10个变量进行初始化赋值,而本发明实施例提供的方案中,可以采用一条memcpy代替了10条赋值语句,从而减小了程序代码在ROM空间的占用,变量的数量越多,所节省的空间越大。
作为另一种可能的实施方式,所述约束条件可以为任意两个存储地址间隔相同,即该存储区域内需要初始化的所有变量中任意两个变量的存储地址间隔相同,该存储区域内需要初始化的所有变量对应的初始值中任意两个初始值的存储地址间隔相同。
例如,该存储区域内需要初始化的所有变量中任意两个变量的存储地址间隔为1,且该存储区域内需要初始化的所有变量对应的初始值中任意两个初始值的存储地址间隔也为1。
具体的,若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中除了包括变量起始存储地址和初始值起始存储地址,还包括:
所述变量的数量n和存储地址间隔m,以使在读取初始值时,从初始值起始存储地址开始连续读取存储地址间隔为m的n个存储地址内的初始值,并将所读取的初始值,依次赋值给从变量起始存储地址开始存储地址间隔为m的n个存储地址内的变量,例如,若存储地址间隔为1,则在读取初始值时,从初始值存储区域内的初始值起始存储地址开始读取第1个,第3个,第5个……等的n个存储地址内的初始值,并将所读取的初始值,依次赋值给变量存储区域内的第1个、第3个、第5个……等的n个存储地址内的变量;
或者
变量结束存储地址、初始值结束存储地址和存储地址间隔,以使在读取初始值时,从初始值起始存储地址开始至初始值结束存储地址为止且存储地址间隔为m的多个存储地址内的初始值,并将所读取的初始值,依次赋值给从变量起始存储地址开始至变量结束存储地址为止且存储地址间隔为m的多个存储地址内的变量,例如,若存储地址间隔为1,则在读取初始值时,从初始值存储区域内的初始值起始存储地址开始读取第1个,第3个,第5个……直至初始值结束存储地址内的初始值,并将所读取的初始值,依次赋值给变量存储区域内的第1个、第3个、第5个……直至变量结束存储地址内的变量。
当然,所述约束条件除了包括上述两种可能的实现方式外,还可以采用其他实现方式,本发明实施例不再一一举例说明。
基于上述任一实施例,一种可能的实施方式中,所述变量存储于ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
由于将初始值集中存储于ROM的Flash中的DATA区域内,在只需修改变量的初始值,重新运行程序的情况下,只对DATA区域内的初始值进行更改即可,而不需要重复编译ROM程序。例如,测试参数的调整,由于测试参数时,需要使用不同的初始值进行实验和测试,采用本发明实施例提供的方法,只需要更改DATA区域内的初始值即可,可以有效的减少不必要的操作并节省时间。
基于上述任一实施例,当所述ROM中存储的变量和/或初始值发生变化时,所述方法还包括:更新所述ROM中存储的变量和/或初始值。具体包括以下几种可能的方式:
方式一、在任一存储区域内增加了新的变量。
该方式中,由于变量发生了变化,需要重新编译存储区域内的程序,包括初始化语句。
该方式中,在该存储区域中,为新增的变量分配满足所述约束条件的存储地址,以及为所述新增的变量的初始值分配满足所述约束条件的存储地址,以使所有变量在该存储区域中的存储地址均满足所述约束条件,所有变量的初始值在该存储区域中的存储地址均满足所述约束条件,且所有变量的初始值的存储顺序与所述初始值对应的变量的存储顺序相同。在完成上述更新后,刷新该存储区域内的程序,重新执行初始化。
仍以ROM为例进行说明,假设ROM中存储有10个变量及其初始值,变量的存储地址是连续的,依次为wsaddr1~wsaddr10,初始值的存储地址是连续的,依次为vladdr1~vladdr10。若需要增加一个新的变量,为该新的变量分配存储地址wsaddr11,为该新的变量的初始值分配存储地址vladdr11。初始化程序更新为memcpy(wsadd1,vladd1,11)。之后刷新ROM程序,重新执行初始化。
方式二、删除任一存储区域中的至少一个变量。
该方式中,由于变量发生了变化,需要重新编译存储区域内的程序,包括初始化语句。
在该存储区域中,删除指定的变量以及所述指定的变量的初始值,更新剩余变量的存储地址以及所述剩余变量的初始值的存储地址,以使所述剩余变量在该存储区域中的存储地址仍满足所述约束条件,所述剩余变量的初始值在该存储区域中的存储地址仍满足所述约束条件,且所述剩余变量的初始值的存储顺序与所述初始值对应的剩余变量的存储顺序相同。在完成上述更新后,刷新该存储区域中的程序,重新执行初始化。
仍以ROM为例进行说明,假设ROM中存储有10个变量及其初始值,变量的存储地址是连续的,依次为wsaddr1~wsaddr10,初始值的存储地址是连续的,依次为vladdr1~vladdr10。若需要删除存储地址wsaddr6中的变量,则从删除存储地址wsaddr6中的变量以及存储地址vladdr6中的初始值,wsaddr1~wsaddr5中的变量不变,将wsaddr7中的变量移至wsaddr6中,将wsaddr8中的变量移至wsaddr7中,将wsaddr9中的变量移至wsaddr8中,将wsaddr10中的变量移至wsaddr9中,从而完成变量的更新;对于初始值,vladdr1~vladdr5中的初始值不变,将vladdr 7中的变量移至vladdr 6中,将vladdr 8中的变量移至vladdr7中,将vladdr 9中的变量移至vladdr 8中,将vladdr 10中的变量移至vladdr 9中,从而完成初始值的更新。初始化程序更新为memcpy(wsadd1,vladd1,9)。之后刷新ROM程序,重新执行初始化。
方式三、任一存储区域内的至少一个变量的初始值发生更新。
该方式中,由于变量未发生变化,因此,只需要在初始值存储区域内进行更新即可,不需要重新编译该存储区域中的程序。
该方式中,在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值。
仍以ROM为例进行说明,假设ROM中存储有10个变量及其初始值,变量的存储地址是连续的,依次为wsaddr1~wsaddr10,初始值的存储地址是连续的,依次为vladdr1~vladdr10。若wsaddr5中的变量的初始值需要更新,则只需要修改vladdr5中存储的初始值即可。初始化程序不需要更新,无需刷新ROM程序,重新执行初始化即可。
方式四、任一存储空间中至少两个变量的初始值之间进行调整,即变量存储区域不变化,初始值存储区域内的初始值的存储位置进行调整。
该方式中,由于变量未发生变化,因此,只需要在初始值存储区域内进行调整即可,不需要重新编译该存储区域中的程序。
该方式中,在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
仍以ROM为例进行说明,假设ROM中存储有10个变量,记为A1~A10,为其分配的存储地址为wsaddr1~wsaddr10,其初始值依次为1,2,3,4,…,10,为其分配的存储地址为vladdr1~vladdr10。假设需要将变量A2的初始值调整为3,变量A3的初始值调整为5,变量A5的初始值调整为2,那么,初始值存储区域的ROM程序不用重新刷新烧写,只需要将变量的存储顺序更新为A1、A5、A2、A4、A3、A6、A7、A8、A9、A10即可,也就是说,将A2调整至存储地址wsaddr3中存储,将A3调整至存储地址wsaddr5中存储,将A5调整至存储地址wsaddr2中存储。初始值存储区域中各初始值的存储地址保持不变。
在蓝牙技术领域,涉及到蓝牙协议栈及应用程序的扩展协议接口,一般情况下基础的蓝牙协议栈是固定的代码程序,大幅修改及优化的可能性很小,应用程序及其扩展协议接口针对不同的产品应用场景会不一样,一些全局变量的初始值不同可能会对应运行不同的应用程序。例如,有的全局变量控制着IOT设备的运行角色是主设备还是从设备,从而控制该IOT设备是处于扫描工作方式还是广播工作方式,给该变量赋予初始值不同则对应的运行模式及场景是不一样的,此种情况下,适合使用本发明实施例提供的方案来进行调试,只需修改控制IOT设备运行角色的全局变量的初始值,即对ROM中的存储初始化值的区域进行微量调整即可,就可以完成IOT设备不同角色的运行切换,而不需要每次都重新烧写新的ROM程序。本发明实施例提供的方案无论是应用于升级还是系统调试,都可以节省大量的时间和工作量。
下面通过三个具体实施例,对本发明实施例提供的一种SoC中程序初始化方法进行详细说明。
实施例1:本实施例中描述了主程序初始化的过程,如图2所示,包括:
S21、统计主程序中所有需要初始化的变量及其初始值;
S22、将所有需要初始化的变量的初始值按照与对应的变量相同的排列顺序进行存储,如以编辑成列表形式存储等;
S23、为所有需要初始化的变量分配连续的存储地址;
S24、在主程序进行初始化时,调用内存拷贝语句,一次性将所有变量初始化。
实施例2:本实施例中描述了系统配置修改或程序修改导致的变量和/或变量的初始值发生变化的场景,如图3所示,包括:
S31、确定发生了系统配置修改或程序修改;
S32、判断变量及其存储位置是否需要调整;
若是,执行S33;
若否,执行S34;
S33、调整变量及其存储位置,刷新变量的存储地址,继续执行S34;
S34、判断初始值存储区域内的初始值是否需要调整;
若是,执行S35;
若否,执行S36;
S35、更新DATA区域中的初始值,继续执行S36;
S36、刷新ROM程序,重新执行初始化。
其中,S35中更新初始值列表时,可以采用将新的初始值覆盖原有的初始值的方式进行更新,例如,DATA区域中原初始值为[0X01,0X02,0X03],新的初始值为[0X02,0X03,0X01],更新时,用新的初始值[0X02,0X03,0X01]替换掉原初始值[0X01,0X02,0X03]即可。
实施例3:本实施例中描述了初始值需要修改的场景,如图4所示,包括:
S41、运行IOT设备,角色为主设备模式,启动蓝牙扫描操作;
S42、确定需要将IOT设备的角色切换为从设备模式;
S43、查找对应的标识IOT设备的角色的全局变量,并在初始值列表中查找到所述全局变量对应的初始值;
S44、将查找到的初始值修改为表示从设备模式的初始值;
S45、更新DATA区域中的初始值;
S46、重新启动程序,运行IOT设备的从设备模式。相应的,程序会自动启动广播工作方式。
上述方法处理流程可以用软件程序实现,该软件程序可以存储在存储介质中,当存储的软件程序被调用时,执行上述方法步骤。
基于同一发明构思,本发明实施例中还提供了一种SoC中进行程序初始化的装置,由于该装置解决问题的原理与上述图1~图4所示实施例中的方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
图5所示实施例中,提供了一种SoC中进行程序初始化的装置,包括:
读取模块51,用于根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
初始化模块52,用于根据所述初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
一种可能的实施方式中,所述约束条件为存储地址连续,或任意两个存储地址间隔相同。
进一步的,若所述约束条件为存储地址连续,所述初始化语句中还包括所述变量的数量,或者所述初始化语句中还包括变量结束存储地址和初始值结束存储地址;
若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中还包括所述变量的数量和存储地址间隔,或者所述初始化语句中还包括变量结束存储地址、初始值结束存储地址和存储地址间隔。
一种可能的实施方式中,所述变量存储于只读存储器ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
基于上述任一实施例,一种可能的实施方式中,所述装置还包括:
调整模块53,用于若至少一个变量的初始值发生更新,在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值;或者
若所述ROM中至少两个变量的初始值之间进行调整,在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
本发明实施例中还提供了一种SoC,该SoC包括图5所示实施例中的装置。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种片上系统SoC中进行程序初始化的方法,其特征在于,包括:
根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
根据所述初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
2.根据权利要求1所述的方法,其特征在于,所述约束条件为存储地址连续,或任意两个存储地址间隔相同。
3.根据权利要求2所述的方法,其特征在于,若所述约束条件为存储地址连续,所述初始化语句中还包括所述变量的数量,或者所述初始化语句中还包括变量结束存储地址和初始值结束存储地址;
若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中还包括所述变量的数量和存储地址间隔,或者所述初始化语句中还包括变量结束存储地址、初始值结束存储地址和存储地址间隔。
4.根据权利要求1所述的方法,其特征在于,所述变量存储于只读存储器ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
5.根据权利要求1-4任一项所述的方法,其特征在于,若至少一个变量的初始值发生更新,所述方法还包括:在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值;或者
若所述ROM中至少两个变量的初始值之间进行调整,所述方法还包括:
在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
6.一种片上系统SoC中进行程序初始化的装置,其特征在于,包括:
读取模块,用于根据初始化语句中的初始值起始存储地址,读取需要初始化的所有变量的初始值;
初始化模块,用于根据所述初始化语句中的变量起始存储地址,将所读取的初始值,依次赋值给与每个初始值对应的变量;
其中,所述变量的存储地址满足设定的约束条件;所述初始值的存储地址满足所述约束条件,且所述初始值的存储顺序与所述初始值对应的变量的存储顺序相同。
7.根据权利要求6所述的装置,其特征在于,所述约束条件为存储地址连续,或任意两个存储地址间隔相同。
8.根据权利要求7所述的装置,其特征在于,若所述约束条件为存储地址连续,所述初始化语句中还包括所述变量的数量,或者所述初始化语句中还包括变量结束存储地址和初始值结束存储地址;
若所述约束条件为任意两个存储地址间隔相同,所述初始化语句中还包括所述变量的数量和存储地址间隔,或者所述初始化语句中还包括变量结束存储地址、初始值结束存储地址和存储地址间隔。
9.根据权利要求6所述的装置,其特征在于,所述变量存储于只读存储器ROM中,所述初始值存储于所述ROM的闪存Flash中指定的数据区域内。
10.根据权利要求6-9任一项所述的装置,其特征在于,所述装置还包括:
调整模块,用于若至少一个变量的初始值发生更新,在初始值存储区域内,将所述至少一个变量的初始值修改为更新后的初始值;或者
若所述ROM中至少两个变量的初始值之间进行调整,在初始值存储区域内,按照所述至少两个变量的存储位置,调整所述初始值的存储顺序,以使调整后的初始值的存储顺序与对应的变量的存储顺序一致;或者,在变量存储区域内,按照所述至少两个变量更新后的初始值在初始值存储区域内的存储顺序,在变量存储区域调整所述至少两个变量的存储顺序,以使调整后的变量的存储顺序与对应的初始值的存储顺序一致。
11.一种片上系统SoC,其特征在于,所述SoC包括上述权利要求6-10任一项所述的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610969992.8A CN108008981B (zh) | 2016-10-27 | 2016-10-27 | 一种片上系统SoC中进行程序初始化的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610969992.8A CN108008981B (zh) | 2016-10-27 | 2016-10-27 | 一种片上系统SoC中进行程序初始化的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108008981A true CN108008981A (zh) | 2018-05-08 |
CN108008981B CN108008981B (zh) | 2020-12-08 |
Family
ID=62048622
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610969992.8A Active CN108008981B (zh) | 2016-10-27 | 2016-10-27 | 一种片上系统SoC中进行程序初始化的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108008981B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596769A (zh) * | 2020-12-21 | 2021-04-02 | 潍柴动力股份有限公司 | 一种变量管理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119654A1 (en) * | 2007-10-30 | 2009-05-07 | International Business Machines Corporation | Compiler for optimizing program |
CN102930090A (zh) * | 2012-10-22 | 2013-02-13 | 中兴通讯股份有限公司 | 高级语言实现硬件非阻塞赋值的建模方法 |
CN103777969A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种无需重启部署服务器参数的方法和装置 |
CN104660372A (zh) * | 2015-02-09 | 2015-05-27 | 重庆华数机器人有限公司 | 一种基于单片机异步串行端口多通道数据传输方法及系统 |
CN105550010A (zh) * | 2016-03-11 | 2016-05-04 | 湘潭大学 | 一种基于SoC的无线智能程序加载方法及系统 |
-
2016
- 2016-10-27 CN CN201610969992.8A patent/CN108008981B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090119654A1 (en) * | 2007-10-30 | 2009-05-07 | International Business Machines Corporation | Compiler for optimizing program |
CN103777969A (zh) * | 2012-10-19 | 2014-05-07 | 阿里巴巴集团控股有限公司 | 一种无需重启部署服务器参数的方法和装置 |
CN102930090A (zh) * | 2012-10-22 | 2013-02-13 | 中兴通讯股份有限公司 | 高级语言实现硬件非阻塞赋值的建模方法 |
CN104660372A (zh) * | 2015-02-09 | 2015-05-27 | 重庆华数机器人有限公司 | 一种基于单片机异步串行端口多通道数据传输方法及系统 |
CN105550010A (zh) * | 2016-03-11 | 2016-05-04 | 湘潭大学 | 一种基于SoC的无线智能程序加载方法及系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596769A (zh) * | 2020-12-21 | 2021-04-02 | 潍柴动力股份有限公司 | 一种变量管理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN108008981B (zh) | 2020-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107133285B (zh) | 一种分布式主键生成方法与装置 | |
CN103108243A (zh) | 电视机显示屏参数独立和升级的方法及其系统 | |
CN106406768A (zh) | 安卓系统用户数据分区调整方法及装置 | |
CN107273146B (zh) | 虚拟机升级方法及装置 | |
CN100403280C (zh) | 一种更新数据的方法和装置 | |
CN107911741A (zh) | 可用存储空间提升方法、智能电视及计算机可读存储介质 | |
CN106325647B (zh) | 一种ui调整方法、装置和移动终端 | |
CN110019083A (zh) | 分布式文件系统的存储方法、装置、电子设备及存储介质 | |
CN108008981A (zh) | 一种片上系统SoC中进行程序初始化的方法和装置 | |
JP5146134B2 (ja) | コンパイル処理装置,ならびにアクセスパターン変更処理方法および処理プログラム | |
CN110399200A (zh) | 一种云平台资源调度方法和装置 | |
CN116954685B (zh) | 低代码应用系统灰度滚动升级方法、系统、设备及介质 | |
JP6292096B2 (ja) | プログラマブルコントローラシステム、その支援装置 | |
CN109388644A (zh) | 一种数据更新方法及装置 | |
CN108399076A (zh) | 一种基于uefi的固件更新方法与装置 | |
US10466974B2 (en) | Independent expression animations | |
WO2019179252A1 (zh) | 一种样本回放数据存取方法及装置 | |
CN109144403A (zh) | 一种用于云盘模式切换的方法与设备 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN107562440B (zh) | 一种eeprom版本更新方法及装置 | |
CN114237903A (zh) | 内存分配优化方法、装置、电子设备、介质及程序产品 | |
CN109429100A (zh) | 一种页面路径的存储方法、装置及系统 | |
CN110971665A (zh) | 一种对接多类型存储的管理方法、系统、设备及存储介质 | |
CN111324410A (zh) | 终端开机动画播放方法、装置、终端和存储介质 | |
CN110515852A (zh) | 一种基于敏捷开发的应用更新测试方法及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 266555 Qingdao economic and Technological Development Zone, Shandong, Hong Kong Road, No. 218 Applicant after: Hisense Video Technology Co., Ltd Address before: 266100 Zhuzhou Road, Laoshan District, Shandong, No. 151, No. Applicant before: HISENSE ELECTRIC Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |