CN102799452A - 系统软件升级方法和装置 - Google Patents

系统软件升级方法和装置 Download PDF

Info

Publication number
CN102799452A
CN102799452A CN2012102228691A CN201210222869A CN102799452A CN 102799452 A CN102799452 A CN 102799452A CN 2012102228691 A CN2012102228691 A CN 2012102228691A CN 201210222869 A CN201210222869 A CN 201210222869A CN 102799452 A CN102799452 A CN 102799452A
Authority
CN
China
Prior art keywords
file
read
subregion
memory device
write type
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.)
Granted
Application number
CN2012102228691A
Other languages
English (en)
Other versions
CN102799452B (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.)
SHENZHEN ANPUER TECHNOLOGY Co Ltd
Original Assignee
SHENZHEN ANPUER 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 ANPUER TECHNOLOGY Co Ltd filed Critical SHENZHEN ANPUER TECHNOLOGY Co Ltd
Priority to CN201210222869.1A priority Critical patent/CN102799452B/zh
Publication of CN102799452A publication Critical patent/CN102799452A/zh
Application granted granted Critical
Publication of CN102799452B publication Critical patent/CN102799452B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种系统软件升级方法和装置。所述系统软件升级方法包括以下步骤:加载并运行系统内核;将可读写型文件系统存储设备的system分区内存储的系统文件映射到随机存储器中,并加载所述系统文件;获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内。上述系统软件升级方法和装置,通过仅升级系统文件中某个或多个驱动程序、系统组件或资源文件,不需对整个系统软件进行升级,减少了升级数据传输的流量,节省了传送时间,从而节省升级时间,节省能源消耗,因传送的内容减少,也减少了出错的几率。

Description

