<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SPARC高性能處理器集成開發(fā)環(huán)境及其編譯器設(shè)計與實(shí)現(xiàn)

          SPARC高性能處理器集成開發(fā)環(huán)境及其編譯器設(shè)計與實(shí)現(xiàn)

          ——
          作者: 時間:2010-10-21 來源:電子產(chǎn)品世界 收藏

            3、BMSPARC

          本文引用地址:http://www.ex-cimer.com/article/113735.htm

            3.1 工作原理

            BMSPARC是基于GNU工具鏈并進(jìn)行優(yōu)化設(shè)計的一款套件。GNU工具鏈一般由下面一些工具組成:編譯器GCC(GCC本身作為編譯器集合包含了對多種語言的支持,這里僅討論C編譯器);Binutils軟件包中作為匯編器的GAS,作為鏈接器和定址器的LD以及對二進(jìn)制目標(biāo)文件進(jìn)行變化處理的其他工具;作為標(biāo)準(zhǔn)C庫的Newlib或Glibc;作為調(diào)試器的GDB。[4] [5]

            其中編譯器是將一種語言編譯成為另一種語言的計算機(jī)程序,該程序以源語言編寫的程序作為輸入,翻譯生成等價的目標(biāo)語言程序。編譯器可分成只依賴于源語言的編譯器前端和只依賴于目標(biāo)語言的編譯器后端兩大部分。前端主要對源代碼進(jìn)行掃描、語法分析和語義分析,生成中間代碼;而后端主要是優(yōu)化器和代碼生成器。

            3.2 BMSPARC編譯器生成

            在進(jìn)行基于SPARC高性能處理器的嵌入式軟件系統(tǒng)開發(fā)之前,要先建立交叉編譯環(huán)境。目標(biāo)機(jī)的交叉編譯環(huán)境是一個由編譯器、鏈接器和解釋器組成的綜合開發(fā)環(huán)境,主要由 binutils、gcc 和 glibc 幾個部分組成。有時出于減小 libc 庫大小的考慮,也可以用別的 c 庫來代替 glibc,例如 uClibc、dietlibc 和 newlib。建立一個交叉編譯工具鏈?zhǔn)且粋€復(fù)雜的過程,交叉編譯器的最終成功運(yùn)行,取決于很多因素,包括:主機(jī)系統(tǒng)配置、GNU工具版本配合、參數(shù)配置、庫選擇等,一個成功的、穩(wěn)定的交叉編譯環(huán)境是需要花費(fèi)大量額時間的,幸運(yùn)的是現(xiàn)在針對很多處理器都有比較成熟何穩(wěn)定的編譯配置,這里簡單列出本系統(tǒng)的交叉編譯環(huán)境的主要配置:

          • 宿主機(jī) i386-cygwin,目標(biāo)機(jī) sparc;
          • 編譯環(huán)境版本

            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

            交叉編譯環(huán)境建立過程如下:

            1. 下載源文件、補(bǔ)丁和建立編譯的目錄

            2. 建立內(nèi)核頭文件

            3. 建立二進(jìn)制工具(binutils)

            4. 建立初始編譯器(bootstrap gcc)

            5. 建立c庫(glibc)

            6. 建立全套編譯器(full gcc)

            7. 下載源文件、補(bǔ)丁和建立編譯的目錄

            生成的工具鏈?zhǔn)腔贓LF格式的,全部在/opt/sparc-elf-3.4.4(這是cygwin的目錄)路徑下,完全作為的配套工具鏈。

            3.3 CORDIC指令支持

            BMSPARC還提供對硬件CORDIC的支持。CORDIC算法使用矢量的旋轉(zhuǎn)和定向運(yùn)算進(jìn)行三角函數(shù)、對數(shù)、開方及反三角函數(shù)等復(fù)雜運(yùn)算。該算法的基本思想是通過一系列固定的與運(yùn)算基數(shù)相關(guān)的角度的不斷偏擺以逼近所需的旋轉(zhuǎn)角度,由于其基本運(yùn)算單元只有移位與加減法,為該算法的VLSI實(shí)現(xiàn)打下了良好的基礎(chǔ)。

            下表列出了BMSPARC支持的協(xié)處理器指令及其對應(yīng)的指令操作碼,是對SPARC v8標(biāo)準(zhǔn)指令集中浮點(diǎn)協(xié)處指令操作碼的擴(kuò)充。

            BMSPARC編譯器提供對指令的支持,主要通過庫函數(shù)修改的方式完成。首先在binutils中修改匯編器gas,主要針對匯編器的前端和BFD庫的移植,涉及到的文件包括:tc-sparc.c、tc-sparc.h、sparc.h、sparc-opc.c、sparc-dis.c和elf32- sparc.h等。通過定義相應(yīng)指令的宏來完成匯編級的指令生成,之后要完成newlib中超越函數(shù)相關(guān)的數(shù)學(xué)函數(shù)庫,利用匯編指令實(shí)現(xiàn)函數(shù)的功能,并在匯編中使用cordic指令完成的超越函數(shù)功能。最后定義頂層數(shù)據(jù)類型,針對不同的數(shù)據(jù)類型,如針對單精度和雙精度的浮點(diǎn),實(shí)現(xiàn)其三角函數(shù)的數(shù)學(xué)庫是不同的,要分別針對其不同的類型進(jìn)行實(shí)現(xiàn)。

          c語言相關(guān)文章:c語言教程




          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();