基于SPARC V8 的嵌入式星载计算机
扫描二维码
随时随地手机看文章
1引言
SPARC(Scalable Processor Architecture),是任何人或公司都能准许和使用其于微处理器和半导体发展的开发技术规格。SPARC诞生与SUN Microsystems实验室公司,它是加州大学伯克利的研究人员在RISC技术上研究发展起来的。1985年Sun微系统公司为了获得更高的执行效率和更为优化的编译器,并满足其缩短开发周期、迅速投放市场的要求,提出了该体系结构。该公司本身并不进行集成电路的设计和生产,而是由多家半导体厂商以不同的VLSI实现为其进行生产。最终只要求用这些不同芯片构成的系统均保证程序二进制兼容。这使得厂家能充分发挥自己的特长进一步改进工艺技术、提高性能。可以说SPARC是一个开放的体系结构标准,允许公众制造商的加入。1987年,Sun和TI公司合作开发了RISC微处理器SPARC。1989年,SUN Microsystems转移SPARC规范到一个独立、非盈利组织,用于服务成员开发认证。从最早的32位SPARC V7,到32位SPARC V8(哈佛结构),一直发展到目前的64位SPARC V9(超标量),使SPARC体系的RISC微处理器得到广泛的发展。SPARC微处理器最突出的特点就是它的可扩展性,这是业界出现的第一款有可扩展性功能的微处理,SPARC的推出为Sun赢得了高端微处理器市场的领先地位。Sun公司以其性能优秀的工作站闻名,这些工作站全都是采用Sun公司自己研发的SPARC芯片。
航天计算机是航天设备控制的中枢神经,随着航天工程复杂性的不断提高,设备对计算机的要求越来越高。航天电子产品不但要耐火箭起飞时的冲击、振动等苛刻的力学环境,而且要承受宇宙空间的高温、低温、高真空、高辐射等极端条件;另外,由于在空间环境条件下,电子产品的可维护性非常差,而且一旦发生故障,其后果往往比较严重,甚至是致命的。因此相对于普通计算机,其可靠性要求更高。
在航天领域,美国现在使用的最高端的星载计算机,采用的是基于POWERPC体系结构的。欧空局为了摆脱美国对其空间研发能力的制约而独立开发了基于SPARC V7机构的面向空间应用的微处理器:ERC32,其辐射加固版本已经成熟使用于航天环境中。06年5月22日,基于LEON SPARC V8的处理器也成功使用于航天工程。可以说SPARC体系结构的CPU在今后的航天计划中将发挥更大作用。
尽管国内的IC研发和设计水平同国际先进水平相比还存在着较大的差距。但是,随着国内半导体工业的发展,国内已能生产出可以在空间环境应用的处理器,有些处理器已有在轨飞行的经历,但基于这些处理器的航天计算机性能比较低,处理能力不超过11MIPS,性能功耗比小,重量体积又偏大,不能适应我国航天工程未来的发展。近年来,我国加速了军用器件国产化的步伐,研制出了较高性能的处理器,本设计采用的国产CPU是32位RISC处理器,主频150MHz,处理能力80MIPS@133MHz,这款CPU是目前国产的可在空间应用的CPU中性能比较高的。本处理器基于SPARC V8 体系结构,内部采用AMBA总线可扩展结构,带有32kb指令缓存和32kb数据缓存。功耗低于1瓦,具有检错和纠错功能,支持对寄存器堆和外部存储器的EDAC,以及Cache的奇偶校验。芯片采用0.18um CMOS工艺,抗γ总剂量:100Krad(Si)。
2 硬件实现方案
2.1 总体设计
本设计考虑到计算机的可扩展性,采用底板、主板、电源板分离,并在底板上预留了两个扩展插槽,便于将来功能扩展时使用。
图1 计算机总体框架图
2.2 CPU主板设计
由于1553B总线具有极高的可靠性,因而在航空、航天、军事等领域的电子联网系统中得到广泛应用。1553B总线具有以下优点:类似局域网结构;冗余容错能力:支持“智能”远置终端;高可靠的故障隔离性能;实时可确定性。本设计中引入1553B总线。
图2 CPU主板框架图
主板的布线要主要电磁兼容的影响,采用六层电路板,布线时主要电源分割和多层走线策略。另外用一片小的CPLD可以将简单电路集成其中,简化电路复杂程度。
2.3 其它硬件设计
电源板的设计,要考虑到为本系统提供高效和稳定的电源。本系统电路较复杂,电源板要提供多个电平的电源给系统使用。底板的设计较为简单,它把整个系统集成到一起。而扩展板设计主要是为了具体工程和项目需求而进行更改设计。
图3 系统实物图
3 底层软件方案
3.1 V8汇编语言
3.1.1 语言格式
V8 的汇编语言以段(section)为单位组织源文件。段是相对独立的、具有特定名称的、不可分割的指令或者数据序列。段可以分为代码段和数据段,代码段存放执行代码,数据段存放代码运行时需要用到的数据。一个源程序至少需要一个代码段,大的程序可以包含多个代码段和数据段。
V8 的汇编语言源程序经过汇编处理后生成一个可执行的镜像文件(即.exe 文件),该可执行文件包括下面三个部分:
一个或多个代码段,代码段通常是可读的
一个包含初始值的数据段,这些数据段通常是可读写的
零个或多个不包含初始值的数据段,这些数据段被初始化为0
V8 汇编程序的基本结构为:
.seg “text” !定义一个代码段
.global data, start, hardreset !定义全局变量
start: !标识程序开始,start 要定义为global
set data, %g1
set 3, %g2
add %g2, %g1, %g2
.seg “data”
data:
.word 128
3.1.2 程序设计
在应用系统的程序设计中,若所有的编程任务均用汇编语言来完成,其工作量是很大的。所以,V8 体系结构支持C 以及与汇编语言的混合编程,在一个完整的程序设计中,除了初始化部分用汇编语言完成以外,其主要的编程任务一般都用C 完成。汇编语言与C 的混合编程通常有以下几种方式:
在C 代码中嵌入汇编指令
在汇编程序和C 程序之间进行变量的相互访问
汇编程序和C 程序之间的相互调用
.seg “text”
.global start
start:
set 0x10e0, %g1
mov %g1, %psr
set 0x40000000, %g1
mov %g1, %tbr
set 0x40079000, %g1
mov %g1, %sp
call main
nop
nop
以上的程序段完成简单的初始化,然后跳转到main 函数所标识的C 代码处,如果用户自己编写初始化程序,则跳转到的函数名称可以自行定义,如果使用编译器自带的启动程序,则必须定义main 函数为C 代码主函数。
3.2 CPU初始化程序设计
当使用一个嵌入式操作系统或者不使用嵌入式操作系统、一开始就执行嵌入式应用程序时,有许多因素需要考虑,主要有:
1、初始化执行环境。
2、初始化应用程序
例如:对于已初始化变量,要把初始值从ROM 复制到RAM 的,还要设置其他没有初始化的变量为零。
3、接一个嵌入的可执行的程序镜像,将代码和数据放入存储器的特定区域里。
对于一个没有嵌入式操作系统支持的嵌入式应用程序来说,ROM 中的代码必须规定一个初始化和启动执行的应用程序的方法。
图4 CPU初始化流程图
3.3 目前工作及展望
星载计算机的基本设计和调试已经完成,考虑到软件的可重用性,将引入实时操作系统,便于统一软件接口和减少工程中软件工作量。
4 结论
针对目前星载计算机CPU基本依赖进口现状,本设计使用性能较高国产基于SPARC V8的CPU,设计实现了用于未来航天工程的星载计算机,对于航天技术的独立自主发展有一定意义,对星载计算机CPU国产化是一种有益探索。