本发明涉及通信设备及linux系统,特别涉及一种基于嵌入式设备的开机方法及装置、电子设备和计算机存储介质。
背景技术:
1、随着网络、通信、多媒体、信息家电时代的到来,嵌入式系统得到大规模的应用,各种各样的新型设备几乎都会用到嵌入式系统,其中最常用的便是linux系统。在linux系统中,多数为bootloader+kernel+rootfs的模式,其中,所用的bootloader,多为uboot,负责初始化硬件和设置好软件环境,然后加载并运行kernel,kernel运行后,再去加载rootfs,从而使linux系统正常运行。
2、当嵌入式设备对rom(只读存储器)和ram(随机存取存储器)的容量要求较高时,为了降低成本,通常会采用分离式存储(分离式memory)方案,即将设备的内存分为多个层级,每个层次具有不同的性能和特性,从而根据不同的应用场景和需求,选择合适的内存层次来提供高效的计算和存储能力。目前在常用的分离式存储方案中,通常将内存分为l1缓存、主内存和辅助存储器三个层次。其中l1缓存具有较高的访问速度,但容量较小;主内存能够存储更多的数据,但访问速度较慢;辅助存储器一般为外部存储设备,其容量较大,但访问速度更慢。
3、因此,在加载大文件时,现有的分离式存储方案耗时过久,从而影响嵌入式设备的整体开机耗时,使得用户的使用感受较差。
技术实现思路
1、本发明的目的在于提供一种基于嵌入式设备的开机方法,以至少解决现有采用分离式存储方案的嵌入式设备开机时间过久的问题。
2、为解决上述技术问题,本发明提供一种基于嵌入式设备的开机方法,包括:
3、嵌入式设备上电,所述嵌入式设备存放有压缩文件;
4、在启动阶段,对压缩文件进行初步解压,以得到压缩文件的大小和偏移地址;
5、在内核阶段,根据启动阶段得到的压缩文件的大小和偏移地址,对压缩文件进行解压缩,以得到文件数据;
6、启动并运行文件数据。
7、可选的,在所述的基于嵌入式设备的开机方法中,所述压缩文件的取得方法包括:
8、获取大文件;
9、利用文件压缩工具对大文件进行压缩以得到压缩包;
10、对压缩包进行签名以得到压缩文件。
11、可选的,在所述的基于嵌入式设备的开机方法中,所述在启动阶段,对压缩文件进行初步解压,以得到压缩文件的大小和偏移地址的方法包括:
12、获取用于解耦共享内存信息的数据结构体在压缩文件中的大致位置;
13、对压缩文件的大致位置处的数据结构体进行解压缩,以得到压缩文件的大小和偏移地址。
14、可选的,在所述的基于嵌入式设备的开机方法中,所述对压缩文件的大致位置处的数据结构体进行解压缩,以得到压缩文件的大小和偏移地址的方法包括:
15、初始化底层的硬件设备和堆栈,并启动加载模式;
16、对开机模式进行判断,以进入相应的开机模式;
17、加载压缩文件,并对压缩文件的大致位置处的数据结构体进行解压缩,以得到压缩文件的大小和偏移地址。
18、可选的,在所述的基于嵌入式设备的开机方法中,所述对压缩文件的大致位置处的数据结构体进行解压缩,以得到压缩文件的大小和偏移地址的方法包括:
19、获取数据结构体的大小及位于压缩文件的大致位置;
20、在压缩文件的大致位置处,对数据大小与数据结构体的大小相匹配的压缩文件进行解压缩,以得到解压后的数据;
21、若解压后的数据的大小超过了数据结构体的大小,则从解压后的数据中截取与数据结构体的大小相匹配的数据,并将截取的数据赋值给数据结构体,以得到解压后的数据结构体;
22、从解压后的数据结构体中读取压缩文件的大小和偏移地址。
23、可选的,在所述的基于嵌入式设备的开机方法中,所述在内核阶段,根据启动阶段得到的压缩文件的大小和偏移地址,对压缩文件进行解压缩,以得到文件数据的方法包括:
24、加载压缩文件;
25、对压缩文件的签名进行验证;
26、若验证通过,则对压缩文件进行解压缩,得到文件数据。
27、可选的,在所述的基于嵌入式设备的开机方法中,在对压缩文件进行解压缩之前,所述在内核阶段,根据启动阶段得到的压缩文件的大小和偏移地址,对压缩文件进行解压缩,以得到文件数据的方法还包括:
28、判断加载的文件是否为压缩文件;
29、若判断为压缩文件,则对压缩文件进行解压缩;
30、若判断为非压缩文件,则对非压缩文件执行普通加载流程。
31、可选的,在所述的基于嵌入式设备的开机方法中,所述判断加载的文件是否为压缩文件的方法包括:
32、在加载文件时,先加载文件的前三个字节;
33、判断前三个字节是否分别为1f、8b和08;
34、若前三个字节分别为1f、8b和08,则判断为压缩文件,否则为非压缩文件。
35、可选的,在所述的基于嵌入式设备的开机方法中,所述对压缩文件的签名进行验证的方法包括:
36、将加载的压缩文件以连续地址的方式存放在闲置的内存中;
37、利用安全认证工具对压缩文件进行验签。
38、可选的,在所述的基于嵌入式设备的开机方法中,所述对压缩文件进行解压缩的方法包括:
39、根据压缩文件的使用情况,利用文件解压工具对压缩文件进行部分解压或全部解压,其中,利用文件解压工具进行解压缩的方法包括:
40、设置chunk值,并打开压缩文件;
41、从压缩文件中读取数据in[chunk];
42、解压in[chunk],以得到解压后的文件数据;
43、判断文件数据的大小是否小于chunk值;
44、若文件数据的大小不小于chunk值,则将文件数据写入out[chunk];
45、判断压缩文件的可读取大小是否小于0,若是,则关闭压缩文件,否则再次从压缩文件中读取数据in[chunk]。
46、为解决上述技术问题,本发明还提供一种基于嵌入式设备的开机装置,用于实现如上任一项所述的基于嵌入式设备的开机方法,包括:
47、上电模块,用于嵌入式设备上电,所述嵌入式设备存放有压缩文件;
48、压缩模块,用于对大文件进行压缩以得到压缩文件;
49、解压模块,包括初步解压单元和完全解压单元;所述初步解压单元用于在启动阶段,对压缩文件进行初步解压,以得到压缩文件的大小和偏移地址;所述完全解压单元用于在内核阶段,根据启动阶段得到的压缩文件的大小和偏移地址,对压缩文件进行解压缩,以得到文件数据;
50、启动模块,用于启动并运行文件数据。
51、为解决上述技术问题,本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并能够由所述处理器运行的可执行程序;所述处理器运行所述可执行程序时执行如上任一项所述的基于嵌入式设备的开机方法。
52、为解决上述技术问题,本发明还提供一种计算机存储介质,所述计算机存储介质存储有可执行程序;所述可执行程序被执行时,实现如上任一项所述的基于嵌入式设备的开机方法。
53、本发明提供的基于嵌入式设备的开机方法及装置、电子设备和计算机存储介质,包括:嵌入式设备上电,所述嵌入式设备存放有压缩文件;在启动阶段,对压缩文件进行初步解压,以得到压缩文件的大小和偏移地址;在内核阶段,根据启动阶段得到的压缩文件的大小和偏移地址,对压缩文件进行解压缩,以得到文件数据;启动并运行文件数据。通过在启动阶段对压缩文件进行初步解压,并在内核阶段对压缩文件进行解压缩,由于文件压缩后加载至随机存取存储器的耗时会减少,同时,由于在启动和内核阶段分别对压缩文件进行了解压,使得在内核阶段存放压缩文件时可以节省只读存储器的存储空间,进而可以节省压缩文件解压后的启动时间,使得开机时间得到了优化,解决了现有采用分离式存储方案的嵌入式设备开机时间过久的问题。