CN110569040A - 一种在嵌入式***内安装、运行应用程序的方法 - Google Patents

一种在嵌入式***内安装、运行应用程序的方法 Download PDF

Info

Publication number
CN110569040A
CN110569040A CN201910877230.9A CN201910877230A CN110569040A CN 110569040 A CN110569040 A CN 110569040A CN 201910877230 A CN201910877230 A CN 201910877230A CN 110569040 A CN110569040 A CN 110569040A
Authority
CN
China
Prior art keywords
application
embedded system
application program
code
running
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
Application number
CN201910877230.9A
Other languages
English (en)
Inventor
林家仕
孟益方
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Youchuang Billion Technology Co Ltd
Original Assignee
Shenzhen Youchuang Billion Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Youchuang Billion Technology Co Ltd filed Critical Shenzhen Youchuang Billion Technology Co Ltd
Priority to CN201910877230.9A priority Critical patent/CN110569040A/zh
Publication of CN110569040A publication Critical patent/CN110569040A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic 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)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及嵌入式***技术领域,特别涉及一种在嵌入式***内安装、运行应用程序的方法,包括步骤S1,开发可动态安装、运行、管理应用程序的嵌入式***;步骤S2,在嵌入式***外开发应用程序,将应用程序编译成带安装信息的代码文件;步骤S3,把编译的带安装信息的代码文件和需要的资源按一定格式打包成应用程序安装包;步骤S4,应用程序安装包传输到嵌入式***上进行安装,运行应用程序。与现有技术相比,本发明的在嵌入式***内安装、运行应用程序的方法使得嵌入式设备能动态增加功能,简化了开发的流程、提高了开发效率,增加了设备的功能拓展性。

Description

