CN101324850A - Linux内核动态加载方法 - Google Patents
Linux内核动态加载方法 Download PDFInfo
- Publication number
- CN101324850A CN101324850A CNA2007101108649A CN200710110864A CN101324850A CN 101324850 A CN101324850 A CN 101324850A CN A2007101108649 A CNA2007101108649 A CN A2007101108649A CN 200710110864 A CN200710110864 A CN 200710110864A CN 101324850 A CN101324850 A CN 101324850A
- Authority
- CN
- China
- Prior art keywords
- linux kernel
- map
- linux
- new
- 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.)
- Granted
Links
Images
Abstract
一种LINUX内核动态加载方法,包括:步骤S102,在运行已有LINUX内核的系统中保留内存空间,用于加载新LINUX内核映象和重定位程序映象;步骤S104,当需要更换运行中的已有LINUX内核时,将新LINUX内核映象和重定位程序映象放入保留内存空间;步骤S106,停止运行中的已有LINUX内核,不再响应外界请求,并将系统控制权交给重定位程序;步骤S108,重定位程序将新LINUX内核映象搬移到指定系统内存位置,覆盖已有LINUX内核映象,并设定新LINUX内核的启动参数;以及步骤S110,启动新LINUX内核,并且启动后的新LINUX内核接管系统控制权。
Description
技术领域
本发明涉及基于嵌入式LINUX系统设备动态更新LINUX内核的方法,并且具体地,涉及一种利用运行中的LINUX动态加载并切换到另一LINUX内核的技术。
背景技术
目前,LINUX已经在大量嵌入式系统中使用,这些设备在使用时常常需要对LINUX内核进行升级,目前加载和更新LINUX内核版本通常采用相应的BootLoader(启动加载程序)来完成,通常需要运行中的设备重新启动再运行BootLoader重新加载新的LINUX内核版本。
然而,上述的这些BootLoader往往功能比较单一,所以在实际使用中存在较多限制,主要体现在以下几个方面:
(1)设备要更新LINUX内核版本时需要重新启动,上电后再运行BootLoader重新加载新的LINUX内核,而一些设备上电初始化时需要花费较长时间,这导致整个过程变得漫长;
(2)目前,大多数BootLoader功能比较单一,编程接口比较少,不支持多任务编程和中断处理方式,大多数情况下采用轮询方式依次处理,这样,用户在上面开发自己功能时编程比较困难;
(3)对设备驱动支持并不全面,例如,对通讯设备的支持比较有限,通常它们只支持串口、网卡等比较常用设备;
(4)对通讯协议支持有限,使用通常BootLoader从外界获取LINUX内核版本会受到不少限制。
针对前面所述内容可以看出,目前采用BOOTLAODER加载技术来更新LINUX内核速度较慢,功能单一,且适应性较差,因此,为嵌入式设备提供一种快速有效切换LINUX内核的方法无疑是理想的。
发明内容
考虑到上述问题而做出本发明,为此,本发明旨在提供一种LINUX内核的动态加载方案,以快速完成LINUX内核版本更新。
为了实现上述目的,根据本发明的实施例,提供了一种LINUX内核动态加载方法。
该方法包括以下处理:步骤S102,在运行已有LINUX内核的系统中保留内存空间,用于加载新LINUX内核映象和重定位程序映象;步骤S104,当需要更换运行中的已有LINUX内核时,将新LINUX内核映象和重定位程序映象保存至保留内存空间;步骤S106,停止运行中的已有LINUX内核,不再响应外界请求,并将系统控制权交给重定位程序;步骤S108,重定位程序将新LINUX内核映象搬移到指定系统内存位置,覆盖已有LINUX内核映象,并设定新LINUX内核的启动参数;以及步骤S110,启动新LINUX内核,并且启动后的新LINUX内核接管系统控制权。
其中,在步骤S102中,保留内存空间分为两部分,分别用于加载新LINUX内核映象和重定位程序映象。并且,分为两部分的保留内存空间可以为高端物理内存和低端物理内存,其中,高端物理内存用于加载新LINUX内核映象,低端物理内存用于加载重定位程序映象。
这样,在步骤S104中,新LINUX内核映象和重定位程序映象首先临时保存在用户内存空间中,然后通过相应的系统调用保存至保留内存空间。
此后,在步骤S106中,可以通过以下处理来停止已有LINUX内核:关闭内存管理单元功能;以及使CPU退出系统特权模式。
其中,在关闭内存管理单元功能之前,已有LINUX内核准备用于建立内存映射区的临时页表,其中,内存映射区的物理地址和虚拟地址一致,并且在内存映射区中关闭内存管理单元功能以及后续执行重定位程序。
通过本发明的上述技术方案,可以在正在运行的LINUX系统中实现LINUX内核的快速加载和快速切换,显著提高了内核版本升级的效率,并且具有很强的适应性,能够在复杂系统中提高设备软件管理功能。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的LINUX内核动态加载方法的流程图;
图2是根据本发明实施例的LINUX内核动态加载方法中已有LINUX内核占有内存和保留内存的分布式意图;
图3是根据本发明实施例的LINUX内核动态加载方法中将新的LINUX内核和重定位程序(重定向代码)加载到保留内存的示意图;
图4是根据本发明实施例的LINUX内核动态加载方法中已有LINUX内核与跳出重定位程序执行示意图;
图5是根据本发明实施例的LINUX内核动态加载方法中将新的LINUX内核搬移到系统指定位置并启动新的LINUX内核的示意图;以及
图6是根据本发明实施例的LINUX内核动态加载方法中重定位的处理流程图。
具体实施方式
在本实施例中,提供了一种LINUX内核动态加载方法。以下将X86系列为例进行说明(目前,X86 CPU被大量应用到嵌入式设备中,这些设备往往没有硬盘这种存储设备,而且由于电信设备特点,系统设备经常需要更新系统软件)。
如图1所示,根据本实施例的LINUX内核动态加载方法包括以下处理:步骤S102,在运行已有LINUX内核的系统中保留内存空间(该空间不会被已有LINUX内核占用),用于加载新LINUX内核映象和重定位程序映象;步骤S104,当需要更换运行中的已有LINUX内核时,将新LINUX内核映象和重定位程序映象保存至保留内存空间,因此避免了切换LINUX内核时所造成的损坏,同时避免占用系统的外部存储器;步骤S106,停止运行中的已有LINUX内核,不再响应外界请求,并将系统控制权交给重定位程序,避免当前内核停止工作时出现无法运行系统的情况;步骤S108,重定位程序将新LINUX内核映象搬移到指定系统内存位置,覆盖已有LINUX内核映象,并设定新LINUX内核的启动参数;以及步骤S110,启动新LINUX内核,并且启动后的新LINUX内核接管系统控制区权。
其中,在步骤S102中,已有LINUX内核占用内存和保留内存的分布如图2所示。并且,将保留内存空间分为两部分,分别用于加载新LINUX内核映象和重定位程序映象,例如,分为两部分的保留内存空间为高端物理内存和低端物理内存,其中,高端物理内存用于加载新LINUX内核映象,低端物理内存用于加载重定位程序映象(在X86系统中,保留内存空间用于存储新LINUX内核映象的部分大于1兆)。
这样,在步骤S104中,新LINUX内核映象和重定位程序映象首先临时保存在用户内存空间中,然后通过相应的系统调用保存至保留内存空间,该处理过程如图3所示。
此外,在步骤S106中,需要停止已有LINUX内核,这是因为在已有LINUX内核没有停止工作的情况下覆盖或修改内存中已有LINUX内核的映象都会导致系统崩溃。这里,停止已有LINUX内核的处理如下:关闭内存管理单元(MMU)功能;以及使CPU退出系统特权模式(在X86系统中,将CPU从保护模式切换到实模式)。
该处理的目的就是切断已有LINUX内核与系统的关系。其中,关闭MMU功能的原因是,如果MMU继续工作,就需要已有LINUX内核建立内存页面映射表,而K1内核管理空间在后面会被新的LINUX内核映象覆盖破坏,所以MMU功能将无法正常执行从而导致系统崩溃。
然而,关闭CPU MMU功能会使当前执行的代码地址从虚拟地址变为物理地址。因此,在关闭MMU功能之前,需要在已有LINUX内核准备用于建立内存映射区的临时页表,其中,内存映射区的物理地址和虚拟地址一致,之后,在内存映射区中关闭MMU功能以及后续执行重定位程序,这样,不会出现当关闭MMU后后续指令无法执行的情况。
应当注意的是,重定位程序是一个不依赖内核服务的二进制执行程序BIN映象。重定位程序的执行不依赖于操作系统提供任何服务,它的功能主要是把新的LINUX内核映象搬移到系统规定的物理内存位置上,同时覆盖已有LINUX内核映象。
其中,以X86系统为例,由于重定位程序开始运行在CPU实模式下,能访问的内存空间是不能超过1兆大小,但新的LINUX内核映象又保存在高端内存空间中(地址大于1兆,原因是新的LINUX内核映象大小有可能大于1兆,无法存在1兆以下内存空间中),所以重定位程序必须使CPU重新进入32位保护模块,在把新的LINUX内核映象搬移到内存1M位置后,再使CPU重新回到实模式下。至此,原有内核映象准备完毕,重定位程序设置好新的LINUX内核启动时参数块,就可以跳入新的LINUX内核入口处启动运行新的LINUX内核(如图5所示)。
下面将参照具体的实例来描述本发明。
在该实例中,在X86系统下,设正在运行中的LINUX内核为K1,要加载的新的LINUX内核为K2。
根据本发明实施例的LINUX内核动态加载方法包括以下步骤:
(1)设备上电后,首先执行BIOS程序,然后再执行BootLoader程序,以加载并运行以后的LINUX内核(即,K1)映象(这是X86嵌入式设备启动基本过程);(对应于上述步骤S102)
(2)当系统需要更新LINUX内核时,必须准备一个新的LIINUX内核映象,之后为完成LINUX内核动态切换而设计的重定位程序(BIN格式执行文件),这些程序通过系统的版本管理应用程序从外界服务器被直接加载到系统内存中,所以系统必须为它们提供一个可靠的内存空间,与上面的描述相同,这里采用是保留特定物理内存来得到所需内存的方法;(对应于上述步骤S104)
其中,在步骤(1)中,当K1内核启动时,系统会检查系统内所有可用的内存,并且把这些内存交给内核内存管理模块进行管理,提供给系统各种应用使用。如图2所示,这些保留内存将分为两部分,分别用于保存K2内核映象和重定位程序映象。
之后,在步骤(2)中,当K1启动完毕开始正常运行时,LINUX的应用程序就可以通过相应对外通讯设备从外界加载K2内核映象和重定位程序映象,这些映象都暂时保留在用户内存空间中,再通过相应的系统调用把这些映象写入上述的保留内存中(如图3所示)(K2映象存储在高端物理内存RAM中,而重定位程序(BIN格式执行文件)存储在保留的低端物理内存中)。K2内核映象和重定向程序映象准备完毕后,接下来需要切换内核版本工作,首先通过相应指令关闭系统中断处理,这样CPU不再处理中断,K1内核也不会再发生进程调度和响应外界服务请求。(对应于上述步骤S106)
这里,由于X86系列特点,系统保护模式下还需要GDT表才能正常工作,K1内核建立的GDT表在内核切换中也是不能使用的,所以在关闭MMU后把CPU从32位保护模式切换到实模式下,避免依赖K1建立的GDT表(全局段描述符表),此时系统基本上与K1内核基本上不存在联系,接下来控制权将交给重定向程序。(如图4所示)
通过LINUX的系统调用进入内核态后,关闭内核中系统中断处理,再执行内核各模块卸载工作,内核在关闭MMU和退出32位保护模式后通过跳转指令跳入低端保留内存的重定位程序入口处,系统控制权也就交给了重定位程序,这时在内存中的K1映象已经没有作用了。
(3)执行图6所示的重新定位:建立一个临时GDP表,CPU进入32位保护模式;检查高端物理内存中的LINUX内核映象,将其拷贝到物理内存1M位置上;根据用户要求设定内核启动参数;退回CPU实模式,跳入LINUX内核入口处,启动新LINUX内核;(对应于步骤S108)
进一步描述以上处理:重定位执行程序开始在X86实模式下执行,而K2映象存放在高端物理中(地址空间大于1兆),所以必须切换到X86的32保护模式下才能访问这些内存空间,因此,需要建立一个临时的GDT表(这是X86 CPU的特征之一);重定位执行程序按LINUX内核运行要求搬移高端物理内存中K2映象到指定的物理内存位置1兆处,这时在内存中K1映象将会被覆盖;
(4)下面启动新的LINUX内核,这个可以参考标准BOOTLOADER程序做法,这里省略了其描述,在按用户要求设定内核启动参数块后,就可以执行K2映象了。(对应于步骤S110)
从上面的描述可以看出,本发明通过在基于LINUX嵌入式设备启动和内核版本更新中采用内核动态加载技术,解决了传统BOOTLAODER加载技术更新LINUX内核速度慢、功能单一、以及适应性差的问题。当运行中的嵌入式LINUX系统设备需要更新LINUX内核版本时,只需要执行相应的版本管理应用程序,通过对外通讯设备从相应服务器查询最新的LINUX内核版本,把新的LINUX内核拷贝到系统内存中,再利用LINUX内核动态加载技术运行新的LINUX内核版本,从而实现了更新设备LINUX内核,避免了设备重新启动来切换LINUX内核。
此外,由于切换内核过程中只使用系统内存资源,对其它外部设备没有要求,并且新的LINUX内核映象可以通过运行中LINUX系统向外界服务器获取,而LINUX系统相对于传统的BOOTLOADER对各种通讯设备驱动和通讯协议的支持更加丰富,因此本发明可以更好地适应各种嵌入式系统,包括各种复杂的嵌入式系统设备。由于LINUX系统相对于一般BOOTLOADER提供了丰富的编程接口和良好的运行环境,所以更有利于开发人员在此基础上进行开发。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种LINUX内核动态加载方法,其特征在于,包括:
步骤S102,在运行已有LINUX内核的系统中保留内存空间,用于加载新LINUX内核映象和重定位程序映象;
步骤S104,当需要更换运行中的所述已有LINUX内核时,将所述新LINUX内核映象和重定位程序映象保存至所述保留内存空间;
步骤S106,停止运行中的所述已有LINUX内核,不再响应外界请求,并将系统控制权交给重定位程序;
步骤S108,所述重定位程序将所述新LINUX内核映象搬移到指定系统内存位置,覆盖已有LINUX内核映象,并设定新LINUX内核的启动参数;以及
步骤S110,启动新LINUX内核,并且启动后的所述新LINUX内核接管所述系统控制权。
2.根据权利要求1所述的LINUX内核动态加载方法,其特征在于,在所述步骤S102中,所述保留内存空间分为两部分,分别用于加载所述新LINUX内核映象和所述重定位程序映象。
3.根据权利要求2所述的LINUX内核动态加载方法,其特征在于,分为两部分的所述保留内存空间为高端物理内存和低端物理内存,其中,所述高端物理内存用于加载所述新LINUX内核映象,所述低端物理内存用于加载所述重定位程序映象。
4.根据权利要求2所述的LINUX内核动态加载方法,其特征在于,在所述步骤S104中,所述新LINUX内核映象和重定位程序映象首先临时保存在用户内存空间中,然后通过相应的系统调用保存至所述保留内存空间。
5.根据权利要求1所述的LINUX内核动态加载方法,其特征在于,在所述步骤S106中,通过以下处理来停止所述已有LINUX内核:
关闭内存管理单元功能;以及
使CPU退出系统特权模式。
6.根据权利要求5所述的LINUX内核动态加载方法,其特征在于,在关闭所述内存管理单元功能之前,所述已有LINUX内核准备用于建立内存映射区的临时页表,其中,所述内存映射区的物理地址和虚拟地址一致,并且在所述内存映射区中关闭所述内存管理单元功能以及后续执行重定位程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101108649A CN101324850B (zh) | 2007-06-12 | 2007-06-12 | Linux内核动态加载方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101108649A CN101324850B (zh) | 2007-06-12 | 2007-06-12 | Linux内核动态加载方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101324850A true CN101324850A (zh) | 2008-12-17 |
CN101324850B CN101324850B (zh) | 2011-04-06 |
Family
ID=40188396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101108649A Expired - Fee Related CN101324850B (zh) | 2007-06-12 | 2007-06-12 | Linux内核动态加载方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101324850B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102339302A (zh) * | 2011-07-07 | 2012-02-01 | 曙光信息产业股份有限公司 | 一种基于hugetlbfs技术的龙芯刀片文件系统的实现方法 |
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
CN104407887A (zh) * | 2014-11-06 | 2015-03-11 | 航天科工深圳(集团)有限公司 | 一种嵌入式系统内核模块动态加载程序的方法及装置 |
WO2016091078A1 (zh) * | 2014-12-11 | 2016-06-16 | 北京奇虎科技有限公司 | 在Linux驱动中绑定内核符号的方法及装置 |
CN107656757A (zh) * | 2016-07-25 | 2018-02-02 | 南京中兴新软件有限责任公司 | 操作系统切换方法及装置 |
CN108228260A (zh) * | 2018-01-02 | 2018-06-29 | 联想(北京)有限公司 | 内核切换方法和电子设备 |
CN108874468A (zh) * | 2018-06-20 | 2018-11-23 | 深圳市腾讯网络信息技术有限公司 | 应用程序的加载方法、装置、计算机设备及存储介质 |
CN109976886A (zh) * | 2017-12-28 | 2019-07-05 | 深圳中电长城信息安全系统有限公司 | 内核远程切换方法及装置 |
WO2023273424A1 (zh) * | 2021-06-28 | 2023-01-05 | 深圳市中兴微电子技术有限公司 | 一种基于linux内核ko模块的加载方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6832333B2 (en) * | 2001-08-30 | 2004-12-14 | International Business Machines Corporation | Method for supporting user level online diagnostics on Linux |
CN100403258C (zh) * | 2004-07-21 | 2008-07-16 | 中国科学院软件研究所 | 嵌入式设备集成开发系统及其使用方法 |
-
2007
- 2007-06-12 CN CN2007101108649A patent/CN101324850B/zh not_active Expired - Fee Related
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102156675B (zh) * | 2010-02-12 | 2014-03-19 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102156675A (zh) * | 2010-02-12 | 2011-08-17 | 中兴通讯股份有限公司 | 一种内存分配方法及装置 |
CN102339302A (zh) * | 2011-07-07 | 2012-02-01 | 曙光信息产业股份有限公司 | 一种基于hugetlbfs技术的龙芯刀片文件系统的实现方法 |
CN102929747B (zh) * | 2012-11-05 | 2015-07-01 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
CN102929747A (zh) * | 2012-11-05 | 2013-02-13 | 中标软件有限公司 | 基于龙芯服务器的Linux操作系统崩溃转储的处理方法 |
CN102968342A (zh) * | 2012-11-12 | 2013-03-13 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
CN102968342B (zh) * | 2012-11-12 | 2015-03-11 | 华中科技大学 | 嵌入式平台下半虚拟化的快速切换客户操作系统的方法 |
CN104407887A (zh) * | 2014-11-06 | 2015-03-11 | 航天科工深圳(集团)有限公司 | 一种嵌入式系统内核模块动态加载程序的方法及装置 |
WO2016091078A1 (zh) * | 2014-12-11 | 2016-06-16 | 北京奇虎科技有限公司 | 在Linux驱动中绑定内核符号的方法及装置 |
CN107656757A (zh) * | 2016-07-25 | 2018-02-02 | 南京中兴新软件有限责任公司 | 操作系统切换方法及装置 |
CN109976886A (zh) * | 2017-12-28 | 2019-07-05 | 深圳中电长城信息安全系统有限公司 | 内核远程切换方法及装置 |
CN108228260A (zh) * | 2018-01-02 | 2018-06-29 | 联想(北京)有限公司 | 内核切换方法和电子设备 |
CN108874468A (zh) * | 2018-06-20 | 2018-11-23 | 深圳市腾讯网络信息技术有限公司 | 应用程序的加载方法、装置、计算机设备及存储介质 |
CN108874468B (zh) * | 2018-06-20 | 2021-03-26 | 深圳市腾讯网络信息技术有限公司 | 应用程序的加载方法、装置、计算机设备及存储介质 |
WO2023273424A1 (zh) * | 2021-06-28 | 2023-01-05 | 深圳市中兴微电子技术有限公司 | 一种基于linux内核ko模块的加载方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101324850B (zh) | 2011-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101324850B (zh) | Linux内核动态加载方法 | |
US7996720B2 (en) | Apparatus and method of mirroring firmware and data of embedded system | |
CN100432931C (zh) | 嵌入式系统动态补丁长跳转的实现方法 | |
EP2296089B1 (en) | Operating systems | |
JP4640728B2 (ja) | アプリケーション環境をクローニングするプロセスにおけるインクリメンタルプロファイリングデータを、ダイナミックかつ持続的にトラッキングするシステムおよび方法 | |
US8352933B2 (en) | Concurrent patching of operating systems | |
US20040034765A1 (en) | Method and apparatus for booting a computer system | |
CN102214113B (zh) | 一种操作系统升级方法、装置及终端 | |
EP2508990A1 (en) | Hypervisor replacing method and information processing device | |
CN102231138B (zh) | 计算机内存数据准确采集系统及获取方法 | |
CN102214118A (zh) | 一种虚拟机控制方法、系统及装置 | |
CN100538641C (zh) | 操作计算装置的方法 | |
CN103761088A (zh) | 一种适用于arm架构移动设备的多操作系统切换方法 | |
CN101287187A (zh) | 智能手机及其操作系统运行方法 | |
CN101414264A (zh) | 一种高可靠软件版本的更新方法和三种更新方式 | |
US7426720B1 (en) | System and method for dynamic preloading of classes through memory space cloning of a master runtime system process | |
CN102880477A (zh) | 一种实现计算机启动的方法和计算机 | |
CN114491507A (zh) | 一种基于嵌入式实时操作系统实现轻量级安全容器的设计方法 | |
CN1959635A (zh) | 一种软件版本更新的方法 | |
CN101615129A (zh) | 应用于分布式系统中的升级方法及版本管理客户端 | |
CN109783145B (zh) | 一种创建基于多映像的多功能嵌入式系统的方法 | |
CN1276349C (zh) | 一种机群跨平台并行系统镜像备份的方法 | |
CN102819440A (zh) | 一种多制式应用程序的动态加载方法和装置 | |
CN102200919B (zh) | 一种嵌入式操作系统启动运行的方法和装置 | |
CN114416031A (zh) | 面向AIoT场景支持RISC-V处理器的操作系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110406 Termination date: 20160612 |
|
CF01 | Termination of patent right due to non-payment of annual fee |