从2015年以前发表的帖子来看,国内上天的卫星产品没有使用Linux系统的。
一、Linux系统
Linux作为一款抢占式多任务操作系统,上下文切换和中断在所难免。但可以给任务进程设置运行优先级(nice/renice)和进行CPU核心亲缘性绑定(taskset)。就算发生上下文切换,那也是微秒级别的耗时,还是很快的,只是相对没有那么“实时”而已,如果航天器相差万分之一秒会导致的严重的错误,这时就不适合使用Linux了。
二、航天器对计算机操作系统的要求
由于为了对抗高能粒子等原因,计算机的频率会很低(天宫一号的主机计算频率貌似在20MHz上下),制作尺寸也很大,空间小(VxWorks653内核能裁剪到很小(8000行代码),也能支持SPARC架构,据说天宫什么的用的就是这个,VxWorks653也能关闭动态内存申请),不能跑标准版的系统。军工航天口,实时操作系统一般都用风河公司的Vxworks。军工航天领域对计算机系统的要求是稳定、高可靠性、体积不要太大、实时性高。
1、稳定:就意味着内核代码不能经常改变,Linux版本变化太快,这一点就不符合要求。NASA用的代码是WindRiver十年前的代码。
2、高可靠性:就是这个系统运行很长时间不能有bug,据说连续运行时间最长的是一款Unix(不是很确定),而Windows最长连续运行时间才1年多(这个数据较早,可能是WIN2K的数据);
3、体积不要太大:因为要留出足够的内存给其它任务,比如探测器的数据保存等工作,内核体积要足够小,一个典型的Linux内核大概是几M,Windows的内核文件NTOSKRNL.EXE也是几M,这还只是镜像的体积,运行时的内存就占的更大了。而VxWorks最小内核可以小到几百K,运行内存也是几MB就足够了。有人会说DOS也可以这么小,但是DOS是16位系统,并且常见的只能在X86平台,VxWorks是跨平台(MIPS/PPC/X86/ARM...),并且是完整的32位系统。
4、实时性高:实时性主要是指对中断响应的速度,大多数应用操作系统对中断的响应速度是极慢的,具体表现就是关中断时间太长,如果有大量的中断发生,会出现丢中断的情况。VxWorks在这一点是最具有优势的,它处理中断采用的方式与其它OS不同,能保证关中断的时间非常短。
航天器多数都是嵌入式系统RTOS,用Linux的不太多,Linux实时性不够好,国内这方面不是百分百去确认,NASA的那边用VxWorks的比较多。VxWorks的航天版本里是没有中断的,有些是只有一个时钟中断,这么设计的好处就是系统任意时刻的状态是可预知的,这样的设计对于飞在天上的设备来说很重要,如果出现bug,可以通过推测bug是如何发生的。
三、SylixOS操作系统
2016年5月翼辉信息完成了中国第一份操作系统源码级软件授权协议,授权中国航天科工集团三院三部发布 SylixOS 发行版海鹰翼辉嵌入式实时操作系统, SylixOS 正式成为中国航天科工集团新一代武器系统的基础软件平台。同年,翼辉信息与中国航天科技集团八院八〇四所签署软件授权协议,授权八〇四所发布SylixOS 发行版风云翼辉嵌入式操作系统,风云翼辉的诞生标志着 SylixOS 实时操作系统正式进入中国卫星领域,助力中国宇航事业发展。
SylixOS 是一个嵌入式实时操作系统,支持 SMP 多核实时调度,可运行于多种 CPU 架构目标平台。SylixOS 具有卓越实时性和可靠性,提供丰富的功能,可为不同行业的嵌入式设备提供理想的软件开发平台。SylixOS详细内容参见SylixOS 大型实时操作系统 - 翼辉信息。
四、航天器软硬件举例
中国国内的航母、卫星、飞机、坦克等军工行业的自动化部分的操作系统的平台几乎完全被VxWorks占领,注意VxWorks只是提供平台,真正的上层软件还需要各个厂商自己做二次开发。以上说的是控制部分,应用平台可能五花八门,要知道飞机/卫星上不可能只有一套控制系统的。
2006年,SpaceOS1成功在轨运行。那时的操作系统功能简单,只做到了多种资源的管理和任务调度,却没有任务间的通信和动态内存管理等更为复杂的功能。
嫦娥号的硬件应该是一个主频百M左右的CPU+几十到上百M的内存,外加几块FLASH闪存,有人可能会觉得是不是配置太低了,对于航天系统,重要的是高可靠性,太空中的各种射线会干扰CPU的正常运行,经常会发生位翻转的情况,极端的高低温也会影响硬件工作,一般民用的CPU是无法适应太空环境的。嫦娥三号估计和美国“好奇号”的软硬件配置差不多,下面给出了“好奇号”火星探测器的硬件及软件配置。
1、硬件
2004年勇气号(Spirit, MER-A)和机遇号(Opportunity,MER-B)火星探测器着陆火星,它们配备了3MB EEPROM、128MB内存、256MB闪存。好奇号(Curiosity)有哪些变化呢?
好奇号的Rover Compute Element包含两套完全相同的计算系统,其中一套作为备用,当第一套计算系统出现故障时自动启用。这个新的计算系统采用256K EEPROM、256MB内存、2GB闪存,CPU为BAE RAD750(1040万晶体管,核心频率110到200 MHz),基于IBM的PowerPC 750设计而来,速度达到400 MIPS(勇气号和机遇号为35 MIPS),可以承受-55~70度气温变化以及1000gray的辐射水平。
RAD750
2、软件
在软件方面,NASA不敢冒险,采用的是一款成熟的、具有27年之久的VxWoks操作系统。VxWoks由Wind River Systems(已被Intel收购)开发,是在大量嵌入式系统中采用的实时操作系统,之前的火星探测器(旅居者、勇气号、机遇号)、火星侦察轨道器、SpaceX Dragon太空飞船采用的都是VxWorks。此外,VxWorks还广泛应用于BMW iDrive、美军战斗机、阿帕奇直升机、Apple Airport Extreme和Linksys WRT54G路由。
VxWorks于1985年发布,在进行持续开发。为什么好奇号要使用VxWorks?因为它非常可靠,而且包含成熟的开发工具链,据推测,其底层调度和中断系统适用于处理EDL(进入、降落和着陆,即“恐怖七分钟”)这样的实时任务。
3、好奇号更多配置
(1)仪器
好奇号就是一台有轮子的科学实验室,它有17台相机,全部配备1600×1200(200万像素)CCD传感器。MastCam可将高清晰度的火星景观以720p 10 fps视频真彩色传输。它还有手臂成像仪,是一个机械臂,可以采集火星土壤和岩石并提供显微图像。科学的角度来看,可能最重要的是ChemCam相机,它能向火星岩石或土壤发射激光,使其表面薄层汽化,而后分析汽化后的成分。它包含一个可以确认受激原子类型的光谱仪和一个可以捕捉激光照射区域详细图像的望远镜,其激光器位于好奇号桅杆上。好奇号还有火星手持透镜成像仪功能相当于一个超级放大镜,位于好奇号机械臂末端,可以拍摄火星表面岩石、土壤的详细图像,其精细度可以达到拍摄出一根头发丝的水平。这台仪器相当于科学家的一个高科技手持透镜,可以对准他们希望对准的任何地方。桅杆相机安装在好奇号主车身上方的桅杆上,由两个彩色相机组成,是好奇号的主要成像工具。它相当于好奇号的左、右眼,可以拍摄火星表面的三维图像。
动态中子反照率探测器安装在好奇号主车身背部附近,用于寻找火星地下的水冰以及晶体结构中含有水分子的矿物。这台仪器可向火星地表发射中子束,然后记录中子束的散射速度。氢原子可以延缓中子的速度,如果大量中子速度迟缓,便说明地下可能存在水或者冰。这一由俄罗斯航天署提供的探测器能够发现火星地表下50厘米以内的氢原子。
(2)通讯
好奇号火星车的动力是由一台多任务放射性同位素热电发生器(MMRTG)提供的,这台设备由美国能源部提供。这台发电机本质上是一块核电池,它可以将热能转化为电能。好奇号的核燃料电池设计寿命长达14年,这个核电池支持好奇号将数据从250万英里远的地方传回,好奇号可以直接通过X波段(8GHz)与地球的深空网(DSN)联系,也可以使用UHF(300MHz-3GHz)天线通过火星奥德赛号和火星勘测轨道飞行器与地球联络。