CN107657153B - 一种芯片内flash区的代码保护方法及装置 - Google Patents

一种芯片内flash区的代码保护方法及装置 Download PDF

Info

Publication number
CN107657153B
CN107657153B CN201710888215.5A CN201710888215A CN107657153B CN 107657153 B CN107657153 B CN 107657153B CN 201710888215 A CN201710888215 A CN 201710888215A CN 107657153 B CN107657153 B CN 107657153B
Authority
CN
China
Prior art keywords
chip
check
user program
verification
kernel
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.)
Active
Application number
CN201710888215.5A
Other languages
English (en)
Other versions
CN107657153A (zh
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.)
Chipsbank Technologies Shenzhen Co ltd
Original Assignee
Chipsbank Technologies Shenzhen 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 Chipsbank Technologies Shenzhen Co ltd filed Critical Chipsbank Technologies Shenzhen Co ltd
Priority to CN201710888215.5A priority Critical patent/CN107657153B/zh
Publication of CN107657153A publication Critical patent/CN107657153A/zh
Application granted granted Critical
Publication of CN107657153B publication Critical patent/CN107657153B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Technology Law (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种芯片内flash区的代码保护方法及装置,该方法包括:步骤S1、在控制芯片内设置校验单元;步骤S2、在芯片上电时,判断flash区的上电校验控制字,如果flash区控制字开启了上电校验,则执行步骤S3;步骤S3通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果一致则执行步骤S4,如果不一致则芯片停止启动内核;步骤S4、启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。本发明在控制芯片上电时,内核不会立即运行初始化,先校验flash区用户程序代码,确保上电时flash区的用户程序代码没有被损坏后再启动内核执行用户程序,避免因执行错误代码而引发的安全事故,提高了芯片的安全性和可靠性。

Description

一种芯片内flash区的代码保护方法及装置
技术领域
本发明涉及存储器技术领域,尤其涉及一种芯片内flash区的代码保护方法及装置。
背景技术
目前在消费类、工控类、汽车电子类和家电类等电子信息行业会大量使用到控制芯片(通用型主控MCU、专用型主控MCU或原厂固化程序的专用芯片),控制芯片内部flash可以给用户编写程序,对应的flash具有可多次擦除编程的特点。
当环境较恶劣或在做一些相关测试认证时,由于环境因素的不确定性、干拢源及强度的不确定性等,所以该类芯片的用户程序代码的完整性会被破坏,一旦flash区用户程序代码出错或损坏丢失,则芯片会执行错误的指令语句,从而引发错误操作。
目前行业内针对以上所述缺陷,使用bootloader程序来校验用户程序的方式来实现,其bootloader程序是烧录固化在flash区,一般位于flash区的底部或顶部,剩余flash区给用户编程用,芯片在上电时且在用户程序运行前,芯片内部的bootloader启动引导程序会先运行并对flash区的用户程序代码进行一次整体的校验检测来判断芯片的用户程序在启动前是否有损坏丢失,这种方法必须要求原厂在芯片出厂前往芯片bootloader区烧录固化一个特定的bootloader程序才能实现,如下图1所示。bootloader程序校验机制如下:
a、芯片出厂前由原厂往芯片flash的特定区域烧录固化bootloader启动引导程序;
b、芯片上电时,首先运行bootloader启动引导程序,引导程序会对用户程序代码进行校验,并把计算出一个校验值与用户烧写的校验值进行对比;
c、如果校验值匹配,则由bootloader程序切换到用户程序,用户程序开始运行。
此方案:如果控制芯片上电前bootloader程序代码可能已经有损坏,则芯片一上电工作就有可能执行错误指令;所以一旦bootloader程序代码数据有损坏,则无法正常完成上电校验操作以及无法避免芯片执行错误指令,可能芯片都无法进入用户程序运行(即便此时用户程序代码是正常的)。
发明内容
为了解决上述技术问题,本发明的目的是提供一种芯片内flash区的代码保护方法,可以提高芯片的安全性和可靠性,避免安全事故的发生。
为了解决上述技术问题,本发明的目的是提供一种芯片内flash区的代码保护装置,可以提高芯片的安全性和可靠性,避免安全事故的发生。
本发明所采用的技术方案是:一种芯片内flash区的代码保护方法,其包括:
步骤S1、在控制芯片内设置校验单元;
步骤S2、在芯片上电时,判断flash区的上电校验控制字,如果flash区控制字开启了上电校验,则执行步骤S3;
步骤S3、通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入的校验值一致则执行步骤S4,如果不一致则芯片停止启动内核;
步骤S4、启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
进一步,所述步骤S3,具体包括:
通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在一种安全状态,不再继续启动。
进一步,其还包括步骤5,所述步骤5具体包括:在芯片上电后,内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,校验完成后由用户程序判断动态校验结果来决定芯片是否继续运行或者进行自保护。
一种芯片内flash区的代码保护装置,其包括:
校验单元;用于读取及校验芯片内flash区的代码;
上电启动单元:用于判断flash区的上电校验控制字,决定是否执行上电校验动作;
上电校验保护单元:用于通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入校验值一致则启动内核,运行用户程序,如果不一致则芯片停止启动内核;
内核启动及初始化单元:用于启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
进一步,所述上电校验保护单元具体用于通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在一种安全状态,不再继续启动。
进一步,其还包括动态校验保护单元,其用于内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,校验完成后由用户程序判断动态校验结果来决定芯片是否继续运行或者进行自保护。
进一步,所述Flash内设置有NVR区,NVR区存有上电校验控制字及用户写入的校验结果,用于给用户程序烧录在芯片后上电时是否启动上电校验保护的控制命令及对校验结果对比用。
本发明的有益效果是:本发明不需要原厂往控制芯片内固化烧录特定的bootloader程序,提高了生产效率;本发明在控制芯片上电时,内核不会立即运行初始化,先校验flash区用户程序代码,确保上电时flash区的用户程序代码没有被损坏后在启动内核执行用户程序,避免因执行错误代码而引发的安全事故,提高了芯片的安全性和可靠性。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是现有技术中flash区的结构示意图;
图2是本发明一种芯片内flash区的代码保护方法的流程图;
图3是本发明一种芯片内flash区的代码保护装置中芯片的结构示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
如图2所示,一种芯片内flash区的代码保护方法,其包括:
步骤S1、在控制芯片内设置校验单元;对芯片内部flash的用户程序代码实现CRC-16校验算法并计算得到CRC-16校验结果值。
步骤S2、在芯片上电时,判断flash区的上电校验控制字,如果flash区控制字开启了上电校验,则执行步骤S3;
步骤S3、通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入的校验值一致则执行步骤S4,如果不一致则芯片停止启动内核;
步骤S3,具体包括:通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在一种安全状态,不再继续启动。
对芯片内部flash以8Kbytes为单位进行校验,这样可以把整个flash区分成n块(flash大小一般是2n Kbytes,n一般大于等于3,所以8Kbytes为单位可以满足大部分芯片flash的要求),分块校验的好处在于,如果单独某一块flash被物理损坏,而其它块区正常,则可以不使用该损坏块区,而将用户程序烧录到正常的flash块区,这样不至于整个芯片无法使用。
步骤S4、启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
实施例1
上电启动过程
与通用芯片的启动方式不一样,本发明涉及的控制芯片在上电时,首先会启动校验单元,由校验单元通过判断NVR区的上电校验控制字,决定是否执行上电校验动作。
上电校验保护
如果NVR区控制字开启了上电校验,则校验单元对控制芯片内部flash的用户程序代码进行上电校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在一种安全状态,不再继续启动。
如果NVR区控制字没有使能上电校验,则芯片的启动流程直接跳到内核启动阶段。
内核启动及初始化。
若上电校验通过,则内核开始启动,内核启动过程中会对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
用户程序工作运行。
用户程序与普通MCU用户程序的执行原理一致,但本专利发明涉及的控制芯片,可以提供一组校验控制寄存器,用户可以在编写程序时,在主程序中操作该组校验控制寄存器来启动动态校验保护机制。
控制芯片上电后,内核不会立即运行初始化,先是芯片内部的校验单元开始工作:根据用户烧录程序时所选择使能校验的flash块控制字节,由校验单元对相应使能校验的flash块进行校验,并将校验值与烧录的校验值一一比较;如果各块flash的校验值对比全都正确,则控制芯片的内核开始工作,待内核初始化完成后,开始运行flash区的用户程序代码;反之,如果某一块的校验值不正确,则说明该块对应的用户程序代码已经被损坏了,相应的控制芯片将不会继续进行启动,控制芯片将会锁死在一种安全状态下,以避免引发错误操作。
进一步作为优选的实施方式,其还包括步骤5,所述步骤5具体包括:在芯片上电启动成功后,内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,校验完成后由用户程序判断动态校验结果来决定芯片是否继续运行或者进行自保护。
实施例2
上电校验成功后,用户程序开始运行。用户在编写程序时可以选择通过操作校验控制寄存器组来决定是否在程序运行过程中对用户程序代码进行动态校验(芯片在设计时会设计相应的校验控制寄存器组提供给用户操作)。
动态校验的工作过程及方法如下:在用户程序运行中,用户通过操作校验控制寄存器相应块的校验使能位决定是否对该块flash进行动态校验,动态校验的结果保存在对应的校验结果寄存器中,待动态校验完成后,决定芯片是否继续运行或者进行自保护自保护可以是再次开启校验并判断、芯片复位、对芯片的输出状态进行保护、停止MCU运行等)。即用户在编写程序时,在main主循环中,可以定时的通过使能校验控制寄存器组开启对flash区的整个用户程序代码或者某些flash块(8kbytes/块)进行校验保护,校验结果保存在校验结果寄存器中,用户可以查询该结果以决定控制芯片是否复位或暂停工作等保护操作。
如此可避免控制芯片在上电启动后,受到环境强干扰的影响,能导致芯片flash内的用户代码有损坏丢失,芯片在运行中无法校验出出错的情况。避免执行错误代码指令,导致产品不稳定,给产品带来极大风险。
一种芯片内flash区的代码保护装置,其包括
校验单元;用于读取及校验芯片内flash区的代码;
上电启动单元:用于判断flash区的上电校验控制字,决定是否执行上电校验动作;
上电校验保护单元:用于通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入校验值一致则启动内核,运行用户程序,如果不一致则芯片停止启动内核;
内核启动及初始化单元:用于启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
进一步作为优选的实施方式,所述上电校验保护单元具体用于通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在一种安全状态,不再继续启动。
进一步作为优选的实施方式,其还包括动态校验保护单元,其用于内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,校验完成后由用户程序判断动态校验结果来决定芯片是否继续运行或者进行自保护。
进一步作为优选的实施方式,所述Flash内设置有NVR区,NVR区存有上电校验控制字及用户写入的校验结果,用于给用户程序烧录在芯片后上电时是否启动上电校验保护的控制命令及对校验结果对比用。
如图3所示,其示出了一种芯片内flash区的代码保护装置种芯片的结构示意图,其包括芯片内核、校验单元和flash等其它模块。
其中flash区包括用户程序区和NVR区,NVR区空间用来存放用户烧录的用户程序代码的预先校验结果值,NVR区同时还需要预留一个或多个字节的空间,用于给用户程序烧录在芯片上电时是否启动上电校验保护的控制命令,该控制命令决定芯片上电时是否对用户程序代码进行校验保护,以及该启动哪些flash块的校验保护,因此,NVR区的大小根据实际需求确定,最少只需要几个字节的空间,满足存放各块flash的预先校验值及上电校验的控制命令字节即可。
校验单元独立存在于控制芯片内,不占用控制芯片内部的flash空间;校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,并将校验结果值与用户烧录的校验值进行对比。校验单元的功能就是完成对读取的数据进行CRC16检验算法,硬件是由物理寄存器构成;读取FLASH内的代码是与51内核共用通用的地址总线与数据总线实现的。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。

