CN103984537A - 一种sparc平台减少中断响应抖动的技术 - Google Patents

一种sparc平台减少中断响应抖动的技术 Download PDF

Info

Publication number
CN103984537A
CN103984537A CN201410060974.9A CN201410060974A CN103984537A CN 103984537 A CN103984537 A CN 103984537A CN 201410060974 A CN201410060974 A CN 201410060974A CN 103984537 A CN103984537 A CN 103984537A
Authority
CN
China
Prior art keywords
queue
value
interrupt response
pointer
variable
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
CN201410060974.9A
Other languages
English (en)
Other versions
CN103984537B (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.)
Beijing Shenzhou Aerospace Software Technology Co.,Ltd.
Original Assignee
BEIJING SHENZHOU AEROSPACE SOFTWARE 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 BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd filed Critical BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co Ltd
Priority to CN201410060974.9A priority Critical patent/CN103984537B/zh
Publication of CN103984537A publication Critical patent/CN103984537A/zh
Application granted granted Critical
Publication of CN103984537B publication Critical patent/CN103984537B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种SPARC平台减少中断响应抖动的技术,步骤如下:1)建立SPARC平台原子交换函数;2)实现内核路径上写全局变量访问操作的中断响应抖动减少技术;3)全局队列访问操作的中断响应抖动减少技术;4)全局堆栈访问操作的中断响应抖动减少技术。本发明可以保证对全局变量以及全局队列、全局堆栈等数据结构的读写访问的一致性,而且所有临界区都由7条SPARC平台的汇编指令组成,关中断的时间短且固定,能减少中断响应的抖动,并提高平均中断响应时间,减少外部中断的丢失。

Description

