本发明涉及电子产品,特别涉及一种动态加载代码方法、系统、电子设备及上位机。
背景技术:
1、随着当代电子技术的不断发展及普及,消费类电子产品在人们的生活中占据了重要的位置,比如蓝牙耳机、物联网iot设备、儿童电子玩具等。而大多数消费类电子产品对成本有严格的要求,如对用于存储代码、数据的flash存储器容量,flash存储器的容量越小,成本就会越低。一般的嵌入式系统,所有的源代码在经过编译、链接等步骤后,生成一个可烧写到存储介质(通常是flash存储器)的固件文件,该固件文件包含代码指令、已经初始化的代码数据等内容,全部内容烧写到flash存储器中,需要占用flash存储器较大的存储空间,不利于降低成本。
技术实现思路
1、本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种动态加载代码方法、系统、电子设备及上位机,能够降低电子设备的flash存储器的空间占用,有利于降低成本。
2、本发明实施例提供一种动态加载代码方法,包括:
3、对目标代码进行编译和链接,得到第一可执行文件,其中,所述目标代码包括待烧写的第一代码段和能够动态加载的第二代码段,在编译阶段配置所述第二代码段在目标电子设备的ram存储器中的目标运行地址;
4、将所述第二代码段从所述第一可执行文件中进行分离,得到动态代码文件和烧写固件文件,所述动态代码文件记录有所述目标运行地址;
5、将所述动态代码文件存储至目标上位机中,以及将所述烧写固件文件烧写至所述目标电子设备的flash存储器中;
6、在所述目标电子设备和所述目标上位机通讯连接,且所述目标电子设备需要执行所述第二代码段的情况下,所述目标电子设备向所述目标上位机发送动态加载代码请求,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一;
7、所述目标上位机响应于所述动态加载代码请求,向所述目标电子设备发送对应的所述动态代码文件;
8、所述目标电子设备接收传输自所述目标上位机的所述动态代码文件,并将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址。
9、本发明实施例提供一种动态加载代码方法,包括:
10、对目标代码进行编译和链接,得到第一可执行文件,其中,所述目标代码包括待烧写的第一代码段和能够动态加载的第二代码段,在编译阶段配置所述第二代码段在目标电子设备的ram存储器中的目标运行地址;
11、将所述第二代码段从所述第一可执行文件中进行分离,得到动态代码文件和烧写固件文件,所述动态代码文件记录有所述目标运行地址;
12、将所述动态代码文件存储至目标上位机中,以及将所述烧写固件文件烧写至所述目标电子设备的flash存储器中;
13、在所述目标电子设备和所述目标上位机通讯连接的情况下,所述目标电子设备向所述目标上位机发送动态加载代码请求,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一;
14、所述目标上位机响应于所述动态加载代码请求,向所述目标电子设备发送对应的所述动态代码文件;
15、所述目标电子设备接收传输自所述目标上位机的所述动态代码文件,并将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址。
16、本发明实施例提供一种动态加载代码方法,应用于电子设备,所述电子设备的flash存储器烧写有第一代码段,且所述电子设备与目标上位机通讯连接,所述动态加载代码方法包括:
17、运行所述第一代码段;
18、在需要执行动态加载代码的情况下,向所述目标上位机发送动态加载代码请求,所述动态加载代码请求包括动态代码文件的编号、名称或功能代号的至少之一;
19、响应于所述目标上位机对所述动态加载代码请求的应答,接收传输自所述目标上位机的动态代码文件;
20、根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到ram存储器的所述目标运行地址。
21、本发明实施例提供一种动态加载代码方法,应用于电子设备,所述电子设备的flash存储器烧写有第一代码段,所述动态加载代码方法包括:
22、启动并运行所述第一代码段,以与目标上位机进行通讯连接;
23、向所述目标上位机发送动态加载代码请求,所述动态加载代码请求包括动态代码文件的编号、名称或功能代号的至少之一;
24、响应于所述目标上位机对所述动态加载代码请求的应答,接收传输自所述目标上位机的动态代码文件;
25、根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到ram存储器的所述目标运行地址。
26、本发明实施例提供一种动态加载代码方法,应用于上位机,包括:
27、响应于目标电子设备的动态加载代码请求,根据所述动态加载代码请求确定待发送的动态代码文件,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一;
28、向所述目标电子设备发送所述动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在所述目标电子设备的ram存储器中的目标运行地址;
29、或者,
30、响应于目标电子设备的通讯连接请求,建立通讯连接;
31、在建立通讯连接的情况下,响应于所述目标电子设备的动态加载代码请求,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一,确定待发送的动态代码文件;
32、向所述目标电子设备发送动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在所述目标电子设备的ram存储器中的目标运行地址。
33、本发明实施例提供一种动态加载代码系统,包括:
34、电子设备,包括flash存储器和ram存储器,所述flash存储器中存储有第一代码段;
35、上位机,与所述电子设备通讯连接,所述上位机中存储有动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在所述电子设备的所述ram存储器中的目标运行地址;在接收到来自所述电子设备的动态加载代码请求的情况下,所述上位机将所述动态代码文件传输给所述电子设备,以使所述电子设备将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
36、本发明实施例提供一种动态加载代码系统,包括:
37、电子设备,包括flash存储器和ram存储器,所述flash存储器中存储有第一代码段;
38、上位机,存储有动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在所述电子设备的所述ram存储器中的目标运行地址;在所述上位机与所述电子设备建立通讯连接的情况下,所述上位机将所述动态代码文件传输给所述电子设备,以使所述电子设备将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
39、本发明实施例提供一种电子设备,包括处理器以及与所述处理器连接的通讯模块、flash存储器和ram存储器,所述flash存储器中存储有第一代码段,所述处理器通过所述通讯模块与目标上位机通讯连接;在所述处理器运行所述第一代码段且需要执行动态加载代码的情况下,通过所述通讯模块向所述目标上位机发送动态加载代码请求以及接收来自所述目标上位机的动态代码文件,并根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
40、本发明实施例提供一种电子设备,包括处理器以及与所述处理器连接的通讯模块、flash存储器和ram存储器,所述flash存储器中存储有第一代码段,在所述处理器通过所述通讯模块与目标上位机建立通讯连接的情况下,通过所述通讯模块向所述目标上位机发送动态加载代码请求以及接收来自所述目标上位机的动态代码文件,并根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
41、本发明实施例提供一种上位机,所述上位机中存储有动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在目标电子设备的ram存储器中的目标运行地址;所述上位机与所述目标电子设备通讯连接,在接收到来自所述目标电子设备的动态加载代码请求的情况下,所述上位机将所述动态代码文件传输给所述目标电子设备,以使所述目标电子设备将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一;
42、或者,所述上位机中存储有动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在所述目标电子设备的ram存储器中的目标运行地址;在所述上位机与所述目标电子设备建立通讯连接的情况下,所述上位机接收来自所述目标电子设备的动态加载代码请求并将所述动态代码文件传输给所述目标电子设备,以使所述目标电子设备将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
43、本发明实施例至少具有如下有益效果:
44、通过将完整的固件文件拆分成待烧写的第一代码段和能够动态加载的第二代码段,并得到烧写固件文件和动态代码文件,将动态代码文件存储在上位机中,将烧写固件文件烧写至电子设备的flash存储器中,在需要执行第二代码段或与上位机建立通讯连接的情况下,才将第二代码段从上位机传输的动态代码文件中复制到ram存储器中,能够降低电子设备的flash存储器的空间占用,有利于降低成本。
45、本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
1.一种动态加载代码方法,其特征在于,包括:
2.一种动态加载代码方法,其特征在于,包括:
3.一种动态加载代码方法,应用于电子设备,其特征在于,所述电子设备的flash存储器烧写有第一代码段,且所述电子设备与目标上位机通讯连接,所述动态加载代码方法包括:
4.一种动态加载代码方法,应用于电子设备,其特征在于,所述电子设备的flash存储器烧写有第一代码段,所述动态加载代码方法包括:
5.一种动态加载代码方法,应用于上位机,其特征在于,包括:
6.一种动态加载代码系统,其特征在于,包括:
7.一种动态加载代码系统,其特征在于,包括:
8.一种电子设备,其特征在于,包括处理器以及与所述处理器连接的通讯模块、flash存储器和ram存储器,所述flash存储器中存储有第一代码段,所述处理器通过所述通讯模块与目标上位机通讯连接;在所述处理器运行所述第一代码段且需要执行动态加载代码的情况下,通过所述通讯模块向所述目标上位机发送动态加载代码请求以及接收来自所述目标上位机的动态代码文件,并根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
9.一种电子设备,其特征在于,包括处理器以及与所述处理器连接的通讯模块、flash存储器和ram存储器,所述flash存储器中存储有第一代码段,在所述处理器通过所述通讯模块与目标上位机建立通讯连接的情况下,通过所述通讯模块向所述目标上位机发送动态加载代码请求以及接收来自所述目标上位机的动态代码文件,并根据所述动态代码文件中记录的目标运行地址,从所述动态代码文件中将需要动态加载的第二代码段复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一。
10.一种上位机,其特征在于,所述上位机中存储有动态代码文件,所述动态代码文件包含第二代码段以及记录有所述第二代码段在目标电子设备的ram存储器中的目标运行地址;所述上位机与所述目标电子设备通讯连接,在接收到来自所述目标电子设备的动态加载代码请求的情况下,所述上位机将所述动态代码文件传输给所述目标电子设备,以使所述目标电子设备将所述第二代码段从所述动态代码文件中复制到所述ram存储器的所述目标运行地址,所述动态加载代码请求包括所述动态代码文件的编号、名称或功能代号的至少之一;