基于SPARC 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国产化是一种有益探索。
- SPARC V8处理器断点调试的设计与实现研究(04-18)
- AMBA片上总线在基于IP复用的SoC设计中的应用(06-13)