CN110413298A - 基于Labwindows平台进行单片机串行升级和调试的方法 - Google Patents

基于Labwindows平台进行单片机串行升级和调试的方法 Download PDF

Info

Publication number
CN110413298A
CN110413298A CN201910640074.4A CN201910640074A CN110413298A CN 110413298 A CN110413298 A CN 110413298A CN 201910640074 A CN201910640074 A CN 201910640074A CN 110413298 A CN110413298 A CN 110413298A
Authority
CN
China
Prior art keywords
chip microcontroller
host computer
labwindows
platform
upgrades
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
CN201910640074.4A
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.)
Nanjing Post and Telecommunication University
Nanjing University of Posts and Telecommunications
Original Assignee
Nanjing Post and Telecommunication University
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 Nanjing Post and Telecommunication University filed Critical Nanjing Post and Telecommunication University
Priority to CN201910640074.4A priority Critical patent/CN110413298A/zh
Publication of CN110413298A publication Critical patent/CN110413298A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • 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/4401Bootstrapping
    • G06F9/4403Processor initialisation

Abstract

本发明公开了一种基于Labwindows平台进行单片机的串行升级和调试的方法,该方法利用单片机中flash存储器内部BootLoader加载程序,该Bootloader代码部分经运行以执行以下操作:进行时钟配置和串口配置的初始化;进入检测期间,如果在检测期间单片机与上位机握手成功并且接收到上位机对于所述用户代码部分的升级指令或调试指令,则根据对应指令进入升级过程或调试过程,并在升级过程或调试过程完成后自动切换以运行用户代码部分;如果在检测期间未收到上位机的升级指令或调试指令,则自动切换以运行用户代码部分。该方法不需要拆卸和断电,直接通过预留的接口,根据通信协议传输文件进行下载升级,可以通过软件复位比较灵活。

Description