一种在嵌入式***内安装、运行应用程序的方法
【技术领域】
本发明涉及嵌入式***技术领域,特别涉及一种在嵌入式***内安装、运行应用程序的方法。
【背景技术】
智能穿戴设备是应用穿戴式技术对日常穿戴进行智能化设计、开发出可以穿戴的设备的总称,如手表、手环、眼镜、服饰等。现有技术中,智能穿戴设备的表盘、功能往往在生产时已经定型,无法在后期通过特定的应用程序来增加智能穿戴设备的功能,表盘、功能可拓展性较差。
【发明内容】
为了克服上述问题,本发明提出一种可有效解决上述问题的在嵌入式***内安装、运行应用程序的方法。
本发明解决上述技术问题提供的一种技术方案是:提供一种在嵌入式***内安装、运行应用程序的方法,包括如下步骤:步骤S1,开发可动态安装、运行、管理应用程序的嵌入式***;步骤S2,在嵌入式***外开发应用程序,将应用程序编译成带安装信息的代码文件;步骤S3,把编译的带安装信息的代码文件和需要的资源按一定格式打包成应用程序安装包;步骤S4,应用程序安装包传输到嵌入式***上进行安装,运行应用程序。
优选地,所述嵌入式***包括通信功能模块、应用程序管理功能模块、应用程序运行环境模块,所述通信功能模块用于接收应用程序安装包,所述应用程序管理功能模块用于***内部管理应用程序,所述应用程序运行环境模块为应用程序提供运行环境。
优选地,所述嵌入式***为应用程序提供运行环境,包括供应用程序调用的功能函数,所述功能函数包括GUI函数、文件操作函数、传感器驱动函数、通讯函数。
优选地,所述步骤S4中,嵌入式***通过通信功能模块接收应用程序安装包,通信方式包括蓝牙、串口、WIFI或自定义的方式。
优选地,所述嵌入式***还包括代码运行区,用于运行代码。
优选地,所述步骤S4中,嵌入式***接收到应用程序安装包后,对应用程序安装包解析,先从安装包中把应用程序运行所需的代码复制到***代码运行区,再根据应用程序代码中的安装信息进行应用程序代码的修改以完成安装,之后即可通过应用程序的运行入口地址运行应用程序。
优选地,所述应用程序代码中包括安装信息,所述应用程序代码采用代码和变量可重定位技术,应用程序代码的编译与其运行的嵌入式***的地址无关,应用程序代码通过编译器编译之后,应用程序代码中凡是没有定义的函数、变量等符号,记录在安装信息。
优选地,所述嵌入式***还包括一个程序链接器,用于重定位应用程序代码。
优选地,所述步骤S2中,采用交叉编译工具arm-none-eabi-gcc将应用程序原代码编译成带安装信息的代码文件,使用命令arm-gcc-c-mthumb-mcpu=cortex-m0*.c将c文件编译成arm cortex-m0平台的thumb指令的机器码,再用arm-none-eabi-ld-r*.o-o<out_file>生成可重定位的带安装信息的代码文件。
优选地,所述步骤S4中,运行程序前需要使用程序链接器进行两次应用程序的重定位,第一次重定位包括函数和只读变量的重定位,第二次重定位包括可读写变量重定位,第一次重定位程序后不运行,第二次重定位程序后可运行。
与现有技术相比,本发明的在嵌入式***内安装、运行应用程序的方法使得嵌入式设备(如穿戴设备)能动态增加功能,应用程序独立于***之外开发、打包成安装包传输到需要运行的嵌入式***上安装运行的方式,简化了开发的流程、提高了开发效率,增加了设备的功能拓展性。
【附图说明】
图1为本发明一种在嵌入式***内安装、运行应用程序的方法的整体流程图;
图2为本发明一种在嵌入式***内安装、运行应用程序的方法的APP安装包制作流程图;
图3为本发明一种在嵌入式***内安装、运行应用程序的方法的APP安装流程图;
图4为本发明一种在嵌入式***内安装、运行应用程序的方法的带安装信息的代码文件结构组成图。
【具体实施方式】
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用于解释本发明,并不用于限定本发明。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后……)仅限于指定视图上的相对位置,而非绝对位置。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
请参阅图1至图4,本发明的一种在嵌入式***内安装、运行应用程序的方法包括如下步骤:
步骤S1,开发可动态安装、运行、管理应用程序(APP)的嵌入式***(OS);
步骤S2,在嵌入式***外开发应用程序,将应用程序编译成带安装信息的代码文件;
步骤S3,把编译的带安装信息的代码文件和需要的资源按一定格式打包成应用程序安装包;
步骤S4,应用程序安装包传输到嵌入式***上进行安装,运行应用程序。
所述嵌入式***可以在AMR Cortex-M系列的MCU平台上运行,支持由嵌入式***之外开发和编译的应用程序在***内安装和运行。
所述嵌入式***包括通信功能模块、应用程序管理功能模块、应用程序运行环境模块,所述通信功能模块用于接收应用程序安装包,所述应用程序管理功能模块用于***内部管理应用程序,所述应用程序运行环境模块为应用程序提供运行环境。
所述嵌入式***还包括供应用程序调用的功能函数,所述功能函数包括GUI函数、文件操作函数、传感器驱动函数、通讯函数等,功能函数为应用程序运行所需,函数功能越多应用程序可实现的功能越多。应用程序代码编译到***代码(固件)中,之后导出功能函数接口(API)供应用程序开发使用。功能函数原型声明导出头文件,给外部开发应用程序时使用,功能函数名和功能函数地址导出到嵌入式***内部的一个section中,供应用程序安装时使用。
所述嵌入式***还包括代码运行区,用于运行代码。
所述嵌入式***还包括一个程序链接器,用于重定位应用程序代码。应用程序安装链接时,程序链接器需要从以功能函数名和功能函数地址导出的section找到所调用的函数进行应用程序代码中符号地址修改。
所述步骤S4中,嵌入式***通过通信功能模块接收应用程序安装包,通信方式包括蓝牙、串口、WIFI或自定义的方式等,保证能完整的从外部接收应用程序安装包即可。
所述步骤S4中,嵌入式***接收到应用程序安装包后,对应用程序安装包解析,先从安装包中把应用程序运行所需的应用程序代码复制到***代码运行区(如在RAM运行复制到RAM,在flash运行复制到flash),再根据应用程序代码中的安装信息进行应用程序代码的修改以完成安装,之后即可通过应用程序的运行入口地址运行应用程序。所述应用程序代码中包括安装信息。
所述应用程序代码中包括安装信息。所述应用程序代码采用代码和变量可重定位技术,应用程序代码的编译与其运行的嵌入式***的地址无关,应用程序代码通过编译器编译之后,应用程序代码中凡是没有定义的函数、变量等符号,都会记录在安装信息里面。应用程序代码在安装运行的嵌入式***中进行链接而不是在编译完时链接。
即所述应用程序所使用的嵌入式***导出的API在外部编译时,所述API没有链接到实际地址,编译器将这些未链接到实际地址的符号全部记录在安装信息里面。
所述应用程序代码采用代码和变量可重定位技术,即所述应用程序安装包传输到嵌入式***上之后,由嵌入式***对应用程序代码中未链接的API符号进行链接到***代码中实际的函数地址,完成应用程序代码修改,此过程称为重定位。
所述带安装信息的代码文件包括文件头部、节区、节区头部表,所述节区包括代码(.text)、只读数(.rodata)、变量(.data,.bss)、重定位代码信息(.rel.text)、符号表(.symtab)等。所述步骤S2中,采用交叉编译工具arm-none-eabi-gcc将应用程序原代码编译成带安装信息的代码文件,使用命令arm-gcc-c-mthumb-mcpu=cortex-m0*.c将c文件编译成arm cortex-m0平台的thumb指令的机器码(其中-mthumb-mcpu是可选项),再用arm-none-eabi-ld-r*.o-o<out_file>生成带安装信息的代码文件。
所述带安装信息的代码文件为可重定位的可执行与可链接格式文件,它的编译与嵌入式***的地址无关,因为该应用程序是在安装的嵌入式***中进行链接而不是在编译完时链接,所以无论嵌入式***如何变动,只需要在重定位该应用程序的时候给出所调用到的嵌入式***函数地址即可,不需要重新编译打包,因此可实现应用程序代码动态安装到嵌入式***。
所述带安装信息的代码文件运行时需要被加载的地方有四个部分,分别是:代码段(.text)、只读的变量(.rodata)、可读写已经初始化的全局变量和静态变量(.data)、可读写未始化的全局变量和静态变量(.bss),本***使用的MCU代码可以在内置FLASH上运行,所以.text和.rodata将不被加载到RAM中(如果代码在RAM运行.text和.rodata也需要加载到RAM中),只需要将.data和.bss加载到RAM中,记录下RAM的地址,然后将这些地址转变成ARM Cortex-m的机器码,根据安装信息重定位后,写回到.text段即可完成应用程序的加载。
所述嵌入式***为了加快应用程序启动速度,并节省***资源,把应用程序的重定位分成两步。运行程序前需要使用程序链接器进行两次应用程序的重定位,第一次重定位包括函数和只读变量的重定位,第二次重定位包括可读写变量重定位,第一次重定位程序后不运行,第二次重定位程序后可运行;第一次重定位通过带安装信息的代码文件得出代码需要重定位的地址和符号,符号在代码文件中的直接计算偏移量,写入.text中,符号不在代码文件中(嵌入式***提供的API函数)的将在***的符号表中寻找,找到后计算偏移量,写入.text中;在第一次重定位完成以后,除非嵌入式***重装、应用程序更新或者应用程序应用列表丢失,否则运行应用程序时将不再需要第一次重定位;第二次重定位首先计算出.data,.bss段的大小,向***申请相同大小的内存,然后将.data和.bss段的内容复制到申请到的内存中,根据代码文件得出代码需要重定位的变量的地址和符号,结合这些变量在申请到的内存中的地址,修改FLASH中.text段中需要重定位位置的机器码,最后通过入口函数(通常为main函数),跳转运行该APP,APP退出时回收对.data,.bss分配的内存,每次运行都要重新分配内存和重定位.data,.bss。
与现有技术相比,本发明的在嵌入式***内安装、运行应用程序的方法使得嵌入且式设备(如穿戴设备)能动态增加功能,应用程序独立于***之外开发、打包成安装包传输到需要运行的嵌入式***上安装运行的方式,简化了开发的流程、提高了开发效率,增加了设备的功能拓展性。
以上所述仅为本发明的较佳实施例,并非因此限制本发明的专利范围,凡是在本发明的构思之内所作的任何修改,等同替换和改进等均应包含在本发明的专利保护范围内。

