新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > SPARC高性能处理器集成开发环境及其编译器设计与实现

SPARC高性能处理器集成开发环境及其编译器设计与实现

——
作者:时间:2010-10-21来源:电子产品世界收藏

  3、BMSPARC

本文引用地址:http://www.eepw.com.cn/article/113735.htm

  3.1 工作原理

  BMSPARC是基于GNU工具链并进行优化设计的一款套件。GNU工具链一般由下面一些工具组成:编译器GCC(GCC本身作为编译器集合包含了对多种语言的支持,这里仅讨论C编译器);Binutils软件包中作为汇编器的GAS,作为链接器和定址器的LD以及对二进制目标文件进行变化处理的其他工具;作为标准C库的Newlib或Glibc;作为调试器的GDB。[4] [5]

  其中编译器是将一种语言编译成为另一种语言的计算机程序,该程序以源语言编写的程序作为输入,翻译生成等价的目标语言程序。编译器可分成只依赖于源语言的编译器前端和只依赖于目标语言的编译器后端两大部分。前端主要对源代码进行扫描、语法分析和语义分析,生成中间代码;而后端主要是优化器和代码生成器。

  3.2 BMSPARC编译器生成

  在进行基于SPARC高性能处理器的嵌入式软件系统开发之前,要先建立交叉编译环境。目标机的交叉编译环境是一个由编译器、链接器和解释器组成的综合开发环境,主要由 binutils、gcc 和 glibc 几个部分组成。有时出于减小 libc 库大小的考虑,也可以用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。建立一个交叉编译工具链是一个复杂的过程,交叉编译器的最终成功运行,取决于很多因素,包括:主机系统配置、GNU工具版本配合、参数配置、库选择等,一个成功的、稳定的交叉编译环境是需要花费大量额时间的,幸运的是现在针对很多处理器都有比较成熟何稳定的编译配置,这里简单列出本系统的交叉编译环境的主要配置:

  • 宿主机 i386-cygwin,目标机 sparc;
  • 编译环境版本

  1. binutils-2.13.2.1

  2. gcc-3.4.4

  3. gdb-6.3

  4. newlib-1.13.0

  在交叉编译器编译的基本配置如下所示:

  ../gcc-3.4.4/configure --target=sparc-elf --prefix= /opt/sparc-elf-3.4.4

  --with-gnu-as --with-gnu-ld

  --verbose --enable-languages=c,c++ --disable-shared --disable-nls

  --with-newlib --with-cpu=leon 2>&1 | tee compile-gcc-configure.out

  交叉编译环境建立过程如下:

  1. 下载源文件、补丁和建立编译的目录

  2. 建立内核头文件

  3. 建立二进制工具(binutils)

  4. 建立初始编译器(bootstrap gcc)

  5. 建立c库(glibc)

  6. 建立全套编译器(full gcc)

  7. 下载源文件、补丁和建立编译的目录

  生成的工具链是基于ELF格式的,全部在/opt/sparc-elf-3.4.4(这是cygwin的目录)路径下,完全作为的配套工具链。

  3.3 CORDIC指令支持

  BMSPARC还提供对硬件CORDIC的支持。CORDIC算法使用矢量的旋转和定向运算进行三角函数、对数、开方及反三角函数等复杂运算。该算法的基本思想是通过一系列固定的与运算基数相关的角度的不断偏摆以逼近所需的旋转角度,由于其基本运算单元只有移位与加减法,为该算法的VLSI实现打下了良好的基础。

  下表列出了BMSPARC支持的协处理器指令及其对应的指令操作码,是对SPARC v8标准指令集中浮点协处指令操作码的扩充。

  BMSPARC编译器提供对指令的支持,主要通过库函数修改的方式完成。首先在binutils中修改汇编器gas,主要针对汇编器的前端和BFD库的移植,涉及到的文件包括:tc-sparc.c、tc-sparc.h、sparc.h、sparc-opc.c、sparc-dis.c和elf32- sparc.h等。通过定义相应指令的宏来完成汇编级的指令生成,之后要完成newlib中超越函数相关的数学函数库,利用汇编指令实现函数的功能,并在汇编中使用cordic指令完成的超越函数功能。最后定义顶层数据类型,针对不同的数据类型,如针对单精度和双精度的浮点,实现其三角函数的数学库是不同的,要分别针对其不同的类型进行实现。

c语言相关文章:c语言教程




评论


相关推荐

技术专区

关闭