基于Labwindows平台进行单片机串行升级和调试的方法
技术领域
本发明涉及一种串行升级和调试的方法,特别涉及一种基于Labwindows平台进行单片机串行升级和调试的方法。
背景技术
随着嵌入式技术的快速发展,微控制器越来越广泛应用于工控产业。由于工控产业的行业规范和工业标准迭代更新速度越来越快,微控制器的开发周期也要随之变短,微控制器的软件功能更新也要越来越快。使用BootLoader程序进行烧录程序可以提高工作效率,减少工程师出差成本。
对于当前嵌入式微控制器来说,主要的烧写程序方法有:(1)借助专用烧录器(例如J-link、U-link、ST-link等),在硬件电路上预留JTAG或者SW接口直接进行烧录;(2)利用微控制器内部BootLoader加载程序,硬件设计接口进行烧写。第一种方法主要应用于电路板开发阶段,工程师直接通过烧录器进行仿真下载,便于开发时实时跟踪的调试。但是面对工程应用环境中需要拆卸机加工件壳,不便操作,且专用烧录器成本高,维护困难。第二种方法可以直接通过预留的接口,根据通信协议传输文件,接线进行下载升级,比较灵活。经过实验验证第二种方法的可靠性,能够满足预期目标。
发明内容
发明目的:为克服现有技术的缺陷,本发明提出了一种基于Labwindows平台进行单片机串行升级和调试的方法。
技术方案:本发明的基于Labwindows平台进行单片机串行升级和调试的方法包括以下步骤:
(1)通过烧录器在flash存储器的起始地址处烧写Bootloader代码部分,所述Bootloader代码部分用于接收程序或数据,以执行对用户代码部分的升级或调试;所述用户代码部分存储在所述flash存储器中,且位于所述Bootloader代码部分对应的地址之后;
(2)单片机运行flash存储器中的Bootloader代码部分以执行以下操作:
(21)进行时钟配置和串口配置的初始化;
(22)进入检测期间,如果在检测期间单片机与上位机握手成功并且接收到上位机对于所述用户代码部分的升级指令或调试指令,则根据对应指令进入升级过程或调试过程,并在升级过程或调试过程完成后自动切换以运行用户代码部分;如果在检测期间未收到上位机的升级指令或调试指令,则自动切换以运行用户代码部分;其中,所述上位机中包括用于控制所述单片机的控制软件,所述控制软件中的控制代码部分是通过Labwindows平台编写的。
进一步地,上述方法还包括以下步骤:(3)在单片机运行用户代码部分时,如果单片机接收到上位机的进入Bootloader指令,则返回步骤(2)。
步骤(22)中,所述上位机是通过所述单片机的挂载于总线上的接口与所述单片机进行连接的。所述上位机具有人机交互界面以便于工程师对所述升级过程和调试过程进行现场操作。单片机与上位机握手成功后,单片机还向上位机发送响应消息以提示上位机可以发送升级指令或调试指令。初始化完成后进入检测期间之前还需要关闭看门狗和进行中断初始化。所述升级过程包括:所述上位机软件读取需要升级的目标文件并且根据协议内容发送给单片机,以对用户代码部分进行烧写。所述调试过程包括:单片机在上位机的控制下修改和/或读取单片机flash存储器中用户代码部分对应的指定位置数据,并在数据修改和/或读取完成以后,将版本信息发送至上位机以直接挂载于总线使用。
有益效果:与现有技术相比,本发明具有以下优点:
(1)通过在总线上接线进行下载升级可软件复位,不需要拆卸机壳和硬件断电复位,提高升级效率。
(2)升级完成后可修改单片机flash指定位置数据,设置完成可读出版本信息和直接挂载于总线使用。
附图说明
图1为本发明的流程图;
图2为本发明的系统框图;
图3为本发明的硬件简化电路图;
图4为本发明选取的单片机的闪存模块组织;
图5为本发明中上位机的软件界面1;
图6为本发明使用到Ymodem协议部分;
图7为本发明中上位机的软件界面2;
图8为本发明中上位机的实际应用图。
具体实施方式
以下结合附图和实施例对本发明进行详细说明。
本实施例采用的单片机选取为Stm32F103系列,该款单片机涵盖了工业、医疗和消费市场中各种应用的需求。高性能、一流的外围设备和低功耗、低电压操作与高集成度相结合,价格低廉,结构简单,易于使用。
如图1,本实施例的方法包括如下步骤:
步骤一:通过烧录器在flash存储器的起始地址处烧写Bootloader代码部分,Bootloader代码部分用于接收程序或数据,以执行对用户代码部分的升级或调试;用户代码部分存储在flash存储器中,且位于Bootloader代码部分对应的地址之后。
BootLoader代码部分通常在出厂之前第一次烧录时使用J-link烧写。该部分代码用于实现通过某种通信方式(如USB,USART)接收程序或数据,执行对第二部分代码(即用户代码)的更新升级。此段代码与硬件设计电路匹配,只有在更换硬件电路时需要重新烧录,系统框图如图2所示。第二部分是用户代码生成文件,该部分代码是产品实现业务逻辑正常运行的代码,该部分代码需要在存储的flash中进行相对的地址偏移。
步骤二:单片机运行flash存储器中的Bootloader代码部分以执行以下操作:
(21)进行时钟配置和串口配置的初始化;
(22)进入检测期间,如果在检测期间单片机与上位机握手成功并且接收到上位机对于用户代码部分的升级指令或调试指令,则根据对应指令进入升级过程或调试过程,并在升级过程或调试过程完成后自动切换以运行用户代码部分。如果在检测期间未收到上位机的升级指令或调试指令,则自动切换以运行用户代码部分。其中,上位机中包括用于控制单片机的控制软件,控制软件中的控制代码部分是通过Labwindows平台编写的,可以用于传输需要烧录的用户代码部分的相关文件。
步骤三:在单片机运行用户代码部分时,如果单片机接收到上位机的进入Bootloader指令,则返回步骤二。
下面对本实施例所涉及的硬件设计和软件设计进行介绍。
硬件设计
如图3所示硬件电路较为简单,本实施例使用的是Stm32F103的串口进行通信和下载程序,需要注意留下接口为:J-link烧录接口、串口与485芯片(ST1480ABDR)相连进行差分接收便于抑制干扰。此外上位机软件需要使用电脑的USB转485接口。图中电源、接地、保护电路和稳压电路等均未画出。
软件设计
BootLoader程序部分
首先查找Stm32F103手册,判断Flash内存大小。该款单片机用户使用的主存储快工128K,将其划分为:0~15页,共15k用来存放BootLoader代码,在该部分代码主要进行配置系统时钟初始化为12MHZ、配置定时器、配置GPIO口为复用推挽输出和复用输入模式、配置用于BootLoader升级的串口(考虑到总线只用来进行BootLoader一组通信,所以设置最高速率115200波特率)。
由于本实施例的通信升级程序使用的是阻塞形式不能被中途打断,所以初始化过程结束后首先要关闭看门狗(即定期的查看芯片内部的情况,一旦发生错误就向芯片发出重启信号的电路)和中断初始化,此时的程序中断由操作系统直接控制。然后打开一个系统时间定时器,判断系统时间常量来控制程序上电以后等待10s握手,此时握手成功则进入通信升级过程,如果等待10s后未进行握手则把函数跳入用户代码区域进行正常运行。
更新服务程序通过485通信端口来接收Labwindows上位机编写的软件传送来的程序数据,由于数据量较大且需要多次传输,为增加程序的可靠性和稳定性,BootLoader程序对接收的数据进行CRC16校验,在数据格式的帧头帧尾正确和CRC校验正确后,将正确的程序数据覆写到flash的指定地址空间(我这里划分页16~61页一共45k存放用户代码,其余页面存放一些需要保存的参数变量)。接受完最后一帧数据且正确写入flash区域后,进行程序软复位,把函数跳入用户代码区域进行正常运行,同时把写在单片机flash里的硬件版本信息发送给上位机,用户以此判断程序是否对应。
用户代码部分
此处代码主要是针对即将应用的用户代码进行一些设置。本实施例使用的是keil软件进行编程,在设置好单片机型号和主频后完成代码。由于单片机Flash部分的0~15页用于存放不可覆写的BootLoader对接程序,所以需要设置地址偏移量和堆栈偏移量。程序首地址为flash首地址+偏移量。
#define USER_FLASH_PAGE_ADDRESS 0x08004000
#define USER_FLASH_END_ADDRESS 0x0801FC00/*113KBytes*/
#define FLASH_PAGE_SIZE 0x400 /*1Kbytes*
还需要注意在生成代码同时,根据生成.axf临时文件生成.bin文件用于上位机软件加载解析发送。由于BootLoader程序设置为上电后前10s执行,所以在用户代码中加入一条指令用于软件复位,这样可以在不需要断电上电的情况下执行上位机和用户代码通信升级程序,减少了频繁断电上电对于硬件电路的影响。
上位机软件部分
上位机软件部分主界面为图5所示。由于USB转485需要占用电脑上一个串口,所以在运行上位机程序后,先试图打开0-40个串口。如果串口驱动加载完成则可以被成功打开,发现任意串口可以打开后此时记录电脑使用的串口编号并关闭此串口,继续向后查找可用串口。所有串口执行完后,将记录的串口编号显示提供用户选择,按照BootLoader程序可配置串口波特率。然后进入烧写界面,函数在此时主要进行加载烧录文件和Ymodem协议(图6中给出)的解析过程。
上位机软件根据BootLoader部分握手成功后加载烧录文件并解析,解析完成后作为升级指令的一部分进入阻塞式发送。此时考虑到烧录文件一般较大,所以每次传输1024字节。单片机将一帧数据全部字节经过CRC16校验成功后返回校验结果,上位机根据校验结果选择是否重发数据或者打包下一帧数据发送。每当一帧数据验证完成,程序进行记录并显示烧写进度。
在烧写完成用户代码后,上位机软件自动转到如图7所示的界面2部分。由于总线下会挂载多个从设备,所以主机需要根据不同设备的设备地址进行分类控制。在此部分可以对于设备的设备地址和设备编号进行写入flash、读取设备flash中的版本信息,便于测试人员测试和总设备进行调控,不需另行设置,实际应用如图8所示。
以上所述仅为本发明的一个示例,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明所揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。