Claims (10)

1.一种在嵌入式***内安装、运行应用程序的方法,其特征在于,包括如下步骤:
步骤S1,开发可动态安装、运行、管理应用程序的嵌入式***;
步骤S2,在嵌入式***外开发应用程序,将应用程序编译成带安装信息的代码文件;
步骤S3,把编译的带安装信息的代码文件和需要的资源按一定格式打包成应用程序安装包;
步骤S4,应用程序安装包传输到嵌入式***上进行安装,运行应用程序。
2.如权利要求1所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述嵌入式***包括通信功能模块、应用程序管理功能模块、应用程序运行环境模块,所述通信功能模块用于接收应用程序安装包,所述应用程序管理功能模块用于***内部管理应用程序,所述应用程序运行环境模块为应用程序提供运行环境。
3.如权利要求1所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述嵌入式***为应用程序提供运行环境,包括供应用程序调用的功能函数,所述功能函数包括GUI函数、文件操作函数、传感器驱动函数、通讯函数。
4.如权利要求2所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述步骤S4中,嵌入式***通过通信功能模块接收应用程序安装包,通信方式包括蓝牙、串口、WIFI或自定义的方式。
5.如权利要求1所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述嵌入式***还包括代码运行区,用于运行代码。
6.如权利要求5所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述步骤S4中,嵌入式***接收到应用程序安装包后,对应用程序安装包解析,先从安装包中把应用程序运行所需的代码复制到***代码运行区,再根据应用程序代码中的安装信息进行应用程序代码的修改以完成安装,之后即可通过应用程序的运行入口地址运行应用程序。
7.如权利要求6所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述应用程序代码中包括安装信息,所述应用程序代码采用代码和变量可重定位技术,应用程序代码的编译与其运行的嵌入式***的地址无关,应用程序代码通过编译器编译之后,应用程序代码中凡是没有定义的函数、变量等符号,记录在安装信息。
8.如权利要求1所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述嵌入式***还包括一个程序链接器,用于重定位应用程序代码。
9.如权利要求4所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述步骤S2中,采用交叉编译工具arm-none-eabi-gcc将应用程序原代码编译成带安装信息的代码文件,使用命令arm-gcc-c-mthumb-mcpu=cortex-m0*.c将c文件编译成arm cortex-m0平台的thumb指令的机器码,再用arm-none-eabi-ld-r*.o-o<out_file>生成可重定位的带安装信息的代码文件。
10.如权利要求8所述的在嵌入式***内安装、运行应用程序的方法,其特征在于,所述步骤S4中,运行程序前需要使用程序链接器进行两次应用程序的重定位,第一次重定位包括函数和只读变量的重定位,第二次重定位包括可读写变量重定位,第一次重定位程序后不运行,第二次重定位程序后可运行。
CN201910877230.9A 2019-09-17 2019-09-17 一种在嵌入式***内安装、运行应用程序的方法 Pending CN110569040A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910877230.9A CN110569040A (zh) 2019-09-17 2019-09-17 一种在嵌入式***内安装、运行应用程序的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910877230.9A CN110569040A (zh) 2019-09-17 2019-09-17 一种在嵌入式***内安装、运行应用程序的方法