一种SPARC平台减少中断响应抖动的技术
技术领域
本发明属于嵌入式实时操作系统领域,具体地说,涉及一种SPARC平台减少中断响应抖动的技术。 
背景技术
SPARC是一种开源的RISC处理器架构技术,在国内广泛的应用在航天领域。同时,随着航天任务的复杂化,嵌入式实时操作系统在航天领域的应用也越来越广泛。在嵌入式实时操作系统运行过程中,有两条最重要且执行最频繁的内核路径:任务切换路径和中断处理路径。在这两条路径上有大量对全局变量及全局数据结构进行读写的操作,为保证全局数据的一致性,现有的嵌入式实时操作系统通常采用关中断的方法确保多个任务对共享资源的互斥访问。 
现有技术存在的主要问题: 
1、采用关中断方法保护的临界区,通常是由C语言实现的对全局变量及全局数据结构进行读写的操作,这些代码长短不一(如使用GCC3.4.4不做优化,对代码进行编译,对全局变量进行写的临界区有10条汇编指令,队列插入操作的临界区有31条汇编指令,队列删除操作的临界区有25条汇编指令),导致不同临界区执行时间不同。另外临界区的代码强烈依赖编译器,不同编译器或同一编译器的不同配置,都有可能导致临界区代码执行时间的变化(如使用GCC3.4.4–O2级优化对代码进行编译,对全局变量进行写的临界区有6条汇编指令,队列插入操作的临界区有15条汇编指令,队列删除操作的临界区有17条汇编指令)。临界区代码的长度不同,对中断响应的延迟也就不同,这会造成中断响应的延迟在不同的区间抖动,最终导致由中断触发的周期任务调度的抖动,这 对实时性要求高的应用(如运动控制)的稳定性、可靠性都会造成负面影响。 
2、另外如果关中断的时间过长,会造成系统对外部事件反应迟钝,对多数实时系统而言,这会影响系统的中断响应时间,使得系统的实时性得不到保证;另外频繁的关中断可能变更整个系统的时序,带来的副作用包括丢失外部事件和时钟漂移。 
发明内容
本发明要解决的技术问题是克服上述缺陷,提供一种保证对全局变量以及全局队列、全局堆栈等数据结构的读写访问的一致性,而且所有临界区都由7条SPARC平台的汇编指令组成,关中断的时间短且固定,能减少中断响应的抖动,并提高平均中断响应时间,减少外部中断的丢失的SPARC平台减少中断响应抖动的技术。 
为解决上述问题,本发明所采用的技术方案是: 
一种SPARC平台减少中断响应抖动的技术,步骤如下:1)、建立SPARC平台原子交换函数;2)、实现内核路径上写全局变量访问操作的中断响应抖动减少技术;3)、全局队列访问操作的中断响应抖动减少技术;4)、全局堆栈访问操作的中断响应抖动减少技术。 
作为一种改进,所述建立SPARC平台原子交换函数的算法如下: 
使用SPARC汇编指令实现了原子交换函数,该函数共由7条指令组成,其原型如下: 
int atomic_swap(int oldval,int*p_var,int newval) 
返回值为int型,变量oldval存储某一全局变量修改前的值,指针p_var指向该全局变量,而变量newval存储将赋给该全局变量的值,返回0值表示用 新值对全局变量原先的值进行了替换,返回非0值,表示未用新值对全局变量原先的值进行替换;所述原子交换函数的算法如下: 
1)、快速关中断; 
2)、将oldval和p_var指向的地址处的值相减,将结果填入存放返回值的寄存器,如果为0,则继续执行第3步,如果不为0,则跳转到第4步; 
3)、将newval的值赋给p_var指向的地址; 
4)、打开中断,函数返回。 
作为一种改进,所述实现内核路径上写全局变量访问操作的中断响应抖动减少技术的函数原型如下: 
void write_global(int*pglb,int new) 
其中变量pglb指向要进行写操作的全局变量的地址,变量new指向将要写入全局变量的值;所述实现内核路径上写全局变量访问操作的中断响应抖动减少技术算法如下: 
1)、取出指针pglb指向的全局变量的值,赋给临时变量temp; 
2)、调用原子交换函数,格式为atomic_swap(temp,pglb,new); 
3)、如果原子交换函数返回值不为0,则调转到第1步;如果返回值为0,则函数退出。 
作为一种改进,所述全局队列访问操作的中断响应抖动减少技术首先是插入节点操作,其函数原型如下: 
void insert_queue(Node*pnew_node,const int&data,Queue*pqueue) 
队列是先进先出的数据结构,插入操作总是在队列尾进行,所以第一个参数给出了将插入节点的指针,第二个参数给出了新节点中存储的数据,第三个参数是队列指针; 
所述全局队列访问操作的中断响应抖动减少技术算法如下: 
1)、将新节点数据域赋值为data,指针域赋值为null; 
2)、将当前队尾节点赋值给临时变量old_tail,并将old_tail指针域指向新创建的节点; 
3)、调用原子交换函数,格式为atomic_swap(old_tail,&(pqueue->tail),pnew_node); 
4)、如果原子交换函数返回值不为0,则跳转到第2步;如果返回值为0,则函数退出。 
队列的删除操作在队列头进行,其函数原型如下: 
Node*delete_queue(Queue*pqueue) 
其中变量pqueue为指向队列的指针; 
其队列的删除操作算法如下: 
1)、取出当前队列的头指针,赋值给临时变量old_head; 
2)、将old_head的指针域赋给临时变量pnext; 
3)、调用原子交换函数,格式为atomic_swap(old_head,&(pqueue->head),pnext); 
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_head,函数退出。 
作为一种改进,所述全局堆栈访问操作的中断响应抖动减少技术,其原型为: 
void push(Node*pnode,const int&data,stack*pstack) 
第一个参数是指向将插入的节点的指针,第二个参数data为待压入节点数据域存储的数据,第三个参数为指向栈的指针; 
所述全局堆栈访问操作的中断响应抖动减少技术的算法如下: 
1)、将pnode数据域赋值为data; 
2)、用临时变量old_top记录当前栈顶节点的指针; 
3)、pnode的指针域指向old_top; 
4)、调用原子交换函数,其格式为atomic_swap(old_top,&(pstack->top),pnode); 
5)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则函数退出; 
出栈操作的原型如下: 
Node*pop(stack*pstack) 
唯一的一个参数为指向栈的指针,出栈操作的算法如下: 
1)、用临时变量old_top记录当前栈顶指针; 
2)、将old_top的指针域赋值给临时变量pnode; 
3)、调用原子交换函数,其格式为atomic_swap(old_top,pstack->top,pnode); 
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_top,函数退出。 
由于采用了上述技术方案,与现有技术相比,本发明可以保证对全局变量以及全局队列、全局堆栈等数据结构的读写访问的一致性,而且所有临界区都由7条SPARC平台的汇编指令组成,关中断的时间短且固定,能减少中断响应的抖动,并提高平均中断响应时间,减少外部中断的丢失。另外,由于临界区是由汇编指令组成,可以排除编译器导致的临界区执行时间的变化。 
附图说明
图1为本发明一种实施例的中断响应抖动效果图; 
图2为本发明一种实施例的原子交换函数算法流程图; 
图3为本发明一种实施例的全局变量写操作算法流程图; 
图4为本发明一种实施例的队列访问操作算法流程图; 
图5为本发明一种实施例的队列删除操作算法流程图; 
图6为本发明一种实施例的压栈操作算法流程图; 
图7为本发明一种实施例的压栈操作算法流程图。 
具体实施方式
实施例: 
如图1所示,一种SPARC平台减少中断响应抖动的技术,步骤如下:1)、建立SPARC平台原子交换函数;2)、实现内核路径上写全局变量访问操作的中断响应抖动减少技术;3)、全局队列访问操作的中断响应抖动减少技术;4)、全局堆栈访问操作的中断响应抖动减少技术。 
在本实施例中,所述建立SPARC平台原子交换函数的算法如下: 
使用SPARC汇编指令实现了原子交换函数,该函数共由7条指令组成,其原型如下: 
int atomic_swap(int oldval,int*p_var,int newval) 
返回值为int型,变量oldval存储某一全局变量修改前的值,指针p_var指向该全局变量,而变量newval存储将赋给该全局变量的值,返回0值表示用新值对全局变量原先的值进行了替换,返回非0值,表示未用新值对全局变量原先的值进行替换。 
如图2所示,所述原子交换函数的算法如下: 
1)、快速关中断; 
2)、将oldval和p_var指向的地址处的值相减,将结果填入存放返回值的 寄存器,如果为0,则继续执行第3步,如果不为0,则跳转到第4步; 
3)、将newval的值赋给p_var指向的地址; 
4)、打开中断,函数返回。 
在本实施例中,所述实现内核路径上写全局变量访问操作的中断响应抖动减少技术的函数原型如下: 
void write_global(int*pglb,int new) 
其中变量pglb指向要进行写操作的全局变量的地址,变量new指向将要写入全局变量的值。 
如图3所示,实现内核路径上写全局变量访问操作的中断响应抖动减少技术算法如下: 
1)、取出指针pglb指向的全局变量的值,赋给临时变量temp; 
2)、调用原子交换函数,格式为atomic_swap(temp,pglb,new); 
3)、如果原子交换函数返回值不为0,则调转到第1步;如果返回值为0,则函数退出。 
在本实施例中,所述全局队列访问操作的中断响应抖动减少技术首先是插入节点操作,其函数原型如下: 
void insert_queue(Node*pnew_node,const int&data,Queue*pqueue) 
队列是先进先出的数据结构,插入操作总是在队列尾进行,所以第一个参数给出了将插入节点的指针,第二个参数给出了新节点中存储的数据,第三个参数是队列指针; 
如图4所示,所述全局队列访问操作的中断响应抖动减少技术算法如下: 
1)、将新节点数据域赋值为data,指针域赋值为null; 
2)、将当前队尾节点赋值给临时变量old_tail,并将old_tail指针域指向 新创建的节点; 
3)、调用原子交换函数,格式为atomic_swap(old_tail,&(pqueue->tail),pnew_node); 
4)、如果原子交换函数返回值不为0,则跳转到第2步;如果返回值为0,则函数退出。 
队列的删除操作在队列头进行,其函数原型如下: 
Node*delete_queue(Queue*pqueue) 
其中变量pqueue为指向队列的指针; 
如图5所示,其队列的删除操作算法如下: 
1)、取出当前队列的头指针,赋值给临时变量old_head; 
2)、将old_head的指针域赋给临时变量pnext; 
3)、调用原子交换函数,格式为atomic_swap(old_head,&(pqueue->head),pnext); 
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_head,函数退出。 
在本实施例中,所述全局堆栈访问操作的中断响应抖动减少技术,其原型为: 
void push(Node*pnode,const int&data,stack*pstack) 
第一个参数是指向将插入的节点的指针,第二个参数data为待压入节点数据域存储的数据,第三个参数为指向栈的指针; 
如图6所示,所述全局堆栈访问操作的中断响应抖动减少技术的算法如下: 
1)、将pnode数据域赋值为data; 
2)、用临时变量old_top记录当前栈顶节点的指针; 
3)、pnode的指针域指向old_top; 
4)、调用原子交换函数,其格式为atomic_swap(old_top,&(pstack->top),pnode); 
5)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则函数退出; 
出栈操作的原型如下: 
Node*pop(stack*pstack) 
唯一的一个参数为指向栈的指针,如图7所示,出栈操作的算法如下: 
1)、用临时变量old_top记录当前栈顶指针; 
2)、将old_top的指针域赋值给临时变量pnode; 
3)、调用原子交换函数,其格式为atomic_swap(old_top,pstack->top,pnode); 
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_top,函数退出。 
本发明可以保证对全局变量以及全局队列、全局堆栈等数据结构的读写访问的一致性,而且所有临界区都由7条SPARC平台的汇编指令组成,关中断的时间短且固定,能减少中断响应的抖动,并提高平均中断响应时间,减少外部中断的丢失。另外,由于临界区是由汇编指令组成,可以排除编译器导致的临界区执行时间的变化。 
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。 