Claims (8)

1.一种基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,包括以下步骤:
(1)通过烧录器在flash存储器的起始地址处烧写Bootloader代码部分,所述Bootloader代码部分用于接收程序或数据,以执行对用户代码部分的升级或调试;所述用户代码部分存储在所述flash存储器中,且位于所述Bootloader代码部分对应的地址之后;
(2)单片机运行flash存储器中的Bootloader代码部分以执行以下操作:
(21)进行时钟配置和串口配置的初始化;
(22)进入检测期间,如果在检测期间单片机与上位机握手成功并且接收到上位机对于所述用户代码部分的升级指令或调试指令,则根据对应指令进入升级过程或调试过程,并在升级过程或调试过程完成后自动切换以运行用户代码部分;如果在检测期间未收到上位机的升级指令或调试指令,则自动切换以运行用户代码部分;其中,所述上位机中包括用于控制所述单片机的控制软件,所述控制软件中的控制代码部分是通过Labwindows平台编写的。
2.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,还包括以下步骤:
(3)在单片机运行用户代码部分时,如果单片机接收到上位机的进入Bootloader指令,则返回步骤(2)。
3.根据权利要求2所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,步骤(22)中,单片机与上位机握手成功后,单片机还向上位机发送响应消息以提示上位机可以发送升级指令或调试指令。
4.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,步骤(22)中,初始化完成后进入检测期间之前还需要关闭看门狗和进行中断初始化。
5.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,步骤(22)中,所述升级过程包括:所述上位机软件读取需要升级的目标文件并且根据协议内容发送给单片机,以对用户代码部分进行烧写。
6.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,步骤(22)中,调试过程包括:单片机在上位机的控制下修改和/或读取单片机flash存储器中用户代码部分对应的指定位置数据,并在数据修改和/或读取完成以后,将版本信息发送至上位机以直接挂载于总线使用。
7.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,所述上位机是通过所述单片机的挂载于总线上的接口与所述单片机进行连接的。
8.根据权利要求1所述的基于Labwindows平台进行单片机串行升级和调试的方法,其特征在于,所述上位机具有人机交互界面以便于工程师对所述升级过程和调试过程进行现场操作。
CN201910640074.4A 2019-07-16 2019-07-16 基于Labwindows平台进行单片机串行升级和调试的方法 Pending CN110413298A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910640074.4A CN110413298A (zh) 2019-07-16 2019-07-16 基于Labwindows平台进行单片机串行升级和调试的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910640074.4A CN110413298A (zh) 2019-07-16 2019-07-16 基于Labwindows平台进行单片机串行升级和调试的方法