Claims (7)

1.一种芯片内flash区的代码保护方法,其特征在于,其包括:
步骤S1、在控制芯片内设置校验单元;
步骤S2、在芯片上电时,判断flash区的上电校验控制字,如果flash区控制字开启了上电校验,则执行步骤S3;
步骤S3、通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入的校验值一致则执行步骤S4,如果不一致则芯片停止启动内核;
在步骤S3中,所述校验单元与51内核共用通用的地址总线与数据总线以读取所述用户程序代码,并根据物理寄存器利用CRC16检验算法对所述用户程序代码进行校验;
步骤S4、启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
2.根据权利要求1所述的芯片内flash区的代码保护方法,其特征在于:所述步骤S3,具体包括:
通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在安全状态,不再继续启动。
3.根据权利要求1所述的芯片内flash区的代码保护方法,其特征在于:其还包括步骤5,所述步骤5具体包括:在芯片上电后,内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,校验完成后由用户程序判断动态校验结果来决定芯片是否继续运行或者进行自保护。
4.一种芯片内flash区的代码保护装置,其特征在于,其包括
校验单元;用于读取及校验芯片内flash区的代码,所述校验单元与51内核共用通用的地址总线与数据总线以读取所述芯片内flash区的代码,并根据物理寄存器利用CRC16检验算法对所述代码进行校验;
上电启动单元:用于判断flash区的上电校验控制字,决定是否执行上电校验动作;
上电校验保护单元:用于通过校验单元实现对控制芯片内部flash区的用户程序代码进行读取及校验,如果校验结果与用户写入校验值一致则启动内核,运行用户程序,如果不一致则芯片停止启动内核;
内核启动及初始化单元:用于启动内核,对MCU的各资源进行初始化配置,初始化完成后开始运行用户程序。
5.根据权利要求4所述的芯片内flash区的代码保护装置,其特征在于:
所述上电校验保护单元具体用于通过校验单元实现对控制芯片内部flash的用户程序代码以单位分块进行校验,判断各块的校验结果是否与用户烧录的校验结果是否一致,如果一致则内核开始启动,否则芯片会启动自保护,使芯片锁定在安全状态,不再继续启动。
6.根据权利要求5所述的芯片内flash区的代码保护装置,其特征在于: 其还包括动态校验保护单元,其用于内核在运行用户程序时,可调用校验单元对控制芯片内部flash的用户程序代码执行动态校验,决定芯片是否继续运行或者进行自保护。
7.根据权利要求5所述的芯片内flash区的代码保护装置,其特征在于:所述Flash内设置有NVR区,NVR区存有上电校验控制字,用于给用户程序烧录在芯片后上电时是否启动上电校验保护的控制命令;所述NVR区还存有用户写入的校验结果,用于对校验结果对比用。
CN201710888215.5A 2017-09-27 2017-09-27 一种芯片内flash区的代码保护方法及装置 Active CN107657153B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710888215.5A CN107657153B (zh) 2017-09-27 2017-09-27 一种芯片内flash区的代码保护方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710888215.5A CN107657153B (zh) 2017-09-27 2017-09-27 一种芯片内flash区的代码保护方法及装置