Claims (5)

1.一种SPARC平台减少中断响应抖动的技术,其特征在于:
步骤如下:
1)、建立SPARC平台原子交换函数;
2)、实现内核路径上写全局变量访问操作的中断响应抖动减少技术;
3)、全局队列访问操作的中断响应抖动减少技术;
4)、全局堆栈访问操作的中断响应抖动减少技术。
2.根据权利要求1中所述的SPARC平台减少中断响应抖动的技术,其特征在于:所述建立SPARC平台原子交换函数的算法如下:
使用SPARC汇编指令实现了原子交换函数,该函数共由7条指令组成,其原型如下:
int atomic_swap(int oldval,int*p_var,int newval)
返回值为int型,变量oldval存储某一全局变量修改前的值,指针p_var指向该全局变量,而变量newval存储将赋给该全局变量的值,返回0值表示用新值对全局变量原先的值进行了替换,返回非0值,表示未用新值对全局变量原先的值进行替换;所述原子交换函数的算法如下:
1)、快速关中断;
2)、将oldval和p_var指向的地址处的值相减,将结果填入存放返回值的寄存器,如果为0,则继续执行第3步,如果不为0,则跳转到第4步;
3)、将newval的值赋给p_var指向的地址;
4)、打开中断,函数返回。
3.根据权利要求1中所述的SPARC平台减少中断响应抖动的技术,其特征在于:所述实现内核路径上写全局变量访问操作的中断响应抖动减少技术的函数原型如下:
void write_global(int*pglb,int new)
其中变量pglb指向要进行写操作的全局变量的地址,变量new指向将要写入全局变量的值;所述实现内核路径上写全局变量访问操作的中断响应抖动减少技术算法如下:
1)、取出指针pglb指向的全局变量的值,赋给临时变量temp;
2)、调用原子交换函数,格式为atomic_swap(temp,pglb,new);
3)、如果原子交换函数返回值不为0,则调转到第1步;如果返回值为0,则函数退出。
4.根据权利要求3中所述的SPARC平台减少中断响应抖动的技术,其特征在于:所述全局队列访问操作的中断响应抖动减少技术首先是插入节点操作,其函数原型如下:
void insert_queue(Node*pnew_node,const int&data,Queue*pqueue)
队列是先进先出的数据结构,插入操作总是在队列尾进行,所以第一个参数给出了将插入节点的指针,第二个参数给出了新节点中存储的数据,第三个参数是队列指针;
所述全局队列访问操作的中断响应抖动减少技术算法如下:
1)、将新节点数据域赋值为data,指针域赋值为null;
2)、将当前队尾节点赋值给临时变量old_tail,并将old_tail指针域指向新创建的节点;
3)、调用原子交换函数,格式为atomic_swap(old_tail,&(pqueue->tail),pnew_node);
4)、如果原子交换函数返回值不为0,则跳转到第2步;如果返回值为0,则函数退出。
队列的删除操作在队列头进行,其函数原型如下:
Node*delete_queue(Queue*pqueue)
其中变量pqueue为指向队列的指针;
其队列的删除操作算法如下:
1)、取出当前队列的头指针,赋值给临时变量old_head;
2)、将old_head的指针域赋给临时变量pnext;
3)、调用原子交换函数,格式为atomic_swap(old_head,&(pqueue->head),pnext);
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_head,函数退出。
5.根据权利要求4中所述的SPARC平台减少中断响应抖动的技术,其特征在于:所述全局堆栈访问操作的中断响应抖动减少技术,其原型为:
void push(Node*pnode,const int&data,stack*pstack)
第一个参数是指向将插入的节点的指针,第二个参数data为待压入节点数据域存储的数据,第三个参数为指向栈的指针;
所述全局堆栈访问操作的中断响应抖动减少技术的算法如下:
1)、将pnode数据域赋值为data;
2)、用临时变量old_top记录当前栈顶节点的指针;
3)、pnode的指针域指向old_top;
4)、调用原子交换函数,其格式为atomic_swap(old_top,&(pstack->top),pnode);
5)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则函数退出;
出栈操作的原型如下:
Node*pop(stack*pstack)
唯一的一个参数为指向栈的指针,出栈操作的算法如下:
1)、用临时变量old_top记录当前栈顶指针;
2)、将old_top的指针域赋值给临时变量pnode;
3)、调用原子交换函数,其格式为atomic_swap(old_top,pstack->top,pnode);
4)、如果原子交换函数返回值不为0,则跳转到第1步;如果返回值为0,则返回old_top,函数退出。
CN201410060974.9A 2014-02-21 2014-02-21 一种sparc平台减少中断响应抖动的方法 Active CN103984537B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410060974.9A CN103984537B (zh) 2014-02-21 2014-02-21 一种sparc平台减少中断响应抖动的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410060974.9A CN103984537B (zh) 2014-02-21 2014-02-21 一种sparc平台减少中断响应抖动的方法