Publications (1)

Publication Number Publication Date
CN110413298A true CN110413298A (zh) 2019-11-05

Family

ID=68361633

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910640074.4A Pending CN110413298A (zh) 2019-07-16 2019-07-16 基于Labwindows平台进行单片机串行升级和调试的方法

Country Status (1)

Country Link
CN (1) CN110413298A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968330A (zh) * 2019-11-29 2020-04-07 上海商米科技集团股份有限公司 一种基于Android智能设备使用Ymodem协议升级GD32控制器的方法
CN111258604A (zh) * 2020-01-14 2020-06-09 深圳市有为信息技术发展有限公司 Bootloader升级系统和方法
CN112148340A (zh) * 2020-10-13 2020-12-29 江苏科技大学 一种无人船用实时无线程序烧录器及实现方法
CN115599408A (zh) * 2022-11-29 2023-01-13 深圳开鸿数字产业发展有限公司(Cn) 处理器的数据烧录方法、设备及存储介质
CN117492800B (zh) * 2023-11-08 2024-04-19 珠海海奇半导体有限公司 一种通过usb升级固件的方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174264A1 (en) * 2001-05-17 2002-11-21 David Fuller System and method for obtaining driver software and documentation for a detected hardware and software configuration
US7100011B2 (en) * 2002-03-01 2006-08-29 Arris International, Inc. Method and system for reducing storage requirements for program code in a communication device
CN101753672A (zh) * 2009-12-31 2010-06-23 中兴通讯股份有限公司 一种对无线终端快速修复的系统和方法
CN101872176A (zh) * 2010-06-08 2010-10-27 中国农业大学 测控软件生成方法及系统
CN102298526A (zh) * 2011-06-08 2011-12-28 厦门雅迅网络股份有限公司 一种基于无外扩存储器单片机的外设设备程序升级机制
CN202275397U (zh) * 2011-08-03 2012-06-13 临沂科锐电子有限公司 基于can总线实现pic单片机程序加载系统
CN103176068A (zh) * 2011-12-23 2013-06-26 中国人民解放军海军航空仪器计量站 一种基于总线的测试模块
CN105117253A (zh) * 2015-08-27 2015-12-02 常州大学 一种基于BootLoader的UV LED固化系统远程升级方法
CN105786576A (zh) * 2016-03-17 2016-07-20 硅谷数模半导体(北京)有限公司 基于串口的芯片调试方法和装置
CN105912356A (zh) * 2016-03-31 2016-08-31 武汉光迅科技股份有限公司 一种支持版本回退的光模块固件程序在线升级方法
CN108628624A (zh) * 2018-04-08 2018-10-09 华南理工大学 一种基于can总线的多节点单片机在线更新代码的方法

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020174264A1 (en) * 2001-05-17 2002-11-21 David Fuller System and method for obtaining driver software and documentation for a detected hardware and software configuration
US7100011B2 (en) * 2002-03-01 2006-08-29 Arris International, Inc. Method and system for reducing storage requirements for program code in a communication device
CN101753672A (zh) * 2009-12-31 2010-06-23 中兴通讯股份有限公司 一种对无线终端快速修复的系统和方法
CN101872176A (zh) * 2010-06-08 2010-10-27 中国农业大学 测控软件生成方法及系统
CN102298526A (zh) * 2011-06-08 2011-12-28 厦门雅迅网络股份有限公司 一种基于无外扩存储器单片机的外设设备程序升级机制
CN202275397U (zh) * 2011-08-03 2012-06-13 临沂科锐电子有限公司 基于can总线实现pic单片机程序加载系统
CN103176068A (zh) * 2011-12-23 2013-06-26 中国人民解放军海军航空仪器计量站 一种基于总线的测试模块
CN105117253A (zh) * 2015-08-27 2015-12-02 常州大学 一种基于BootLoader的UV LED固化系统远程升级方法
CN105786576A (zh) * 2016-03-17 2016-07-20 硅谷数模半导体(北京)有限公司 基于串口的芯片调试方法和装置
CN105912356A (zh) * 2016-03-31 2016-08-31 武汉光迅科技股份有限公司 一种支持版本回退的光模块固件程序在线升级方法
CN108628624A (zh) * 2018-04-08 2018-10-09 华南理工大学 一种基于can总线的多节点单片机在线更新代码的方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110968330A (zh) * 2019-11-29 2020-04-07 上海商米科技集团股份有限公司 一种基于Android智能设备使用Ymodem协议升级GD32控制器的方法
CN110968330B (zh) * 2019-11-29 2024-01-09 上海商米科技集团股份有限公司 一种基于Android智能设备使用Ymodem协议升级GD32控制器的方法
CN111258604A (zh) * 2020-01-14 2020-06-09 深圳市有为信息技术发展有限公司 Bootloader升级系统和方法
CN112148340A (zh) * 2020-10-13 2020-12-29 江苏科技大学 一种无人船用实时无线程序烧录器及实现方法
CN115599408A (zh) * 2022-11-29 2023-01-13 深圳开鸿数字产业发展有限公司(Cn) 处理器的数据烧录方法、设备及存储介质
CN117492800B (zh) * 2023-11-08 2024-04-19 珠海海奇半导体有限公司 一种通过usb升级固件的方法