系统软件升级方法和装置
技术领域
本发明涉及嵌入式软件升级领域,特别是涉及一种系统软件升级方法和装置。
背景技术
传统的系统包括Windows Embedded CE(嵌入式平台)系统、LINUX系统等。以Windows Embedded CE系统为例,当其中某个驱动程序、模块或资源需要升级时,需要通过升级整个镜像来完成,导致这种现象的根本原因是由于镜像本身的格式以及对驱动、模块或者资源的加载使用方式导致的。因传统的Windows Embedded CE镜像文件存放在如Flash、SD卡(Secure Digital MemoryCard,安全数码卡)等存储介质中,通过Boot loader将其整个或部分加载到RAM中运行,其中驱动程序、模块或资源被映射到“\windows”目录中,该部分的文件系统格式为BINFS,该文件系统格式只读,掉电、关机后将重新映射,因而无法升级该目录中的内容,只有通过升级存储介质中的原始镜像来升级系统。
上述Windows Embedded CE系统中某个驱动程序、模块或资源需要升级时,需升级整个镜像文件,升级时需要传送的数据量大,增大了网络流量及传送时间。
发明内容
基于此,有必要提供一种能减少网络流量及节省传送时间的系统软件升级方法。
一种系统软件升级方法,包括以下步骤:
加载并运行系统内核;
将可读写型文件系统存储设备的system分区内存储的系统文件映射到随机存储器中,并加载所述系统文件;
获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内。
在其中一个实施例中,在所述加载并运行内核的步骤之后,还包括步骤:
判断是否存在可读写型文件系统存储设备的system分区,若存在,则直接将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内,若不存在,则将可读写型文件系统存储设备格式化得到system分区,并将系统文件存储到system分区内。
在其中一个实施例中,所述获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内的步骤之后,还包括步骤:
重新启动系统,加载并运行系统内核。
在其中一个实施例中,所述可读写文件系统为FAT32格式文件系统;所述系统文件包括驱动程序、系统组件和资源文件。
在其中一个实施例中,在所述加载并运行系统内核的步骤之前,还包括步骤:将所述系统内核存储在Bootloader在系统存储设备上开辟的隐藏的空间上,将所述系统文件存储到可读写型文件系统存储设备的system分区内。
此外,还有必要提供一种能减少网络流量及节省传送时间的系统软件升级装置。
一种系统软件升级装置,包括:
加载模块,用于加载并运行系统内核;
映射模块,用于将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内;
所述加载模块加载所述系统文件;
升级模块,用于获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内。
在其中一个实施例中,还包括:
判断模块,用于判断是否存在可读写型文件系统存储设备的system分区;
所述映射模块还用于在所述判断模块判断出存在可读写型文件系统存储设备的system分区时,直接将可读写型文件系统存储设备的system分区内存储的系统文件映射到随机存储器内;
格式化模块,用于在所述判断模块判断出存在可读写型文件系统存储设备的system分区时,将可读写型文件系统存储设备格式化得到system分区;
解压模块,用于在所述格式化模块格式化得到system分区后,将所述系统文件存储到system分区内。
在其中一个实施例中,还包括:
重启模块,用于在所述根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区后,重新启动系统;
所述加载模块重新加载并运行系统内核。
在其中一个实施例中,所述可读写文件系统为FAT32格式文件系统;所述系统文件包括驱动程序、系统组件和资源文件。
在其中一个实施例中,还包括:初始化模块,用于在所述加载并运行内核之前,将所述系统内核存储在由Bootloader在系统存储设备上开辟的隐藏的空间上,将所述系统文件存储到可读写型文件系统存储设备的system分区内。
上述系统软件升级方法和装置,通过仅升级系统文件中某个或多个驱动程序、系统组件或资源文件,不需对整个系统软件进行升级,减少了升级数据传输的流量,节省了传送时间,从而节省升级时间,节省能源消耗,因传送的内容减少,也减少了出错的几率。
附图说明
图1为一个实施例中系统软件升级方法的流程图;
图2为另一个实施例中系统软件升级方法的流程图;
图3为一个实施例中系统软件升级装置的内部结构示意图;
图4为另一个实施例中系统软件升级装置的内部结构示意图。
具体实施方式
下面结合具体的实施例及附图对系统软件升级方法和装置的技术方案进行详细的描述,以使其更加清楚。
如图1所示,在一个实施例中,一种系统软件升级方法,包括以下步骤:
步骤S110,加载并运行系统内核。
具体的,系统软件包括系统内核和系统文件。其中,系统内核是不需要升级的;系统文件包括驱动程序、系统组件和资源文件等,该部分升级的可能性较大。系统有Windows系统,Linux系统等。下面均以Windows Embedded CE系统为例进行描述。系统内核采用nk.nb0表示采用,系统文件Windows.msk表示。启动系统后,先加载并运行系统内核。
在一个实施例中,在步骤110之前,还包括步骤:将系统内核存储由Bootloader在系统存储设备上开辟的隐藏的空间上,将系统文件存储到可读写型文件系统存储设备的system分区。具体的,系统存储设备上开辟的隐藏的空间是不使用任何文件系统,且该空间对操作系统不可见。系统存储设备一般指系统内存norflash、nand flash,inand,SD卡。将系统文件在烧录过程中存储到可读写文件系统存储设备的system分区windows目录下,如FAT32格式的存储设备的system分区windows目录下。本实施例中,主要是将包含驱动程序、系统组件和资源文件的系统文件压缩包解压到可读写文件系统存储设备的system分区windows目录下。
步骤S120,将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内,并加载系统文件。
具体的,可读写型文件系统可为FAT32格式文件系统、FAT64格式文件系统等。将可读写型文件系统存储设备的system分区windows目录下的系统文件中的驱动程序、系统组件和资源文件映射到随机存储器的windows目录下。加载所需的驱动程序、系统组件及资源文件。
步骤S130,获取升级请求,并根据升级请求升级所需文件到可读写型文件系统存储设备的system分区内。
具体的,根据升级请求升级所需文件到可读写型文件系统存储的system分区的windows目录内。
在一个实施例中,在步骤S130之后,还包括步骤:重新启动系统,加载并运行系统内核。重新启动系统后,加载运行系统内核,将可读写型文件系统存储设备的system分区内的升级后的驱动程序、系统组件或资源文件映射到随机存储器(RAM)内。
如图2所示,在一个实施例中,一种系统软件升级方法,包括以下步骤:
步骤S210,加载并运行系统内核。
步骤S220,判断是否存在可读写型文件系统存储设备的system分区,若存在,执行步骤S240,若否,执行步骤S230。
具体的,可先判断是否存在可读写型文件系统存储设备的system分区,不存在时,需格式化创建system分区,并将包含驱动程序、系统组件和资源文件的系统文件压缩包解压到该system分区内。
步骤S230,将可读写型文件系统存储设备格式化得到system分区,并将系统文件存储到system分区,然后执行步骤S240。
具体的,解压包含驱动程序、系统组件和资源文件的系统文件压缩包到system分区windows目录内。
步骤S240,将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内,并加载系统文件。
具体的,可读写型文件系统可为FAT32格式文件系统、FAT64格式文件系统等。将可读写型文件系统存储设备的system分区windows目录下的驱动程序、系统组件和资源文件映射到随机存储器的windows目录下。
步骤S250,获取升级请求,并根据升级请求升级所需文件到可读写型文件系统存储设备的system分区。
具体的,根据升级请求升级所需文件到可读写型文件系统存储的system分区的windows目录内。
在一个实施例中,步骤S250之后,还包括步骤:重新启动系统,加载并运行系统内核。
如图3所示,在一个实施例中,一种系统软件升级装置,包括加载模块110、映射模块120和升级模块130。其中:
加载模块110用于加载并运行内核。系统软件包括系统内核和系统文件。其中,系统内核是不需要升级的;系统文件包括驱动程序、系统组件、资源文件等,该部分升级的可能性较大。系统有Windows系统,Linux系统等。下面均以Windows Embedded CE系统为例进行描述。系统内核采用nk.nb0表示采用,系统文件采用Windows.msk表示。启动系统后,先加载并运行系统内核。
映射模块120用于将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内。具体的,可读写型文件系统可为FAT32格式文件系统、FAT64格式文件系统等。将可读写型文件系统存储设备的system分区windows目录下的系统文件映射到随机存储器的windows目录下。
加载模块110加载系统文件。加载模块110根据需要加载驱动程序、系统组件和资源文件等。
升级模块130用于获取升级请求,并根据升级请求升级所需文件到可读写型文件系统存储设备的system分区内。具体的,根据升级请求升级所需文件到可读写型文件系统存储的system分区的windows目录内。
如图4所示,在一个实施例中,上述系统软件升级装置,除了包括加载模块110、映射模块120和升级模块130,还包括判断模块140、格式化模块150、解压模块160、重启模块170和初始化模块180。其中:
判断模块140用于判断是否存在可读写型文件系统存储设备的system分区。
映射模块120还用于在判断模块140判断出存在可读写型文件系统存储设备的system分区时,将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器。具体的,映射模块120将可读写型文件系统存储设备的system分区windows目录下存储的驱动程序、系统组件和资源文件映射到随机存储器的windows目录下。
格式化模块150用于在判断模块140判断出存在可读写型文件系统存储设备的system分区时,将可读写型文件系统存储设备格式化得到system分区。
解压模块160用于在格式化模块150格式化得到system分区后,将系统文件存储到system分区。具体的,将包含驱动程序、系统组件和资源文件的系统文件压缩包解压到system分区windows目录下。
重启模块170用于在根据升级请求升级所需文件到可读写型文件系统存储设备的system分区后,重新启动系统。
加载模块110重新加载并运行系统内核。
初始化模块180用于在加载并运行内核之前,将系统内核存储在由Bootloader在系统存储设备上开辟的隐藏的空间上,将包含驱动程序、系统组件和资源文件的系统文件压缩包解压到可读写型文件系统存储设备的system分区内。
上述系统软件升级方法和装置,通过仅升级系统文件中某个或多个驱动程序、系统组件或资源文件,不需对整个系统软件进行升级,减少了升级数据传输的流量,节省了传送时间,从而节省升级时间,节省能源消耗,因传送的内容减少,也减少了出错的几率。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种系统软件升级方法,包括以下步骤:
加载并运行系统内核;
将可读写型文件系统存储设备的system分区内存储的系统文件映射到随机存储器中,并加载所述系统文件;
获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内。
2.根据权利要求1所述的系统软件升级方法,其特征在于,在所述加载并运行内核的步骤之后,还包括步骤:
判断是否存在可读写型文件系统存储设备的system分区,若存在,则直接将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内,若不存在,则将可读写型文件系统存储设备格式化得到system分区,并将系统文件存储到system分区内。
3.根据权利要求1所述的系统软件升级方法,其特征在于,所述获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内的步骤之后,还包括步骤:
重新启动系统,加载并运行系统内核。
4.根据权利要求1至3中任一项所述的系统软件升级方法,其特征在于,所述可读写文件系统为FAT32格式文件系统;所述系统文件包括驱动程序、系统组件和资源文件。
5.根据权利要求1所述的系统软件升级方法,其特征在于,在所述加载并运行系统内核的步骤之前,还包括步骤:将所述系统内核存储在Bootloader在系统存储设备上开辟的隐藏的空间上,将所述系统文件存储到可读写型文件系统存储设备的system分区内。
6.一种系统软件升级装置,其特征在于,包括:
加载模块,用于加载并运行系统内核;
映射模块,用于将可读写型文件系统存储设备的system分区存储的系统文件映射到随机存储器内;
所述加载模块加载所述系统文件;
升级模块,用于获取升级请求,并根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区内。
7.根据权利要求6所述的系统软件升级装置,其特征在于,还包括:
判断模块,用于判断是否存在可读写型文件系统存储设备的system分区;
所述映射模块还用于在所述判断模块判断出存在可读写型文件系统存储设备的system分区时,直接将可读写型文件系统存储设备的system分区内存储的系统文件映射到随机存储器内;
格式化模块,用于在所述判断模块判断出存在可读写型文件系统存储设备的system分区时,将可读写型文件系统存储设备格式化得到system分区;
解压模块,用于在所述格式化模块格式化得到system分区后,将所述系统文件存储到system分区内。
8.根据权利要求6所述的系统软件升级装置,其特征在于,还包括:
重启模块,用于在所述根据升级请求升级所需文件到所述可读写型文件系统存储设备的system分区后,重新启动系统;
所述加载模块重新加载并运行系统内核。
9.根据权利要求6至8中任一项所述的系统软件升级装置,其特征在于,所述可读写文件系统为FAT32格式文件系统;所述系统文件包括驱动程序、系统组件和资源文件。
10.根据权利要求6所述的系统软件升级装置,其特征在于,还包括:
初始化模块,用于在所述加载并运行内核之前,将所述系统内核存储在由Bootloader在系统存储设备上开辟的隐藏的空间上,将所述系统文件存储到可读写型文件系统存储设备的system分区内。
CN201210222869.1A 2012-06-29 2012-06-29 系统软件升级方法和装置 Active CN102799452B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210222869.1A CN102799452B (zh) 2012-06-29 2012-06-29 系统软件升级方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210222869.1A CN102799452B (zh) 2012-06-29 2012-06-29 系统软件升级方法和装置