Publications (2)

Publication Number Publication Date
CN103984537A true CN103984537A (zh) 2014-08-13
CN103984537B CN103984537B (zh) 2017-04-19

Family

ID=51276531

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410060974.9A Active CN103984537B (zh) 2014-02-21 2014-02-21 一种sparc平台减少中断响应抖动的方法

Country Status (1)

Country Link
CN (1) CN103984537B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920217A (zh) * 2018-03-30 2018-11-30 惠州市德赛西威汽车电子股份有限公司 一种减少不可重入函数的重构方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003466A (en) * 1987-02-06 1991-03-26 At&T Bell Laboratories Multiprocessing method and arrangement
CN101349975A (zh) * 2008-07-29 2009-01-21 北京中星微电子有限公司 实现中断底半部机制的方法及嵌入式系统
CN102609258A (zh) * 2012-02-02 2012-07-25 武汉光庭科技有限公司 一种对旋转编码器识别的改进方法
CN103377081A (zh) * 2012-04-27 2013-10-30 沈阳高精数控技术有限公司 嵌入式数控系统双核芯片和外设间中断机制的实现方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5003466A (en) * 1987-02-06 1991-03-26 At&T Bell Laboratories Multiprocessing method and arrangement
CN101349975A (zh) * 2008-07-29 2009-01-21 北京中星微电子有限公司 实现中断底半部机制的方法及嵌入式系统
CN102609258A (zh) * 2012-02-02 2012-07-25 武汉光庭科技有限公司 一种对旋转编码器识别的改进方法
CN103377081A (zh) * 2012-04-27 2013-10-30 沈阳高精数控技术有限公司 嵌入式数控系统双核芯片和外设间中断机制的实现方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108920217A (zh) * 2018-03-30 2018-11-30 惠州市德赛西威汽车电子股份有限公司 一种减少不可重入函数的重构方法