Publications (1)

Publication Number Publication Date
CN110569040A true CN110569040A (zh) 2019-12-13

Family

ID=68780494

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910877230.9A Pending CN110569040A (zh) 2019-09-17 2019-09-17 一种在嵌入式***内安装、运行应用程序的方法

Country Status (1)

Country Link
CN (1) CN110569040A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306539A (zh) * 2020-11-05 2021-02-02 重庆科技学院 一种单片机应用层开发方法、***、终端及介质
CN112540765A (zh) * 2020-12-10 2021-03-23 杭州物电云新能源有限公司 一种嵌入式mcu程序分段编译方法及***
CN113204351A (zh) * 2021-07-06 2021-08-03 成都菁蓉联创科技有限公司 一种嵌入式***包管理方法及其使用方法
CN113885870A (zh) * 2021-08-27 2022-01-04 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
CN116680013A (zh) * 2023-06-16 2023-09-01 上海移芯通信科技股份有限公司 一种***底包与应用程序分离的编译开发方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1502075A (zh) * 2001-03-16 2004-06-02 Ħ��������˾ 在嵌入式环境中加载和执行应用程序的方法
CN101441566A (zh) * 2008-11-18 2009-05-27 腾讯科技(深圳)有限公司 一种嵌入式平台和在嵌入式平台上动态链接程序的方法
CN102486735A (zh) * 2010-12-02 2012-06-06 腾讯科技(深圳)有限公司 一种手机软件动态加载方法及装置
CN106598674A (zh) * 2016-12-16 2017-04-26 中南大学 一种基于可重定位elf文件的软件快速加载方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1502075A (zh) * 2001-03-16 2004-06-02 Ħ��������˾ 在嵌入式环境中加载和执行应用程序的方法
CN101441566A (zh) * 2008-11-18 2009-05-27 腾讯科技(深圳)有限公司 一种嵌入式平台和在嵌入式平台上动态链接程序的方法
CN102486735A (zh) * 2010-12-02 2012-06-06 腾讯科技(深圳)有限公司 一种手机软件动态加载方法及装置
CN106598674A (zh) * 2016-12-16 2017-04-26 中南大学 一种基于可重定位elf文件的软件快速加载方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112306539A (zh) * 2020-11-05 2021-02-02 重庆科技学院 一种单片机应用层开发方法、***、终端及介质
CN112306539B (zh) * 2020-11-05 2023-08-01 重庆科技学院 一种单片机应用层开发方法、***、终端及介质
CN112540765A (zh) * 2020-12-10 2021-03-23 杭州物电云新能源有限公司 一种嵌入式mcu程序分段编译方法及***
CN112540765B (zh) * 2020-12-10 2024-03-08 杭州物电云新能源有限公司 一种嵌入式mcu程序分段编译方法及***
CN113204351A (zh) * 2021-07-06 2021-08-03 成都菁蓉联创科技有限公司 一种嵌入式***包管理方法及其使用方法
CN113204351B (zh) * 2021-07-06 2021-10-22 成都菁蓉联创科技有限公司 一种嵌入式***包管理方法及其使用方法
CN113885870A (zh) * 2021-08-27 2022-01-04 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
CN113885870B (zh) * 2021-08-27 2022-09-20 荣耀终端有限公司 应用程序更新方法、电子设备、终端设备及***
CN116680013A (zh) * 2023-06-16 2023-09-01 上海移芯通信科技股份有限公司 一种***底包与应用程序分离的编译开发方法及装置
CN116680013B (zh) * 2023-06-16 2024-02-20 上海移芯通信科技股份有限公司 一种***底包与应用程序分离的编译开发方法及装置