Similar Documents

Publication Publication Date Title
CN110413298A (zh) 基于Labwindows平台进行单片机串行升级和调试的方法
CN102609287B (zh) 一种通过cpu远程更新fpga的装置及其方法
CN102609286B (zh) 一种基于处理器控制的fpga配置程序远程更新系统及其方法
CN108415717B (zh) 一种zynq soc固件升级方法及升级装置
US7225357B2 (en) SDIO card development system
CN110209419A (zh) 一种基于can总线的嵌入式dsp设备升级方法及装置
CN101216773A (zh) 一种嵌入式Linux系统固件下载方法和装置
CN104077204B (zh) 可重构的8位rsic单片机仿真器
CN109542478A (zh) 一种更新SPI Flash内FPGA程序的系统及方法
CN113377408B (zh) 一种高可靠sram型fpga在线升级方法及系统
CN105320531A (zh) 一种基于MicroBlaze软核的FPGA软件在线升级方法
CN111008033A (zh) 一种基于串口的通用dsp在线升级系统及升级方法
CN103745167B (zh) 单片机的iap方法及装置
CN104133705B (zh) 一种串口加载PowerPC系统引导文件的系统及方法
Brown Discovering the STM32 microcontroller
US6931525B2 (en) Method for switching between boot devices in information processing unit
CN113434162B (zh) 远程在线更新fpga多版本程序的方法
CN103514018A (zh) 基于stm32f4控制器的程序远程下载的实现方法
CN104679559A (zh) 单片机在线编程的方法
CN112667320A (zh) 一种基于MicroBlaze的FPGA及DSP远程加载系统
CN101599040A (zh) 多接口仿真编程器
CN109240719A (zh) 一种基于stm32的程序下载器
CN104407878A (zh) C6000数字信号处理器在线升级方法
CN109669729A (zh) 一种处理器的启动引导方法
CN112947978A (zh) 基于芯片usbhid升级固件的方法、终端设备及计算机可读存储介质

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191105