Publications (2)

Publication Number Publication Date
CN102799452A true CN102799452A (zh) 2012-11-28
CN102799452B CN102799452B (zh) 2015-10-07

Family

ID=47198568

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210222869.1A Active CN102799452B (zh) 2012-06-29 2012-06-29 系统软件升级方法和装置

Country Status (1)

Country Link
CN (1) CN102799452B (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104730993A (zh) * 2015-03-24 2015-06-24 深圳市金正方科技股份有限公司 智能仪表分区升级方法及智能仪表
WO2016173128A1 (zh) * 2015-04-27 2016-11-03 中兴通讯股份有限公司 一种软件版本的下载方法及装置、存储介质
CN106250188A (zh) * 2016-07-29 2016-12-21 捷开通讯(深圳)有限公司 一种系统固件映像文件的生成方法及系统
CN106445504A (zh) * 2016-08-31 2017-02-22 上海斐讯数据通信技术有限公司 一种移动终端设备驱动的升级方法及系统
WO2018032757A1 (zh) * 2016-08-17 2018-02-22 中兴通讯股份有限公司 组件升级的方法及装置
CN110554934A (zh) * 2019-09-06 2019-12-10 山东超越数控电子股份有限公司 一种嵌入式设备及其系统分区和升级方法
CN111984334A (zh) * 2020-08-17 2020-11-24 上海睿赛德电子科技有限公司 一种轻量的操作系统内核与驱动分离方法
CN112527371A (zh) * 2020-12-17 2021-03-19 杭州海康威视数字技术股份有限公司 一种引导加载程序升级方法、装置、电子设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155837A (en) * 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
CN1928820A (zh) * 2006-09-30 2007-03-14 四川长虹电器股份有限公司 嵌入式系统及其升级方法
CN101425018A (zh) * 2008-12-05 2009-05-06 深圳创维数字技术股份有限公司 基于分段式的嵌入式固件升级方法及装置
CN101477471A (zh) * 2009-01-07 2009-07-08 杭州海康威视数字技术股份有限公司 一种嵌入式系统固件在线升级方法
CN101639782A (zh) * 2009-07-14 2010-02-03 上海市共进通信技术有限公司 基于嵌入式操作系统的系统引导载入方法
CN101782859A (zh) * 2010-03-18 2010-07-21 上海乐毅信息科技有限公司 一种嵌入式系统在应用中的升级方法
CN102243587A (zh) * 2010-05-14 2011-11-16 康佳集团股份有限公司 嵌入式系统中对rom程序的升级方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5155837A (en) * 1989-03-02 1992-10-13 Bell Communications Research, Inc. Methods and apparatus for software retrofitting
CN1928820A (zh) * 2006-09-30 2007-03-14 四川长虹电器股份有限公司 嵌入式系统及其升级方法
CN101425018A (zh) * 2008-12-05 2009-05-06 深圳创维数字技术股份有限公司 基于分段式的嵌入式固件升级方法及装置
CN101477471A (zh) * 2009-01-07 2009-07-08 杭州海康威视数字技术股份有限公司 一种嵌入式系统固件在线升级方法
CN101639782A (zh) * 2009-07-14 2010-02-03 上海市共进通信技术有限公司 基于嵌入式操作系统的系统引导载入方法
CN101782859A (zh) * 2010-03-18 2010-07-21 上海乐毅信息科技有限公司 一种嵌入式系统在应用中的升级方法
CN102243587A (zh) * 2010-05-14 2011-11-16 康佳集团股份有限公司 嵌入式系统中对rom程序的升级方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104730993A (zh) * 2015-03-24 2015-06-24 深圳市金正方科技股份有限公司 智能仪表分区升级方法及智能仪表
WO2016173128A1 (zh) * 2015-04-27 2016-11-03 中兴通讯股份有限公司 一种软件版本的下载方法及装置、存储介质
US10338911B2 (en) 2015-04-27 2019-07-02 Zte Corporation Method and device for downloading software version, and storage medium
CN106250188A (zh) * 2016-07-29 2016-12-21 捷开通讯(深圳)有限公司 一种系统固件映像文件的生成方法及系统
CN106250188B (zh) * 2016-07-29 2019-08-23 捷开通讯(深圳)有限公司 一种系统固件映像文件的生成方法及系统
WO2018032757A1 (zh) * 2016-08-17 2018-02-22 中兴通讯股份有限公司 组件升级的方法及装置
CN107766064A (zh) * 2016-08-17 2018-03-06 中兴通讯股份有限公司 组件升级的方法及装置
CN106445504A (zh) * 2016-08-31 2017-02-22 上海斐讯数据通信技术有限公司 一种移动终端设备驱动的升级方法及系统
CN110554934A (zh) * 2019-09-06 2019-12-10 山东超越数控电子股份有限公司 一种嵌入式设备及其系统分区和升级方法
CN111984334A (zh) * 2020-08-17 2020-11-24 上海睿赛德电子科技有限公司 一种轻量的操作系统内核与驱动分离方法
CN112527371A (zh) * 2020-12-17 2021-03-19 杭州海康威视数字技术股份有限公司 一种引导加载程序升级方法、装置、电子设备及存储介质

Also Published As

Publication number Publication date
CN102799452B (zh) 2015-10-07

Similar Documents

Publication Publication Date Title
CN102799452A (zh) 系统软件升级方法和装置
KR101861724B1 (ko) 사전 부팅 펌웨어 갱신을 위한 선택적인 전력 관리
CN103455354B (zh) 一种防止固件升级失败的方法和设备
RU2419839C2 (ru) Система и способ обновления программы для мобильного терминала с поддержкой ота
EP2998861A1 (en) Implementing and deleting method and device for intelligent terminal multi-operation system
CN109634645B (zh) 固件升级方法及终端
US9507604B2 (en) Boot method and boot system
CN105760200A (zh) 终端设备及其系统升级方法
US20100132042A1 (en) Method for upgrading antivirus software and terminal and system thereof
CN103970557B (zh) 存储设备启动系统的方法及存储设备
CN102065118A (zh) 一种网络设备升级方法及装置
CN101694623A (zh) 一种更新手持设备软件的方法
CN103324492A (zh) 基本输入输出系统固件升级方法及电子装置
CN109408122B (zh) 一种设备启动方法、电子设备和计算机存储介质
CN110597533A (zh) 一种fpga板卡程序更新系统及方法
CN105183525A (zh) 一种系统软件的升级方法及实现该升级方法的电子设备
CN104572147A (zh) 云启动系统、具有云启动系统的虚拟机及其启动方法
WO2015127730A1 (zh) 版本文件的运行方法及装置
CN103902334A (zh) 基于安卓系统的静默式升级方法及系统
CN109710297B (zh) 一种设备整体或分模块进行升级和回退方法
CN103235703B (zh) 预置资源存储方法和装置
CN105825126A (zh) 一种文件保护方法及装置
CN103455750A (zh) 一种嵌入式设备的高安验证方法及装置
CN104991805A (zh) 智能设备及其系统灾备控制方法
EP3043262A1 (en) Method and device for remote base station version installation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant