CN102662670B - 一种场景式无核嵌入式实时操作系统的实现方法 - Google Patents
一种场景式无核嵌入式实时操作系统的实现方法 Download PDFInfo
- Publication number
- CN102662670B CN102662670B CN201210096612.6A CN201210096612A CN102662670B CN 102662670 B CN102662670 B CN 102662670B CN 201210096612 A CN201210096612 A CN 201210096612A CN 102662670 B CN102662670 B CN 102662670B
- Authority
- CN
- China
- Prior art keywords
- scene
- task
- tasks
- real
- program
- 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
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种场景式无核嵌入式实时操作系统的实现方法,涉及单片机实时操作系统的设计和技术实现。本发明按照人机交互界面或控制进程为主线,把应用系统分解成一串既相对独立又有关联的场景。场景分为主场景和次级场景,所有场景用多级树形结构组织起来,系统在某个时段运行在某个场景内。系统又把任务分为抢先式任务和普通任务,普通任务又分为全局任务和局部任务。抢先式任务放在中断程序中处理,全局任务放在所有场景中运行,而局部任务则只运行在某个场景中。这样把系统任务分解为一个个简明的模块,使系统可以方便地使用构件化技术,从而采用无核设计。这种方法解决了操作系统挤占系统资源的问题,同时又能满足实时性要求。通过灵活配置、剪裁构件,设计出最紧凑的应用系统。场景式无核设计不仅方便程序移植,而且易学易用。
Description
技术领域
本发明涉及嵌入式实时操作系统设计领域,尤其涉及单片机实时操作系统的设计和技术实现。
背景技术、
一、目前,嵌入式实时操作系统有很多,绝大多数都沿用了传统大型操作系统的思路,提供了一个操作系统内核,由内核来负责任务调度、内存管理等工作,以确保系统实时、多任务运行。其中,能适用于单片机的实时操作系统却不多见,已知的可用于单片机的操作系统有μC/OS-II、RTX51等,它们应用在相对简单的单片机系统上,有以下几个方面的缺点:
1、本来单片机的程序空间、内存容量等资源就非常有限,而操作系统内核需要占用相当一部分的程序空间和内存,这就制约了系统的性能,也限制了一大部分单片机无法使用这些操作系统。
2、由于运行这些内核程序需要占用处理器时间,使系统的实时能力大打折扣。同时这也不利于节约资源、节省能源。
3、操作系统内核程序技术非常复杂,学习和使用起来比较难,尤甚对于一些新手,更是难以上手。若非必要,一般不会去选用操作系统。
4、这些单片机操作系统只是提供了传统的内核功能,而对于需要大量设计工作的驱动程序、常用程序库等中间件程序,还是需要设计人员自己设计和不断积累。操作系统给开发者提供的帮助十分有限。
对于大量的中低档应用,现有单片机操作系统不太适用,因此目前大都还是采用大循环(big loop)程序结构,其优点是直观,容易理解。大循环程序结构是一种笼统的说法,并无一定之规,每个成熟的工程师可能都有自己的一套方法和程序积累,因此无法形成统一的开发平台。
随着“后PC”时代的到来以及物联网的兴起,单片机及一些中低档嵌入式系统的应用将更加广泛。使用操作系统的好处是显而易见的,它既可以减少大量的重复性劳动,提高开发效率,缩短开发周期,又可以减少出错的可能性,提高系统的稳定性和可靠性。因此,时代在呼唤一种既适合单片机及一些中低档嵌入式系统、易学易用、又能更加绿色环保的实时操作系统的出现。
二、构件(component)技术是目前嵌入式开发中被广泛推广应用的软件技术,像VxWorks、eCos等著名的嵌入式实时操作系统都是采用构件化技术。构件是一个具有某种功能的单元,如某个驱动程序、库程序、内核等。 构件的大小用“颗粒度”来衡量,大尺度的构件可以包含多个小尺度的构件。操作系统构件化的意义在于能为开发者提供不同的构件,以使开发者能够配置出适合其特定需要的操作系统,从而节省资源,提高实时能力。
发明内容
本发明的目的是提出一种既符合单片机及一些中低档嵌入式应用的特点、又易学易用的单片机实时操作系统的实现方法。
本发明的技术方案包括两部分及以下步骤:
第一部分:软件建模方法
第一步,把应用系统按照运行进程分解成一串不同功能的场景,一个场景即是一个人机交互界面或是一个控制过程;
第二步,把所有场景按照多级树形结构组织起来;场景分为主场景和次级场景;
第三步,本发明把系统的实时任务划分为两类,即抢先式任务和普通任务,普通任务又分为全局任务和局部任务;
第二部分:软件编程方法
第四步,每个场景用一个包含无限循环的子程序来描述;整个应用系统程序的结构就是一个多级树形的循环嵌套结构;
第五步,编写或调入与上述程序建模结构相适应的设备驱动程序库、常用程序库等,并进行剪裁、配置,供各种任务调用;
第六步,配置系统的中断系统,并在中断程序中编写抢先式实时任务程序;
第七步,组织、编写全局任务的程序,并形成一个汇总调用子程序;各个场景都需要循环不断地调用该子程序;
第八步,编写各局部任务的程序;每个场景都有自己特有的局部任务,它们都需要放在该场景的循环体中不断地循环调用。
本发明的有益效果:
1、采用无核设计,解决了操作系统挤占单片机及一些中低档嵌入式系统资源的问题,既提高了系统的利用效率,也同时去掉了那些不是一般工程师所能轻易掌握的内核技术,提高了操作系统程序的可读性和易用性,使广大的工程师队伍都可以方便地使用本发明技术。
2、采用场景式的建模方法和把任务网格化,使整个系统采用构件化技术成为可能。构件化设计,使开发者可以采用“拿来主义”,直接利用现有的标准构件构筑自己的系统,大大减轻了开发者的劳动强度,缩短了新产品的开发周期;通过使用那些经过大量实用验证的标准构件,可以提高产品的稳定性和可靠性,同时也缩短了新产品的磨合期;另外,构件化设计,可以利用其可剪裁的特点,可以根据项目需要仅保留那些有用的构件,从而设计出符合需求的最紧凑、最绿色环保的应用系统;通过灵活配置机制,使标准构件非常适合在不同系统间的移植。这一点对单片机尤为重要。单片机种类繁多,各种开发环境五花八门,标准化构件可通过合理配置来适应各种系统。
3、多级树形结构的循环嵌套程序结构,是一种可适合绝大多数应用的系统运行机制。它把一个复杂的系统分解为一系列简明的模块,其设计思路清晰,易于理解,而且体现了构件化设计的特点。面向“场景”编程,与树形结构的循环嵌套程序结构相呼应,以人机交互或控制过程为主线,符合人类日常思维的方法和习惯,体现了注重工程师体验的人性化设计思想。它可使开发者提高工作效率,也降低了出错的可能性。
附图说明
图1 场景的关系图。
图2 场景的多级树形结构图。
图3 场景的程序流程图。
图4 系统程序整体流程图。
具体实施方式
以下结合图例对本发明做进一步阐述。
1、 场景的定义
嵌入式应用系统中,绝大部分都需要人机交互。一个人机交互界面或是一个控制过程,即可称之为场景。
2、场景的要素
本发明所述的场景包含三个要素:显示、按键和生存周期。
1)显示
场景的显示可分为三种类型:直接显示型(如液晶、数码管显示灯)、 提示型(状态指示灯或者声音提示等)、暗箱型(既无显示又无提示)。
2)按键
“按键” 在这里是广义的。它可以是键盘设备,也可以是来自系统外部的控制信号、或者是系统内部产生的控制信号,等等。按键的作用包括输入参数、控制设备、改变程序流程等。按键是可复用的,同一个按键在不同场景下的作用可能不同。场景之间的切换必须由“按键”来执行。
3)场景的生存周期
生存周期是在划分场景时一个重要的参考指标。生存周期的长度是相对场景循环体的周期来讲的。场景的生存周期一般都比较长,如等待按键、等待控制过程完成等,至少要求有一个以上的循环周期。
3、场景的规划
一个应用系统就如同一场戏剧一样,可以按照人机交互界面或控制进程为主线,分解成一串场景,每个场景相对独立,又具有承上启下的作用。在规划场景的时候,应注意它一般有一段较长的生存周期,而且必须通过按键来切换场景。另外,它还必须符合多级树形组织结构(如以下第4点所述)的要求。
通过这种建模方法,可把纷繁复杂的应用化解为一个个简明、形象的模块。这种方法符合人类日常思维的方法和习惯,使开发者能更有效地思考问题,并以其他人也容易看得懂的方式把自己的认识表达出来。
4、场景的分类
场景分为主场景和次级场景。系统中必须有而且只能有一个主场景。一般情况下,系统主要运行在主场景。除主场景之外,其它的场景都是次级场景。次级场景按照进程的先后顺序分为一级场景、二级场景等等。
5、场景之间的关系
按照场景之间的关系,可分为父场景和子场景。如图1所示,假设系统在场景A运行之后进入场景B,在场景B运行之后进入场景C,那么对于场景B来说,场景A是它的父场景,场景C是它的子场景。为了更好地实现模块化设计,本发明规定,每个子场景只能有一个父场景,而且,子场景退出运行后,必须回到它的父场景。另一方面,一个场景则允许有多个子场景,例如场景C、场景D都是场景B的子场景。
6、场景的多级树形组织结构
综上所述,可以把场景用多级树形结构组织起来,参见图2。
系统只有一个主场景。一般情况下,系统都是处在主场景。当需要进行一些具体操作,才进入次级场景。完成相应的操作后,系统最终又回归到主场景。
依照前面第5点所述的场景关系,全部场景形成了一个多级的树形结构。每一个次级场景只有一个父场景,而子场景则可以有多个。子场景退出运行后,必须回到它的父场景,这就意味着次级场景只有一个入口。这一点非常重要,它符合模块化设计的要求。
这种结构的特点是等级分明,条理清晰,符合模块化编程的特点。整个系统有如一个金字塔,塔尖就是系统的主场景。
在单片机及一些中低档嵌入式应用系统中,目前大都还是采用一种称为大循环(big loop)的程序结构。在这种结构下,如何组织程序并无一定之规,每个成熟的工程师可能都有自己的一套方法,因此无法形成统一的开发平台。本发明提出的多级树形结构,是我们在长期的实践中总结出来的一种适用性强、直观的程序结构,它具有一定的普适性。一旦程序整体结构确定下来,与之相适应的各个功能模块就可以明确地固定下来,因而可以形成一个标准化的开发平台。
7、任务的划分
为了确保系统的实时性,本发明把系统的任务划分为两类,即抢先式任务和普通任务。
8、抢先式任务
对于需要紧急处理的、实时性要求高的任务,如时间定时、外部通讯、脉冲计数、信号捕获等等,可以把它分配为抢先式任务。抢先式任务放在系统的中断程序中处理,其优先级由系统的中断优先级决定。这一部分处理程序与单片机硬件有关。
9、普通任务
普通任务则放在场景循环中按顺序调度运行。为了简化设计和节省系统资源,本发明规定普通任务需遵守以下三点:
其一,普通任务不分优先级,所有任务排成队列,按顺序逐一处理;
其二,普通任务一直运行到它们主动让出CPU为止,中间允许转去执行中断程序;
其三,每个子程序都是不可重入的,即系统在运行某个子程序的过程中,不允许强行再次运行该子程序。
采用这种顺序调度任务方式的好处是无需内存管理。系统在某一个时刻只能执行一个普通任务,因此无须同时为很多任务开辟内存缓冲区,减小系统堆栈,既节省内存又便于管理。
10、全局任务和局部任务
本发明把普通任务又分为全局任务和局部任务。全局任务在所有场景中都需要调用,而局部任务则是各个场景中所特有的任务,它们只在该场景中运行。这种细分任务的方法进一步体现了模块化设计的特点。
11、利用拆分技术和插入技术提高系统的实时能力
为了提高操作系统的实时能力和应变能力,本发明还提出了拆分技术和插入技术。
对于运行时间长、实时性要求不高的普通任务,可以拆分成两部分或两部分以上的任务,而每部分运行时间都较短。每次循环只运行其中的一部分,多次运行才能获得结果。例如,对键盘可以通过多次循环扫描的方法,监控按键释放动作出现后再进行处理。这样可以避免占用处理器长时间延时等待的问题。拆分技术可以减少循环总时间。
而对于实时性要求较高的普通任务,可以在循环中插入两次或两次以上的运行机会,使任务的实时性要求获得满足。插入技术使循环总时间增加。
12、满足系统的实时能力
对于实时性要求高的任务,利用系统的中断系统即可得到即时的处理。
普通任务的实时能力与一个循环的总时间有关。任务越多,循环总时间就越长,实时能力就越差。考虑到对于单片机系统来说,任务都比较简单,这种循环调度方式的实时能力完全可以满足应用要求。事实上,由于取消了内核程序,系统无需花费很多时间去运行内核程序,客观上使系统的实时能力提高了,这算是一种补偿。
13、任务网格化与构件化设计
本发明所提出的软件建模方法,实际上是把复杂的系统任务网格化。横向,在运行时间方向,分割为一个个场景;纵向,在运行空间方向,分割为抢先式任务、普通全局任务和普通局部任务。这样就把系统任务分解为一个个模块。
另一方面,系统的程序结构明确下来后,有关设备驱动程序、常用程序库等都可以随之确定。不仅每个场景、任务都可以用一个构件来描述,其它诸如设备驱动程序、异常处理程序、库程序等也可以用构件表示出来。
14、无核设计
传统的实时操作系统,如μC/OS、RTX51等,都提供了一个操作系统内核,由内核来负责任务调度、内存管理等工作,以确保系统实时运行。本发明所提出的软件建模方法,摈弃了提供内核的做法,把内核的一些功能转移到构件中来,由构件来协作完成。这种方法充分考虑了单片机及一些中低档嵌入式系统资源少、应用相对简单的特点,完全解决了操作系统挤占单片机资源的问题,同时又满足了系统的实时性要求。
15、场景的程序表达
所有的场景,都可以用同一个程序模板表达出来,参见图3。
图3是实现一个场景的模板流程图,从中我们可以看到场景的两个特征。首先是包含一个无限循环体,即一般需要较长时间的循环等待;其次,必须有按键操作。具体流程是这样的:
1)首先是场景的初始化,一般是更换显示画面;
2)进入无限循环体后,不断地判断是否有新键值。若有,进行按键操作处理;若检查到“返回键”,则退出子程序,返回父场景的循环体中。注意,在返回之前,需要调用父场景的初始化程序,这样才能与父场景实现无缝连接。对于主场景,“返回键”则没有作用;
3)循环体的中间部分是本场景的处理程序,即局部任务,如更新显示内容、计算、控制等,每一次循环都运行一次;
4)每个循环体都应该包含一个公共调用子程序ScanInLoop(),该子程序包含了所有需要及时处理的全局任务,例如读取按键值、读取时钟、信号采集、通讯处理等等,每一次循环都调用一次。
16、确定系统总体程序结构
按照本发明提供的方法,每个场景的运行都是一个循环,因此整个系统程序就形成一个多级树形循环嵌套结构,如图4所示:
1)程序开始后,首先是各种设备的初始化,如定时器初始化、IO口初始化、通讯口初始化、AD初始化、中断设置等等;
2)然后进入一个初始循环。该循环也是一个场景,如系统自检、显示公司标识等等。当然,初始场景并非是系统必需的;
3)最后进入主循环,它对应图2中的主场景。系统只有一个主场景循环。一般情况下,系统都是运行在主场景循环内。当需要设置参数,或者进行一些具体操作,才进入次级场景循环。当完成相应的操作后,系统最终又回归到主场景循环中运行;
4)次级循环是按照树形结构来组织的,每个次级循环对应一个次级场景。每一个次级场景只有一个父场景,而子场景则可以有多个,子场景退出运行后,必须回到它的父场景,这就意味着次级场景程序只有一个入口。
17、编写或调入构件库
编写或调入与上述软件建模结构相适应的设备驱动程序构件库、常用程序库等,并进行剪裁、配置,供各种任务调用。
每个构件都提供了很多的配置选项,通过配置可以适应不同的应用程序,非常方便移植。开发者通过剪裁和定制构件,可方便地配置出适合其特定需要的操作系统。另一方面,通过剪裁掉不必要的功能,可以降低系统的开销和负荷,提高系统的性能,这一点对于资源紧张的单片机及一些中低档嵌入式系统尤其重要。单片机种类繁多,各种开发环境五花八门,标准化构件可通过合理配置来适应各种系统。
18、编写中断任务程序
配置系统的中断系统,并在中断程序中编写抢先式实时任务程序。
19、编写全局任务的程序
组织、编写全局任务的程序,并形成一个子程序ScanInLoop(),该子程序包含了所有需要及时处理的全局任务。各个场景都需要循环不断地调用该子程序。
20、编写各局部实时任务的程序
每个场景都有自己特有的局部实时任务,它们都需要放在该场景的循环体中不断地循环调用。
21、实验验证
本发明所述操作系统的建模方法和编程技术,可大大提高开发效率,并实现标准化管理,而且方便移植。该操作系统技术已应用在工业、民用方面的几十项单片机、ARM应用项目上,并获得成功。实践表明,场景式多级树形结构系统可以适用多种应用系统,系统的实时能力完全能够满足实际要求,产品长时间运行稳定、可靠。
22、适用性
本发明所述操作系统的建模方法和编程技术,并无具体针对某一类计算机系统。因此本发明所述操作系统同样可适用于任何其它符合本发明所述操作系统要求的计算机系统。
Claims (6)
1.一种场景式无核嵌入式实时操作系统的实现方法,其特征在于,包括两部分及以下步骤:第一部分:软件建模方法
第一步,把应用系统按照运行进程分解成一串不同功能的场景,一个场景即是一个人机交互界面或是一个控制过程;
第二步,把所有场景按照多级树形结构组织起来;场景分为主场景和次级场景;
第三步,把应用系统的实时任务划分为两类,即抢先式任务和普通任务,普通任务又分为全局任务和局部任务;抢先式任务放在应用系统的中断程序中处理,其优先级由应用系统的中断优先级决定;普通任务放在场景的循环中按顺序调度运行;
第二部分:软件编程方法
第四步,每个场景用一个包含无限循环的子程序来描述;整个应用系统程序的结构就是一个多级树形的循环嵌套结构;
第五步,编写或调入与上述程序建模结构相适应的设备驱动程序库、常用程序库,并进行剪裁、配置,供各种任务调用;
第六步,配置应用系统的中断系统,并在中断程序中编写抢先式实时任务程序;
第七步,组织、编写全局任务的程序,并形成一个汇总调用子程序;各个场景都需要循环不断地调用该子程序;
第八步,编写各局部任务的程序;每个场景都有自己特有的局部任务,它们都需要放在该场景的循环体中不断地循环调用。
2.根据权利要求1所述的方法,其特征在于:所述的场景包含三个要素:显示、按键和生存周期。
3.根据权利要求1或2所述的方法,其特征在于:系统中有且只有一个主场景。
4.根据权利要求1或2所述的方法,其特征在于:次级场景只有一个入口,有多个出口。
5.根据权利要求1所述的方法,其特征在于:普通任务一直运行到它们主动让出CPU为止,中间允许转去执行中断程序。
6.根据权利要求1所述的方法,其特征在于:利用拆分技术和插入技术提高系统的实时能力。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210096612.6A CN102662670B (zh) | 2012-04-05 | 2012-04-05 | 一种场景式无核嵌入式实时操作系统的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210096612.6A CN102662670B (zh) | 2012-04-05 | 2012-04-05 | 一种场景式无核嵌入式实时操作系统的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102662670A CN102662670A (zh) | 2012-09-12 |
CN102662670B true CN102662670B (zh) | 2014-12-03 |
Family
ID=46772171
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210096612.6A Active CN102662670B (zh) | 2012-04-05 | 2012-04-05 | 一种场景式无核嵌入式实时操作系统的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102662670B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102491B (zh) * | 2014-07-28 | 2017-07-14 | 深圳航天工业技术研究院有限公司 | 单片机实时任务与耗时任务并行执行的实现方法和系统 |
CN104318165A (zh) * | 2014-11-05 | 2015-01-28 | 何宗彬 | 一种可裁剪的安全实时嵌入式操作系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
CN1737755A (zh) * | 2005-06-13 | 2006-02-22 | 浙江大学 | 一种嵌入式实时操作系统的建模和代码生成方法 |
EP1669858A2 (en) * | 2004-02-20 | 2006-06-14 | Microsoft Corporation | Method and system for providing a common operating system |
-
2012
- 2012-04-05 CN CN201210096612.6A patent/CN102662670B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
EP1669858A2 (en) * | 2004-02-20 | 2006-06-14 | Microsoft Corporation | Method and system for providing a common operating system |
CN1737755A (zh) * | 2005-06-13 | 2006-02-22 | 浙江大学 | 一种嵌入式实时操作系统的建模和代码生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102662670A (zh) | 2012-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101814024B (zh) | 一种跨平台3d界面设计系统和方法 | |
CN105677446A (zh) | 分布式仿真平台的可视化建模方法 | |
GB2425628A (en) | Programming distributed system using data flow diagrams | |
CN104750603A (zh) | 一种多核dsp软件仿真器及其物理层软件测试方法 | |
CN102736595A (zh) | 一种基于32位微处理器和rtos的智能配电终端统一平台 | |
CN116822135A (zh) | 实时仿真平台系统及仿真系统构建方法 | |
CN103455647A (zh) | 一种反射式面向对象仿真引擎 | |
CN102662670B (zh) | 一种场景式无核嵌入式实时操作系统的实现方法 | |
Hassar et al. | RTK-Spec TRON: a simulation model of an ITRON based RTOS kernel in SystemC | |
He et al. | Fecaffe: Fpga-enabled caffe with opencl for deep learning training and inference on intel stratix 10 | |
CN102231132B (zh) | 一种基于SystemC的AADL软构件模型仿真测试实例生成方法 | |
Lee et al. | A hardware-software co-simulation environment | |
Yu et al. | eCD++: an engine for executing DEVS models in embedded platforms. | |
Yoong et al. | Efficient implementation of IEC 61499 function blocks | |
Spaanenburg et al. | Cloud connectivity and embedded sensory systems | |
CN106897120B (zh) | 双层动态分布式仿真平台 | |
Sarjoughian et al. | Interacting real-time simulation models and reactive computational-physical systems | |
Faucou et al. | An ADL centric approach for the formal design of real-time systems | |
Magureanu et al. | Generating OMNeT++ specifications from UML models for PSoC distributed applications | |
Krämer et al. | Implementing Wireless Sensor Network applications using hierarchical finite state machines | |
Lantreibecq et al. | Model checking and co-simulation of a dynamic task dispatcher circuit using CADP | |
CN111090430A (zh) | 一种嵌入式系统下的应用软件开发系统 | |
Lantreibecq et al. | Formal analysis of a hardware dynamic task dispatcher with CADP | |
Qiu et al. | Research on Real-Time Software Development Approach. | |
Hosseinabady et al. | Effective modelling of large NoCs using SystemC |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20190930 Address after: B1366, b1-f5, Lantian technology complex building, No. 32, Zhongguancun Street, Haidian District, Beijing 100044 Patentee after: Beijing Guanglun Electronic Technology Co., Ltd. Address before: 100085 Beijing city Haidian District xi'erqi Ming Ke Yuan floor 1006 room 13 Patentee before: Lin Tian Xiao |