一种星上计算机延时指令存储及执行方法
【专利摘要】本发明公开了一种星上计算机延时指令存储及执行方法,(1)本发明通过进一步开发数组的数据结构来实现,在数组的数据结构的基础上增加本数据元素编号,前数据元素编号,后数据元素编号,以及指令数据。通过改变数据元素中前数据元素编号和后数据元素编号的值,完成数据元素的插入删除操作。(2)本发明在确保星载软件的可靠性和安全性,不使用动态分配内存操作的基础上,对传统的星载延时指令集管理方法进一步改进,设计了一个指令链表结构,在延时指令执行和插入删除操作时无需移动后续延时指令,提高了软件执行效率,延时指令执行时间也很稳定。
【专利说明】一种星上计算机延时指令存储及执行方法
【技术领域】
[0001]本发明涉及一种星上计算机延时指令存储及执行方法,尤其涉及在关键安全嵌入式软件中,在不使用动态申请内存的条件下,实现一种快速插入删除的星载延时指令存储及执行方法,属于嵌入式软件【技术领域】。
【背景技术】
[0002]嫦娥三号应用软件包含延时指令,延时指令带有执行时间标签,有如下管理要求:
1.应用软件收到一条新的延时指令时,应根据所有延时指令时间码从小到大重新排列,并按顺序存储;2.应用软件收到一条删除延时指令的指令时,应比较延时指令的时间码和指令数据是否与存放的延时指令数组内的指令内容一致,一致则删除该条指令,并将其他延时指令时间码从小到大重新排列,按顺序存储;3.应用软件应每秒检查第一条指令时间,如果指令时间到达则执行指令,并删除该条延时指令;如果指令时间超时,则直接删除该条延时指令;如果指令时间未到达,则不执行操作。
[0003]传统的星载延时指令集存储及执行方法(基于数组的数据结构)具有如下缺点:延时指令插入、删除操作效率低,找到插入、删除位置后,需要将后面的延时指令逐条后移。假定每条延时指令包含长度为L的指令数据,当延时指令条数为N,当N和L较大时,会移动大量数据,软件执行效率低。延时指令集管理时间不确定且相差很大,在延时指令执行和插入删除操作时,其移动的数据量与后续的指令条数相关,软件执行时间不确定且最大最小执行时间相差很大。综上,传统的星载延时指令集管理方法软件执行效率低,执行时间不确定且相差很大。
【发明内容】
[0004]本发明解决的技术问题是:克服现有技术的不足,提供一种星上计算机延时指令存储及执行方法,该方法。
[0005]本发明的技术解决方案是:一种星上计算机延时指令存储及执行方法,步骤如下:
[0006](I)首先设计星载延时指令结构,该星载延时指令结构包括星载延时指令数据及对应的星载延时指令编号、前一个星载延时指令编号和后一个星载延时指令编号;
[0007](2)定义一个固定长度的星载延时指令结构数组用于存储星载延时指令,并利用指令结构指针索引第一条星载延时指令,第二条星载延时指令通过第一条星载延时指令结构中的后一个星载延时指令编号进行索引,第三条星载延时指令通过第二条星载延时指令结构中的后一个星载延时指令编号进行索引,其余依次类推,该星载延时指令结构数组存储在星上计算机中;其中指令结构数组中的每个元素采用步骤(I)设计的星载延时指令结构来表示;
[0008](3)星上计算机根据地面发送的控制指令进行相应操作,当星上计算机接收到插入星载延时指令时,执行步骤(4);当星上计算机接收到删除星载延时指令时,执行步骤(5);当星上计算机存储的星载延时指令的执行时间到达时,执行步骤(6);
[0009](4)星上计算机接收新的星载延时指令New,新的星载延时指令New需要插入已存储星载延时指令N-1和N之间,星上计算机将新的星载延时指令New的前一个星载延时指令编号赋值为星载延时指令指令N-1的指令编号,下一个星载延时指令编号赋值为星载延时指令N的指令编号,星载延时指令N-1的下一星载延时指令编号赋值为新的星载延时指令New的指令编号,星载延时指令N的前一个星载延时指令编号赋值为新的星载延时指令New的指令编号;
[0010](5)星上计算机接收删除星载延时指令,删除星载延时指令为删除已存储的星载延时指令N,星上计算机将星载延时指令N-1的下一个星载延时指令编号赋值为星载延时指令N+1的指令编号,星载延时指令N+1的前一个星载延时指令编号赋值为星载延时指令N-1的指令编号;星载延时指令N的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号;
[0011](6)星上计算机将指令结构指针指向第二条星载延时指令,第二条星载延时指令的前一个星载延时指令编号赋值为最后一条星载延时指令的指令编号;最后一条星载延时指令的后一个星载延时指令编号赋值第二条星载延时指令的指令编号,第一条星载延时指令的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号;
[0012](7)星上计算机按照步骤(3)-(6)进行执行,直至星上计算机关机。
[0013]本发明与现有技术相比的优点在于:
[0014](I)该方法通过进一步开发数组的数据结构来实现,在数组的数据结构的基础上增加本数据元素编号,前数据元素编号,后数据元素编号,以及指令数据。通过改变数据元素中前数据元素编号和后数据元素编号的值,完成数据元素的插入删除操作。
[0015](2)本方法在确保星载软件的可靠性和安全性,不使用动态分配内存操作的基础上,对传统的星载延时指令集管理方法进一步改进,设计了一个指令链表结构,在延时指令执行和插入删除操作时无需移动后续延时指令,提高了软件执行效率,延时指令执行时间也很稳定。
[0016]该方法已在嫦娥三号应用软件延时指令管理中得到应用,解决了延时指令管理中删除,插入及执行操作复杂的问题。在满足可靠性和安全性的同时,提高了软件的运行效率。
【专利附图】
【附图说明】
[0017]图1为星载延时指令结构组成示意图;
[0018]图2为星载延时指令链表结构示意图;
[0019]图3为插入星载延时指令示意图;
[0020]图4为删除星载延时指令示意图。
【具体实施方式】
[0021]下面结合附图和具体实施例对本发明做进一步详细的描述:
[0022](I)首先设计星载延时指令结构,该星载延时指令结构包括星载延时指令数据及对应的星载延时指令编号、前一个星载延时指令编号和后一个星载延时指令编号,如图1所示;
[0023](2)定义一个固定长度的星载延时指令结构数组用于存储星载延时指令,并利用指令结构指针索引第一条星载延时指令,第二条星载延时指令通过第一条星载延时指令结构中的后一个星载延时指令编号进行索引,第三条星载延时指令通过第二条星载延时指令结构中的后一个星载延时指令编号进行索引,其余依次类推,该星载延时指令结构数组存储在星上计算机中;其中指令结构数组中的每个元素采用步骤(I)设计的星载延时指令结构来表示;
[0024]如图2所示,预先定义一个固定长度的上述数据元素的数组,并使用数据元素指针Ip来索引该数组的第一个元素。其他数据元素通过与第一个数据元素的关系来表示其可变序号,逐一往后递增。例如相对与数据元素I的后一数据元素的后一数据元素,其可变序号为3。每个数据元素包含本数据元素固有编号,前数据元素编号,后数据元素编号,以及指令数据。
[0025](3)星上计算机根据地面发送的控制指令进行相应操作,当星上计算机接收到插入星载延时指令时,执行步骤(4);当星上计算机接收到删除星载延时指令时,执行步骤
(5);当星上计算机存储的星载延时指令的执行时间到达时,执行步骤(6);
[0026](4)上计算机接收新的星载延时指令New,新的星载延时指令New需要插入已存储星载延时指令N-1和N之间,星上计算机将新的星载延时指令New的前一个星载延时指令编号赋值为星载延时指令指令N-1的指令编号,下一个星载延时指令编号赋值为星载延时指令N的指令编号,星载延时指令N-1的下一星载延时指令编号赋值为新的星载延时指令New的指令编号,星载延时指令N的前一个星载延时指令编号赋值为新的星载延时指令New的指令编号;
[0027]如图3所示,星当新的指令New需要插入指令2和3之间时,将指令New的前一数据元素赋值为指令2的数据元素编号,指令New的下一数据元素赋值为数据元素3的数据元素编号,数据元素2的下一数据元素赋值为数据元素New的数据元素编号,数据元素3的前一数据元素赋值为数据元素New的数据元素编号。
[0028](5)星上计算机接收删除星载延时指令,删除星载延时指令为删除已存储的星载延时指令N,星上计算机将星载延时指令N-1的下一个星载延时指令编号赋值为星载延时指令N+1的指令编号,星载延时指令N+1的前一个星载延时指令编号赋值为星载延时指令N-1的指令编号;星载延时指令N的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号;
[0029]如图4所示,当需要删除数据元素2时,将数据元素I的下一数据元素赋值为数据元素3的数据元素编号,数据元素3的前一数据元素赋值为数据元素I的数据元素编号,数据元素2的下一数据元素和前一数据元素均赋值为无效编号。
[0030](6)星上计算机将指令结构指针指向第二条星载延时指令,第二条星载延时指令的前一个星载延时指令编号赋值为最后一条星载延时指令的指令编号;最后一条星载延时指令的后一个星载延时指令编号赋值第二条星载延时指令的指令编号,第一条星载延时指令的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号;
[0031](7)星上计算机按照步骤(3)-(6)进行执行,直至星上计算机关机。
[0032]当有数据元素插入和删除时,只需要给几个变量赋值,无需重新移动指令数据,提高了软件的运行效率。
[0033]本发明说明书中未作详细描述的内容属于本领域专业技术人员的公知技术。
【权利要求】
1.一种星上计算机延时指令存储及执行方法,其特征在于步骤如下: (1)首先设计星载延时指令结构,该星载延时指令结构包括星载延时指令数据及对应的星载延时指令编号、前一个星载延时指令编号和后一个星载延时指令编号; (2)定义一个固定长度的星载延时指令结构数组用于存储星载延时指令,并利用指令结构指针索引第一条星载延时指令,第二条星载延时指令通过第一条星载延时指令结构中的后一个星载延时指令编号进行索引,第三条星载延时指令通过第二条星载延时指令结构中的后一个星载延时指令编号进行索引,其余依次类推,该星载延时指令结构数组存储在星上计算机中;其中指令结构数组中的每个元素采用步骤(I)设计的星载延时指令结构来表不; (3)星上计算机根据地面发送的控制指令进行相应操作,当星上计算机接收到插入星载延时指令时,执行步骤(4);当星上计算机接收到删除星载延时指令时,执行步骤(5);当星上计算机存储的星载延时指令的执行时间到达时,执行步骤(6); (4)星上计算机接收新的星载延时指令New,新的星载延时指令New需要插入已存储星载延时指令N-1和N之间,星上计算机将新的星载延时指令New的前一个星载延时指令编号赋值为星载延时指令指令N-1的指令编号,下一个星载延时指令编号赋值为星载延时指令N的指令编号,星载延时指令N-1的下一星载延时指令编号赋值为新的星载延时指令New的指令编号,星载延时指令N的前一个星载延时指令编号赋值为新的星载延时指令New的指令编号; (5)星上计算机接收删除星载延时指令,删除星载延时指令为删除已存储的星载延时指令N,星上计算机将星载延时指令N-1的下一个星载延时指令编号赋值为星载延时指令N+1的指令编号,星载延时指令N+1的前一个星载延时指令编号赋值为星载延时指令N-1的指令编号;星载延时指令N的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号; (6)星上计算机将指令结构指针指向第二条星载延时指令,第二条星载延时指令的前一个星载延时指令编号赋值为最后一条星载延时指令的指令编号;最后一条星载延时指令的后一个星载延时指令编号赋值第二条星载延时指令的指令编号,第一条星载延时指令的下一个星载延时指令编号和前一个星载延时指令编号均赋值为无效编号; (7)星上计算机按照步骤(3)-(6)进行执行,直至星上计算机关机。
【文档编号】G06F9/44GK104182218SQ201410382234
【公开日】2014年12月3日 申请日期:2014年8月5日 优先权日:2014年8月5日
【发明者】万丽景, 党纪红, 关小川, 林琳, 高进, 王晶 申请人:北京控制工程研究所