Similar Documents

Publication Publication Date Title
CN110569040A (zh) 一种在嵌入式***内安装、运行应用程序的方法
EP3377968B1 (en) Dynamic update of an application in compilation and deployment
Novac et al. Comparative study of Google Android, Apple iOS and Microsoft Windows phone mobile operating systems
US8732732B2 (en) Type inference and type-directed late binding
KR101150003B1 (ko) 소프트웨어 개발 툴 생성 방법
EP3084596B1 (en) Executable code for constrained computing environments
US11720344B2 (en) Code hot-update method and device, storage medium, processor, and terminal
US20160232017A1 (en) System and Method for Reloading Constructors
CN111061638B (zh) 一种iOS***调试的方法、装置及服务器
US20050028155A1 (en) Java execution device and Java execution method
CN106598556A (zh) 用户界面生成方法及装置
CN110457044B (zh) Haxe应用程序的编译方法、装置及电子设备
CN111770116A (zh) 一种执行智能合约的方法、区块链节点、存储介质
CN105354071A (zh) 一种嵌入式软件兼容硬件的方法
US20180364991A1 (en) Method and system for preparing code to be executed by programmable control devices
CN107340995A (zh) 一种牵引控制应用软件开发***
CN107608672B (zh) 一种ui模块管理器、ui模块管理方法和***
CN109558121A (zh) 接口驱动程序的开发方法、装置、设备及存储介质
CN117573095A (zh) 一种支持持续集成的交叉编译框架的搭建及编译方法
CN111552480B (zh) 跨平台编译方法、装置、设备及可读存储介质
US10534589B2 (en) Specifying user defined or translator definitions to use to interpret mnemonics in a computer program
US9135027B1 (en) Code generation and execution for dynamic programming languages
CN113220327B (zh) 智能合约升级方法及区块链***
KR20190060561A (ko) 이종 디바이스의 선택적 추상화를 통한 사물 인터넷 어플리케이션의 개발 환경을 통합하는 방법 및 시스템
CN110990018B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191213