Also Published As

Publication number Publication date
CN103984537B (zh) 2017-04-19

Similar Documents

Publication Publication Date Title
US10318450B2 (en) Efficient context based input/output (I/O) classification
CN110059020B (zh) 扩展内存的访问方法、设备以及系统
CN105224370B (zh) 一种加载elf文件的方法和装置
CN110325969A (zh) 多阶段垃圾收集器
CN103678536A (zh) 一种实现页面返回操作的方法及装置
US20110154299A1 (en) Apparatus and method for executing instrumentation code
CN110781016B (zh) 一种数据处理方法、装置、设备及介质
CN103440205A (zh) 一种机顶盒数据存储方法及装置
CN104517044A (zh) 一种防止二进制文件被反编译的方法和装置
CN105653474A (zh) 一种面向粗粒度动态可重构处理器的配置缓存控制器
CN110291508A (zh) 垃圾收集器
CN103092760B (zh) 一种软件修正性在轨维护优化方法
CN103927215A (zh) 基于内存盘与SSD硬盘的kvm虚拟机调度的优化方法及系统
CN103778067A (zh) Java卡的对象处理方法、装置和Java卡
CN103984537A (zh) 一种sparc平台减少中断响应抖动的技术
CN104361009A (zh) 一种基于倒排索引的实时索引方法
CN103838616A (zh) 基于树型程序分支的计算机程序即时编译方法
CN103064654A (zh) 集成电路、电子系统及提供otp内存配置可更新的方法
US20100281082A1 (en) Subordinate Multiobjects
CN104090804A (zh) 一种实时dsp嵌入式系统虚拟内存扩容方法
CN108874491A (zh) 信息加载的方法及装置
US10929121B2 (en) Method, device and related system for dynamically repairing application
CN105843659A (zh) 一种嵌入式c编译器的实现方法及系统
US9262186B2 (en) Code rearranger and method for rearranging code for a virtual machine
JP2008282105A (ja) マイクロプロセッサおよびレジスタ退避方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder
CP01 Change in the name or title of a patent holder

Address after: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee after: Beijing Shenzhou Aerospace Software Technology Co.,Ltd.

Address before: 100094 No. 28, Yongfeng Road, Beijing, Haidian District

Patentee before: BEIJING SHENZHOU AEROSPACE SOFTWARE TECHNOLOGY Co.,Ltd.