Publications (2)

Publication Number Publication Date
CN107657153A CN107657153A (zh) 2018-02-02
CN107657153B true CN107657153B (zh) 2020-11-13

Family

ID=61116149

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710888215.5A Active CN107657153B (zh) 2017-09-27 2017-09-27 一种芯片内flash区的代码保护方法及装置

Country Status (1)

Country Link
CN (1) CN107657153B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109189405B (zh) * 2018-07-19 2022-03-01 山东省科学院自动化研究所 一种验证程序Flash数据一致性的方法及***
CN110928499B (zh) * 2019-11-18 2023-11-14 珠海泰芯半导体有限公司 一种芯片内嵌的flash存储器、芯片以及芯片的启动方法
CN111782290B (zh) * 2020-06-02 2023-10-27 青岛信芯微电子科技股份有限公司 一种数据处理方法及设备

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4756787B2 (ja) * 2001-08-07 2011-08-24 任天堂株式会社 ゲームシステム
CN102360316A (zh) * 2011-10-20 2012-02-22 深圳芯邦科技股份有限公司 一次性可编程存储器中启动程序的运行方法及装置
CN103164251A (zh) * 2013-04-10 2013-06-19 苏州苏灵仪表有限公司 一种嵌入式微处理器输出程序校验码的方法
CN103914664A (zh) * 2012-12-31 2014-07-09 比亚迪股份有限公司 具有内部存储体保护功能的控制器与控制方法
CN104268448A (zh) * 2014-10-11 2015-01-07 中颖电子股份有限公司 采用快闪存储器的微处理器的程序代码保护方法
CN104700002A (zh) * 2013-12-05 2015-06-10 航天信息软件技术有限公司 一种软件保护、授权和注册的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104123167B (zh) * 2014-08-06 2017-06-23 无锡中微爱芯电子有限公司 具有配置字自检功能的mcu上电启动方法及其自检方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4756787B2 (ja) * 2001-08-07 2011-08-24 任天堂株式会社 ゲームシステム
CN102360316A (zh) * 2011-10-20 2012-02-22 深圳芯邦科技股份有限公司 一次性可编程存储器中启动程序的运行方法及装置
CN103914664A (zh) * 2012-12-31 2014-07-09 比亚迪股份有限公司 具有内部存储体保护功能的控制器与控制方法
CN103164251A (zh) * 2013-04-10 2013-06-19 苏州苏灵仪表有限公司 一种嵌入式微处理器输出程序校验码的方法
CN104700002A (zh) * 2013-12-05 2015-06-10 航天信息软件技术有限公司 一种软件保护、授权和注册的方法
CN104268448A (zh) * 2014-10-11 2015-01-07 中颖电子股份有限公司 采用快闪存储器的微处理器的程序代码保护方法

