8.3.3 操作系统可靠性设计
星载软件不同于地面软件,一方面星载软件出现问题后,无法现场直接修复;另一方面其运行的空间环境存在各种宇宙射线和高能粒子,容易引发软件运行崩溃问题。所以相对于地面软件设计而言,星载软件的可靠性设计尤为重要。
8.3.3.1 软件存储布局设计
非易失存储器划分为两部分,即物理区和文件系统区。物理区是指不带文件系统,需要存储的软件当作数据处理;文件系统区是指所有的软件和库文件,以文件的形式组织,存储在非易失存储器中。星载软件可以划分为两种类型,一种是维护整星稳定运行的基础软件,如操作系统软件、综合电子软件及姿轨控软件等;另一种是整星需要实现用户需求的业务软件,如自主任务规划软件等。
1)物理区软件存储设计
在非易失存储器上设计三个物理区,每个物理区中固化同样的一份操作系统镜像和采用静态编译的整星基础软件。每个软件数据存储时,在其头部存放该软件数据的CRC值和数据长度信息。当系统需要从物理区加载软件时,可以利用写入的长度读取数据,并利用实时计算的CRC同存储的CRC值比较,用以判断该数据的正确性。
2)文件系统区软件存储设计
在非易失存储器上设计两个文件系统区,分为主分区和冗余分区。每个文件系统分区中存储采用动态方式编译的基础软件和相应的动态库文件,同时还需要存放采用动态方式编译的业务软件和依赖的动态库文件。每个软件或库文件在存放时,同时生成一个伴随的MD5文件,存储伴随对象文件的计算出MD5值。系统在轨时,通过实时计算出文件的MD5值和伴随着MD5文件中存储的MD5值比较,用来确认文件的正确性。
为了增强数据存储的可靠性,物理区和文件系统区存储位置间隔分布,即物理区—文件系统区—物理区—文件系统区—物理区。无论是从物理区还是文件系统区加载软件,都须先将软件数据或文件读写拷贝到内存文件系统中,然后从内存文件系统中启动运行基础软件或业务软件。
8.3.3.2 系统冷热启动设计
操作系统的启动模式分为冷启动和热启动。断电后再加电的那一次启动称为冷启动,冷启动后运行的系统称为冷启动系统;除此之外,其他情况的启动都称为热启动,热启动后运行的系统称为热启动系统。
1)冷启动设计
系统冷启动时,操作系统挂载非易失存储器的文件系统和内存文件系统,并读取物理区程序数据至内存文件系统形成文件,然后由操作系统启动内存文件系统中的基础软件,如由操作系统启动管理软件,由管理软件分别完成综合电子软件和姿轨控软件的启动。冷启动流程如图8-11所示。
由加载监控软件通过“冗余+三取二”策略(第一份镜像CRC正确,直接启动第一份;当第一份不正确时,读取判断第二份,正确则启动;否则读取判断第三份,正确启动;三份镜像CRC都不正确时,进行按位“三取二”)读取操作系统镜像至SDRAM空间,并加载启动操作系统。
操作系统启动后,挂载非易失存储器的文件系统和内存文件系统。当由关键数据区中读取相关标识,判断为冷启动时,按读取操作系统镜像相同的方法,由物理区分别读取管理软件、综合电子软件和姿轨控软件数据至内存文件系统,拷贝形成文件后,还要对形成的文件进行一次CRC校验。
形成文件后,操作系统开始启动运行管理软件(操作系统将内存文件系统中文件数据加载至内存运行空间)。管理软件运行后,完成基础软件运行所需共用资源、硬件资源的初始化,开始启动运行综合电子软件和姿轨控软件。
首次加电时,只能从非易失存储器的物理区读取以静态编译方式生成的基础应用程序数据,至内存文件系统中形成文件,并加载运行。此时,只运行如管理软件、综合电子软件以及姿轨控软件一类整星运行控制的基础类软件,不涉及业务软件。因为整星运行控制的基础类软件是经过充分验证的,而且不会轻易改变。原则上,物理区中的程序数据在轨时不会变动,而且加载时采用“冗余+三取二”的策略,所以冷启动系统是一个可靠安全的系统。另外,在冷启动系统下,可以通过在轨编程修改文件系统区中的文件,实现冷启动系统对热启动系统的系统重构和维护功能。
图8-11 冷启动流程示意图
2)热启动设计
在冷启动系统下,通过遥控指令复位系统可以进入热启动系统工作。在发送系统软件复位前,可以通过“本次热复位后程序文件来源”和“本次热复位后加载执行位置”确定应用软件的来源和运行来源。通常可以通过显示的发送“选择加载软件来源”和“选择文件系统加载软件执行来源”遥控指令,用以指明本次热启动时,是从主分区还是冗余分区拷贝应用程序文件和动态库文件,以及是从内存文件系统主份目录还是备份目录启动运行应用程序。默认热启动流程,从非易失存储器文件系统的主分区加载应用程序文件和动态库文件,从内存文件系统主份目录启动应用软件。热启动流程如图8-12所示。
当接收到系统软件复位指令后,操作系统重新开始运行。无论冷启动还是热启动,只要操作系统运行,都会挂载非易失存储器的文件系统和内存文件系统,并将内存文件系统挂载结果通过遥测反馈出来。
操作系统根据遥控指令,决定从非易失存储器文件系统的主分区还是冗余分区中,拷贝基础软件、业务软件、相应的动态库文件和伴随的MD5文件至内存文件系统的主份目录和备份目录中。拷贝成功后,操作系统将管理软件加载至内存空间开始运行。管理软件负责加载启动综合电子软件、姿轨控软件和业务软件运行。
当由内存文件系统主份目录启动综合电子软件和姿轨控软件失败时,在“准禁自主跳转至内存备份运行”状态为准自主的时候,会重新启动内存文件系统备份目录中的综合电子软件和姿轨控软件。
热启动系统中,整星运行了业务软件,可以执行整星业务功能。随着整星的业务变化,通过在轨编程,业务软件得到不断的升级维护。为了减少非易失存储器的读写次数,在轨编程时先更改内存文件系统中的软件,通过对应进程的重启,直接从内存文件系统中加载运行升级后的软件。通过充分验证后,可由地面遥控指令将内存文件系统中升级后的软件同步到文件系统区中。
8.3.3.3 文件扫描流程设计
文件扫描流程主要是针对物理区中的数据、非易失存储器的文件系统主分区及冗余分区中的文件进行校验,以此判断数据或文件的正确性,扫描结果会通过遥测下传,供地面进行决策。
文件扫描作为一个线程任务存在于操作系统管理进程中,任务优先级是整星软件中最低的。文件扫描任务使能时,每隔1 min遍历文件系统区中文件,读取文件数据,计算文件的MD5值,然后和保存在文件系统中对应文件的MD5值进行比较。当出现不一致时,判断此文件为异常。针对物理区的数据,进行CRC计算并和数据头部保存的CRC值比较。异常的文件或数据信息通过遥测下行反馈。文件扫描流程如图8-13所示。
图8-12 热启动流程示意图
图8-13 文件扫描流程
文件扫描功能默认禁止,通过遥控指令可以控制文件扫描流程的使能和禁止。特别需要注意的是,在进行在轨编程或文件同步等涉及文件系统写操作时,需要禁止文件扫描功能。文件扫描功能使用场景包括如下:
(1)在手动加载软件后,通过文件扫描功能确定加载软件的正确性。
(2)在冷启动系统下,切换热启动系统前,通过文件扫描功能确定文件系统中文件的正确性,确保热启动系统能够正常启动运行。
(3)在热启动系统下,需要复位操作系统之前,通过文件扫描功能确定文件系统中文件的正确性,确保系统复位后能够重启成功。
8.3.3.4 系统特权模式设计
单机上电后,首先会运行加载监控软件,然后由加载监控软件读取物理区中的操作系统镜像数据到内存,最后将系统控制权交给操作系统,即将PC指针指向操作系统入口地址,启动操作系统。系统特权模式指的是加载监控软件的一个工作模式。正常情况下加载监控软件直接引导操作系统启动,但是当物理区中的数据出现异常时,就需要进入系统特权模式,进行物理区中的数据修复。
系统特权模式根据进入的方式分为串口特权和遥控特权。有权机通过双机通信串口发送特权码给无权机,无权机重启进入串口特权模式;或者处理器检测到系统在短时间(如9 min)内连续三次看门狗咬狗,系统会进入遥控特权模式。无论是串口特权模式还是遥控特权模式,其主要功能包括如下:
(1)非易失存储器的物理区中的数据巡检,校验物理区中操作系统镜像、基础软件如管理软件、综合电子软件及姿轨控软件数据的正确性。
(2)针对物理区中操作系统镜像和基础类软件的修改。
(3)针对非易失存储器任意位置数据写入,实现非易失存储器任意位置的软件重构。
(4)指定物理区任意位置软件启动。
其中,串口特权模式通过双机通信串口接收有权机转发的遥控指令。遥控特权模式能够接收地面遥控指令,同时采集综合电子计算机中相关硬件的遥测信息(如信道关口、综合接口板、应答机等),下传到地面。遥控特权模式维护了星载计算机的一个最小系统模式。
1)串口特权模式
串口特权模式是指无权机从PROM中启动100 ms内,接收到有权机通过串口发送的特权指令,加载监控软件进入的特权状态模式。其功能如下:
(1)握手功能。无权机发生异常无法启动后,进入特权状态。有权机通过双机通信串口持续发送特权指令。然后无权机冷启动,启动100 ms内通过双机通信串口收到特权指令后,进入特权状态,并向有权机持续发送特权状态字。
(2)特权状态标识功能。地面判断无权机进入特权状态后,向有权机发送停发特权指令,并转发给无权机。无权机收到停发特权指令后,停发特权状态字。
(3)巡检功能。接收巡检指令后,读取物理区CRC,读取镜像并计算CRC,检查两个CRC值是否相等,若相等则向有权机发送巡检校验正确遥测,若不相等则发送错误遥测。
(4)接收镜像上注功能。具体如下:
①启动上注第N份镜像。有权机接收地面发送的上注第N份镜像指令并转发无权机,无权机收到后反馈指令接收状态。
②接收镜像CRC和长度。有权机接收地面发送的注数开始包,转发给无权机,无权机收到后校验是否正确,反馈指令接收状态。
③接收注数包。有权机接收地面发送的注数包,转发给无权机,无权机收到后反馈当前注数包是否正确接收,正确则将数据包写至内存。
④校验及存盘。有权机接收到地面发送的结束上注指令,转发给无权机,无权机收到后对文件进行CRC校验:若CRC校验通过则自动将文件写入第N份镜像对应非易失存储器地址;若CRC校验不通过则不进行写操作,并将结果发给有权机。
(5)特定位置重构NOR Flash功能。操作系统及基础软件镜像的默认存储位置是定义好的,重构功能是指改变操作系统及基础软件镜像位置。包括如下:
①接收重构非易失存储器的首地址。有权机接收地面发送的重构指令,含非易失存储器首地址信息并转发给无权机。无权机收到后反馈首地址是否正确,若通过,进入反馈状态;若不通过,反馈错误遥测。
②接收镜像CRC和长度。有权机接收地面发送的注数开始包,转发给无权机,无权机收到后校验是否正确,反馈指令接收状态。
③接收注数包。有权机接收地面发送的注数包,转发给无权机,无权机收到后反馈当前注数包是否正确接收,正确则将数据包写至内存。
④校验及存盘。有权机接收到地面发送的结束上注指令,转发给无权机,无权机收到后对文件进行CRC校验:若CRC校验通过则自动将文件镜像写至对应非易失存储器地址;若CRC校验不通过则不进行写操作,并将结果发给有权机。
(6)接收从非易失存储器镜像启动命令。从非易失存储器启动操作系统功能,接收有权机转发的从非易失存储器启动操作系统指令,支持从第0、1、2份操作系统镜像地址启动。
(7)接收直接从内存中启动命令。根据接收镜像在内存的位置,启动操作系统及管理软件。
(8)从非易失存储器指定位置启动。无权机先进入特权状态,输入非易失存储器中操作系统的位置,然后从该位置搬运至内存中运行。
2)遥控特权模式
遥控特权模式是指星载计算机从PROM加载软件启动时,如果最近三次看门狗复位发送在9 min内,那么加载监控软件进入的特权模式。其功能包括:
(1)标识功能。PROM启动过程中,先读取看门狗复位计数器,若最近三次复位发生在9 min内,则进入遥控特权模式,同时向双机通信串口和信道关口发送遥测。如果最近三次看门狗复位的时间间隔超过9 min,再从双机通信的通信串口查询串口数据,若100 ms内有特权指令,则进入串口特权模式;若没有,则进入正常启动流程。
(2)遥控特权模式状态标识功能。地面判断单机进入遥控特权模式状态后,向其发送停发标识指令,单机收到停发标识指令后,向双机通信串口和信道关口停发遥控特权模式状态字。
(3)巡检功能。接收巡检指令后,读取物理区CRC,读取镜像并计算CRC,检查两个CRC值是否相等,若相等则向双机通信串口和信道关口发送巡检校验正确遥测,若不相等则发送错误遥测。
(4)接收镜像上注功能,功能和串口特权模式一致,只是上注的数据包直接来自遥控指令,而非有权机的转发。遥测反馈信息同时发送给双机通信串口和信道关口。
(5)特定位置重构NOR Flash功能,操作流程和串口特权一致。
(6)接收从非易失存储器镜像启动遥控命令。从非易失存储器启动操作系统功能,单机接收从非易失存储器启动操作系统指令,支持从第0、1、2份操作系统镜像地址启动。
(7)接收从内存启动遥控命令。根据接收镜像在内存的位置,启动操作系统及管理软件。
(8)从NOR Flash指定位置启动遥控指令。单机接收非易失存储器地址,然后从该位置搬运操作系统至内存中运行。
系统特权模式作为系统最后的保障措施,一般是在系统非易失存储器出现故障之后才会启用的拯救手段。因为在系统特权模式下修复物理区中数据耗时长久,为了保证整星运行的稳定性,在非易失存储器中物理区数据失效后,先让星载计算机切权,保证在无权的状态下进入系统特权模式。