CN114296694A - 小程序的生成方法和加载方法 - Google Patents
小程序的生成方法和加载方法 Download PDFInfo
- Publication number
- CN114296694A CN114296694A CN202111598354.7A CN202111598354A CN114296694A CN 114296694 A CN114296694 A CN 114296694A CN 202111598354 A CN202111598354 A CN 202111598354A CN 114296694 A CN114296694 A CN 114296694A
- Authority
- CN
- China
- Prior art keywords
- applet
- executable file
- generating
- symbol
- symbol table
- 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.)
- Pending
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提出了一种小程序的生成方法和加载方法,所述生成方法包括:获得系统的可执行文件和符号的映射信息,以生成符号表;获得小程序的源代码,将小程序源代码进行编译,得到目标代码;以及通过链接目标代码与符号表来生成小程序。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种小程序的生成方法和加载方法。
背景技术
目前,用户或者开发者可以通过小程序框架定制开发喜欢的表盘、计算器等应用,例如,为父母编写提醒吃药的小程序,为孩子编写运动提示的小程序等。现有技术方案为采用Javascript开发工具,需要现有操作系统移植Javascript解释器和资源抽象层等。因此,操作系统为了运行Javascript程序而运行Javascript解释器,一般需要64KB RAM和200KBROM,同时消耗一定的CPU算力,而且操作系统还必须提供从Javascript到外设设备的访问接口。
发明内容
技术问题
通过小程序框架开发的小程序在运行时需要Javascript解释器和资源抽象层,需要一定的RAM和ROM空间以及一定的CPU算力,对微控制器要求较高。一些资源受限的微控制器(例如,穿戴设备上的CPU或SoC)难以支持小程序流畅运行,而且还会增加功耗,降低续航能力。
此外,基于Javascript进行开发还增加了整个系统的开发复杂度。对于不熟悉Javascript开发的程序员来说,也增加了学习难度,项目的开发难度增大,上市周期较长。
问题的解决方案
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,包括:获得系统的可执行文件和符号的映射信息,以生成符号表;获得小程序的源代码,将小程序源代码进行编译,得到目标代码;以及通过链接目标代码与符号表来生成小程序。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,通过链接目标代码与符号表来生成小程序包括:将目标代码与符号表进行链接,生成第一可执行文件,以及将所述第一可执行文件作为小程序发布。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,通过链接目标代码与符号表来生成小程序包括:将目标代码与符号表进行链接,生成第二可执行文件;以及使用打包工具从第二可执行文件提取特定内容,通过对提取的特定内容打包来整成小程序。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,所述特定内容包括第二可执行文件的代码段、数据段、启动运行函数的地址和结束运行函数的地址。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,所述系统的可执行文件包括ELF文件。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,所述第一可执行文件和所述第二可执行文件包括ELF文件。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,生成符号表包括:使用符号工具来通过符号的映射信息从所述系统的可执行文件提取符号,以及为提取的符号生成符号表。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,所述系统的可执行文件与操作系统的系统工程相关联。
根据本公开的一方面,提出了一种小程序的生成方法,其特征在于,所述系统的可执行文件还包括用于硬件设备的驱动的符号。
根据本公开的一方面,提出了一种小程序的加载方法,其特征在于,包括:解析小程序的文件头,获得小程序的操作接口;获取和转载小程序的代码段和数据段;初始化BSS段;以及根据小程序的操作接口,运行小程序的线程。
根据本公开的一方面,提出了一种小程序的加载方法,还包括:从小程序本身获得符号信息,以用于将转载小程序的代码段和数据段到内存中。
根据本公开的一方面,提出了一种小程序的加载方法,其中,通过解析小程序来获得用于符号信息的符号表,以读取小程序的符号信息。
公开的有益效果
通过本公开获得的小程序可以替代原有通过小程序框架生成的小程序,使得小程序在加载时无需解释器和资源抽象层,从而显著地节省RAM和ROM空间以及CPU算力,减少微控制器的功耗并加快运行速度;此外,通过从小程序的操作接口调用小程序的驱动函数以运行小程序的线程还能够省略从Javascript到外设设备的访问接口,所以,本公开进一步地加快了开发的过程。
附图说明
从以下结合附图的描述中,本公开的特定实施例的上述和其他方面、特征和优点将变得更加明显,其中:
图1是现有技术的小程序框架的示意图;
图2是根据本公开实施例的小程序的生成方法的流程图;以及
图3是根据本公开实施例的小程序的加载方法的流程图。
具体实施方式
在进行下面的详细描述之前,阐述贯穿本专利文件使用的某些单词和短语的定义可能是有利的。术语“包括”和“包含”及其派生词是指包括但不限于。术语“或”是包含性的,意思是和/或。短语“与……相关联”及其派生词是指包括、包括在……内、互连、包含、包含在……内、连接或与……连接、耦接或与……耦接、与……通信、配合、交织、并列、接近、绑定或与……绑定、具有、具有属性、具有关系或与……有关系等。术语“控制器”是指控制至少一个操作的任何设备、系统或其一部分。这种控制器可以用硬件、或者硬件和软件和/或固件的组合来实施。与任何特定控制器相关联的功能可以是集中式的或分布式的,无论是本地的还是远程的。短语“至少一个”,当与项目列表一起使用时,意指可以使用所列项目中的一个或多个的不同组合,并且可能只需要列表中的一个项目。例如,“A、B、C中的至少一个”包括以下组合中的任意一个:A、B、C、A和B、A和C、B和C、A和B和C。
贯穿本专利文件提供了其他特定单词和短语的定义。本领域普通技术人员应该理解,在许多情况下,即使不是大多数情况下,这种定义也适用于这样定义的单词和短语的先前和将来使用。
在本专利文件中,变换块的应用组合以及子变换块的划分层级仅用于说明,在不脱离本公开的范围内,变换块的应用组合以及子变换块的划分层级可以具有不同的方式。
以下讨论的图1至图3以及用于描述本专利文档中的本公开的原理的各种实施例仅作为说明,并且不应以任何方式解释为限制本公开的范围。本领域技术人员将理解,本公开的原理可以在任何适当布置的系统或设备中实施。
在描述本发明实施例前,将简单介绍本公开对应的现有技术的小程序框架。
图1是现有技术的小程序框架的示意图。如图1所示,小程序位于应用层。在应用层下方,存在Javascript解释器和资源抽象层。具体地,小程序在运行时需要系统运行Javascript环境,Javascript运行环境提供Javascript解释器以实时解释Javascript代码;进一步地,资源抽象层提供各种接口,用于在解释Javascript代码之后访问系统资源。资源抽象层可以包括各种库,例如SDL(Simple DirectMedia Layer,简易直控媒体层)。操作系统可以是例如作为嵌入式系统的RTOS(Real Time Operating System,实时操作系统),通过各种图形用户界面(GUI)框架(诸如LVGL(Light and Versatile GraphicsLibrary,轻量多功能图形库))和其他驱动来操作硬件设备。
从上面可以看出,由于小程序在部署时未经过编译,因此小程序需要包括Javascript解释器和资源抽象层在内的多个中间件才能正常运行。因此,如本文先前所述,这些中间件一般至少需要64KB RAM和200KB ROM,同时消耗一定的CPU算力,而且为了与硬件设备进行交互,操作系统还必须提供从Javascript到外设设备的访问接口。
图2是根据本公开实施例的小程序的生成方法的流程图。如图2所示,小程序的生成方法开始于分别获得系统的可执行文件和映射信息以及获得用于生成小程序的源代码。
具体地,系统的可执行文件是作为操作系统的系统工程组件的各类可执行文件,例如在RTOS中作为系统文件的一些ELF(Executable and Linkable Format,可执行与可链接格式)格式文件。根据本发明实施例,ELF文件通过4部分组成,分别是ELF报头(ELFheader)、程序报头表(Program header table)、节(Section)和节报头表(Section headertable)。然而本领域技术人员应该理解,在一个ELF文件中不一定包含全部内容,而且其位置也未必如同所示这样安排,只有ELF报头的位置是固定的,其余各部分的位置、大小等信息由ELF报头中的各项值来决定。此外,本领域技术人员应该理解,在图2中示出的ELF文件仅仅用于示例,其可以使用其他类型的可执行文件,而不脱离本发明的范围。由于ELF格式属于二进制格式,因此还需要获得与上述ELF格式文件相对应的映射信息,其中,映射信息是包括符号的地址等数据的任何信息,例如后缀为“.map”的映射文件。在一般情况下,操作系统自带与上述ELF格式文件相对应的映射文件,或者映射文件可以从操作系统的官方网站等途径获得。在获得系统的可执行文件和映射信息后,通过生成符号工具来提供系统的符号表,其中,符号包括可执行文件(例如,ELF文件)中实现或使用的所有(全局)变量和函数;系统的符号表保存了查找文件符号、为符号赋值、重定位符号所需的符号信息。
根据本发明的实施例,系统的可执行文件还可以包括用于硬件设备的驱动的符号。
根据本发明的实施例,通过生成符号工具来提供系统的符号表包括:使用符号工具来通过映射信息读取与符号相关联的信息,根据与符号相关联的信息来从系统的可执行文件提取符号,以及为提取的符号生成符号表。
根据本发明的实施例,所获得的用于生成小程序的源代码是可用于生成小程序的任何格式的文件,例如后缀为“.c”、“.cpp”、“.s”或“.S”的文件。开发者可以根据正常开发过程来准备源代码。在获得小程序源代码后,将源代码转换为目标代码。
具体地,将小程序源代码编译为目标代码的过程包括下面的步骤:预编译,其包括词法分析、语法分析、语义分析等;编译,其包括生成中间代码和优化中间代码;以及汇编,其包括将中间代码转换成包括目标机器指令的目标代码。
根据本发明的实施例,对于系统的可执行文件进行处理以生成系统的符号表以及对于小程序的源代码进行处理以获得目标代码的操作可以并行地进行,或者按照一定顺序进行,在本发明中并不对其进行限定。
由于目标代码一般是例如不可立即执行的可重定位文件,因此还需要经过链接处理才能得到小程序。生成小程序时通常会需要引用与系统文件的符号相关的信息(诸如函数、全局变量),因此,在生成小程序的过程中,需要将目标代码和符号表进行链接,以生成用于小程序的可执行文件。根据本发明的实施例,例如,所述可执行文件可以包括ELF格式文件。
之后,根据所生成的可执行文件来生成小程序。
在根据本发明的一种实施例中,生成小程序的方式包括:将目标代码和符号表进行链接,以生成第一可执行文件,并且将第一可执行文件(例如ELF文件)直接作为小程序发布。在此情况下,因为ELF文件会稍微大一些,包含一些其他信息,比如符号表等,所以会多占用一部分空间。另一方面,当系统加载该小程序时,需要解析作为小程序的ELF,从中提取出有用信息(代码段、数据段、及小程序启动运行函数的地址、结束运行函数的地址等)来生成内存镜像(即,bin文件或hex文件),然后系统将内存镜像下载到存储器中执行。在此情况下,因为系统的CPU算力有限,所以加载小程序也会占用一定的时间。
在根据本发明的另一实施例中,生成小程序的方式包括:将目标代码与符号表进行链接,以生成第二可执行文件,例如第二ELF文件;以及使用打包工具来按预设规则从第二可执行文件提取特定内容,并且将提取的特定内容打包作为小程序发布。根据本发明实施例,特定内容包括第一可执行文件的代码段、数据段、启动运行函数的地址和结束运行函数的地址等。
在上述实施方式中,第一可执行文件和第二可执行文件为ELF格式文件。然而,本领域技术人员应该理解,在不脱离本发明范围的情况下,其也可以是别的类型的可执行文件。
根据本发明的实施例,系统的可执行文件与操作系统的系统工程相关联。
根据本发明的实施例,系统的可执行文件还可以包括用于硬件设备的驱动的符号。
根据本发明的实施例,小程序的格式取决于所要部署到的操作系统,因此不同操作系统上的小程序可能具有不同的格式。因此,开发者可能根据需要来使用各种打包工具或其他工具,以用于生成各种满足开发者要求的特定格式的小程序。在本发明中,对于打包工具并不进行限定。根据本发明的实施例,小程序可以通过各种方式(例如,应用市场、网页、磁盘等)进行分发,并且用户可以通过各种协议(例如,蓝牙、超文本传输协议(HTTP)、文件传输协议(FTP)等)将小程序下载到设备的存储器(例如,快闪存储器(Flash Memory)、安全数码卡(SD Card)、嵌入式多媒体卡(eMMC)等)中。在运行小程序时,设备的微控制器将小程序装载到内存(例如,随机存取存储器(RAM)、只读内存(ROM)等)中,按照提取的代码、数据段的大小,及地址初始化环境,把代码、数据转载进指定的地址,调用小程序驱动函数来运行小程序。
图3是根据本公开实施例的小程序的加载方法的流程图。如图3所示,小程序的加载方法包括:解析小程序的文件头,获得小程序的操作接口;获取和转载小程序的代码段和数据段;初始化BSS(符号开始块(Block Started by Symbol))段;以及根据小程序的操作接口,运行小程序的线程。
具体地,根据本发明实施例,在加载小程序时,首先解析小程序的文件头,以获得关于小程序的信息,然后对小程序进行检查,以获得小程序的操作接口;然后,从小程序本身获得符号信息,从而可以在不使用解释器和资源抽象层的情况下,直接转载小程序的代码段和数据段到RAM上,并且初始化BSS段,从小程序的操作接口调用小程序的驱动函数,运行小程序的线程。其中,代码段包括小程序执行代码;数据段包括小程序中已初始化的全局变量;BSS段包括小程序中未初始化的全局变量。然而,本领域技术人员应该理解,在不脱离本发明范围的情况下,可以对上述特征进行修改或者变化。此外,通过解析小程序来获得用于符号信息的符号表,以读取小程序的符号信息。具体地,在小程序为例如ELF格式文件的情况下,首先从小程序解析出符号表,然后再从符号表获得符号信息。
文本和附图仅作为示例提供,以帮助理解本公开。它们不应被解释为以任何方式限制本公开的范围。尽管已经提供了某些实施例和示例,但是基于本文所公开的内容,对于本领域技术人员而言显而易见的是,在不脱离本公开的范围的情况下,可以对所示的实施例和示例进行改变。
根据本公开的实施例,提供了一种小程序的生成方法和相应的加载方法,使得小程序在加载时无需解释器和资源抽象层,从而显著地节省RAM和ROM空间以及CPU算力,减少微控制器的功耗并加快运行速度;此外,通过从小程序的操作接口调用小程序的驱动函数以运行小程序的线程还能够省略从Javascript到外设设备的访问接口,所以,本公开进一步地加快了开发的过程。
尽管已经用示例性实施例描述了本公开,但是可以向本领域技术人员建议各种改变和修改。本公开旨在涵盖落入所附权利要求范围内的这种改变和修改。
本发明中的任何描述都不应被理解为暗示任何特定的元件、步骤或功能是必须包括在权利要求范围内的必要元件。专利主题的范围仅由权利要求限定。
Claims (12)
1.一种小程序的生成方法,其特征在于,包括:
获得系统的可执行文件和符号的映射信息,以生成符号表;
获得小程序的源代码,将小程序源代码进行编译,得到目标代码;以及
通过链接目标代码与符号表来生成小程序。
2.根据权利要求1所述的小程序的生成方法,其特征在于,通过链接目标代码与符号表来生成小程序包括:
将目标代码与符号表进行链接,生成第一可执行文件,以及将所述第一可执行文件作为小程序发布。
3.根据权利要求1所述的小程序的生成方法,其特征在于,通过链接目标代码与符号表来生成小程序包括:
将目标代码与符号表进行链接,生成第二可执行文件;以及
使用打包工具从第二可执行文件提取特定内容,通过对提取的特定内容打包来整成小程序。
4.根据权利要求3所述的小程序的生成方法,其特征在于,所述特定内容包括第二可执行文件的代码段、数据段、启动运行函数的地址和结束运行函数的地址。
5.根据权利要求1所述的小程序的生成方法,其特征在于,所述系统的可执行文件包括ELF文件。
6.根据权利要求2或3所述的小程序的生成方法,其特征在于,所述第一可执行文件和所述第二可执行文件包括ELF文件。
7.根据权利要求1所述的小程序的生成方法,其特征在于,生成符号表包括:
使用符号工具来通过符号的映射信息从所述系统的可执行文件提取符号,以及为提取的符号生成符号表。
8.根据权利要求6所述的小程序的生成方法,其特征在于,所述系统的可执行文件与操作系统的系统工程相关联。
9.根据权利要求7所述的小程序的生成方法,其特征在于,所述系统的可执行文件还包括用于硬件设备的驱动的符号。
10.一种小程序的加载方法,其特征在于,包括:
解析小程序的文件头,获得小程序的操作接口;
获取和转载小程序的代码段和数据段;
初始化BSS段;以及
根据小程序的操作接口,运行小程序的线程。
11.根据权利要求10所述的小程序的加载方法,还包括:从小程序本身获得符号信息,以用于将转载小程序的代码段和数据段到内存中。
12.根据权利要求11所述的小程序的加载方法,其中,通过解析小程序来获得用于符号信息的符号表,以读取小程序的符号信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111598354.7A CN114296694A (zh) | 2021-12-24 | 2021-12-24 | 小程序的生成方法和加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111598354.7A CN114296694A (zh) | 2021-12-24 | 2021-12-24 | 小程序的生成方法和加载方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114296694A true CN114296694A (zh) | 2022-04-08 |
Family
ID=80969993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111598354.7A Pending CN114296694A (zh) | 2021-12-24 | 2021-12-24 | 小程序的生成方法和加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114296694A (zh) |
-
2021
- 2021-12-24 CN CN202111598354.7A patent/CN114296694A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN110020307B (zh) | 一种客户端视图的绘制方法和装置 | |
US9086931B2 (en) | System for translating diverse programming languages | |
US9965259B2 (en) | System for translating diverse programming languages | |
RU2459238C2 (ru) | Управляемая среда выполнения для организации взаимодействия между программными приложениями | |
JP2012084165A (ja) | コンピュータにユーザインターフェースを生成させるためのプログラム | |
WO2007027622A2 (en) | System and method for creating and using graphical object instances in a statechart environment | |
WO2007030282A1 (en) | Type inference and type-directed late binding | |
US20230229406A1 (en) | Page rendering method, apparatus, electronic device, computer-readable storage medium, and computer program product | |
CN116069325B (zh) | 前端项目构建方法、装置、设备及计算机可读存储介质 | |
CN112905179A (zh) | 移动端h5页面生成方法、装置、电子设备和存储介质 | |
CN114115923A (zh) | 一种操作系统搭建方法及系统 | |
CN115390846A (zh) | 编译构建方法、装置、电子设备和存储介质 | |
CN114706616A (zh) | 小程序构建方法和装置 | |
US11604662B2 (en) | System and method for accelerating modernization of user interfaces in a computing environment | |
CN112269602B (zh) | 一种WebAssembly加载方法、装置及存储介质 | |
Cimino et al. | An efficient model-based methodology for developing device-independent mobile applications | |
CN113010178A (zh) | 应用程序运行控制方法、装置、设备和介质 | |
US20050177818A1 (en) | Integration of external tools into an existing design environment | |
CN114296694A (zh) | 小程序的生成方法和加载方法 | |
CN115981652B (zh) | 语言互操作方法、装置、存储介质及程序产品 | |
CN113741900B (zh) | 一种前端页面应用的开发方法、装置及相关设备 | |
Alymkulov | Desktop Application Development Using Electron Framework: Native vs. Cross-Platform | |
Abbas et al. | LEARN. NET WITH PROGRAMMING (3-in-1): Covers. NET using C#, Visual Basic ASP. NET | |
Campbell | Objective-C Recipes: A Problem-Solution Approach |
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 |