Also Published As

Publication number Publication date
CN107657153A (zh) 2018-02-02

Similar Documents

Publication Publication Date Title
US5327531A (en) Data processing system including corrupt flash ROM recovery
US7870378B2 (en) Electronic system with NAND flash memory storing boot code and highly reliable boot up method
CN107657153B (zh) 一种芯片内flash区的代码保护方法及装置
US20020129195A1 (en) Microcomputer with built-in programmable nonvolatile memory
JP2008009721A (ja) 評価システム及びその評価方法
CN104424047A (zh) 一种nvram数据恢复方法和装置
US9542113B2 (en) Apparatuses for securing program code stored in a non-volatile memory
CN105786545B (zh) 基于异构混合内存的断点恢复方法和***
US7096351B2 (en) Single-chip microcomputer and boot region switching method thereof
JPH0758503B2 (ja) Icカード
CN112379843B (zh) Eeprom数据处理方法、***、存储介质及终端
CN108647119A (zh) Linux***的启动方法、装置及设备
CN113220319A (zh) 一种数据更新方法、装置及车辆
CN113946481B (zh) Risc-v内核mcu调试的下载程序方法及调试器
US7340561B2 (en) Computer memory initialization
CN113094107B (zh) 数据保护方法、装置、设备及计算机存储介质
CN115827347A (zh) 一种嵌入式设备的控制方法及嵌入式设备
CN111783162B (zh) 数据保护实现方法、装置及计算机设备
US20100083073A1 (en) Data processing apparatus, memory controlling circuit, and memory controlling method
CN114115888A (zh) 一种基于BootRom功能扩展的嵌入式***启动方法
JP2000059981A (ja) ディジタル形保護継電装置
CN108628699B (zh) 一种基于ecc的flash数据异常处理方法及装置
US20010052114A1 (en) Data processing apparatus
CN107704270B (zh) 基于二取二架构的μC/OS-II***启动引导方法及装置
CN116185461B (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
GR01 Patent grant
GR01 Patent grant