當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]SPARC高性能處理器集成開發(fā)環(huán)境及其編譯器設(shè)計(jì)與實(shí)現(xiàn)

引言

嵌入式系統(tǒng)迅猛發(fā)展的今天,廣泛的應(yīng)用和需求使嵌入式系統(tǒng)的開發(fā)不再局限于只能由相關(guān)應(yīng)用領(lǐng)域的專家來完成,各種優(yōu)秀集成開發(fā)環(huán)境(IDE,Integration Develop Environment)的出現(xiàn),大大降低了工程人員的開發(fā)門檻[1],使得嵌入式系統(tǒng)的開發(fā)變得相對(duì)簡(jiǎn)單。目前,嵌入式系統(tǒng)開發(fā)使用的開發(fā)平臺(tái)多種多樣,從ARM公司的SDT到ADS,再到RVDS,以及風(fēng)河公司的Tornado和其他公司提供的各種專用開發(fā)工具;這些IDE一般都是由文件管理器、編譯器、匯編器、鏈接器、調(diào)試器等組件和工具組成。在這些開發(fā)環(huán)境中,編譯程序起著核心作用,鏈接程序、調(diào)試程序、程序管理等工具直接依靠編譯程序所產(chǎn)生的結(jié)果工作,而且其它工具的構(gòu)造也常常要用到編譯的原理、方法和技術(shù),因此,IDE與編譯器是密不可分的。

本文針對(duì)空間SPARC高性能處理器的IDE及其C編譯器進(jìn)行研究,從而完成SPARC處理器的軟件開發(fā)環(huán)境的設(shè)計(jì)和實(shí)現(xiàn)。

1、處理器體系構(gòu)架

空間SPARC高性能處理器是一款SPARC v8兼容[1] [2] [3]的高性能SoC,它在片上包含整數(shù)處理單元,浮點(diǎn)處理單元,獨(dú)立的指令和數(shù)據(jù)Cache,硬件乘法器和除法器,外部可編程輸入端口的中斷控制器,帶有跟蹤緩沖器的硬件調(diào)試單元,兩個(gè)24位定時(shí)器,32個(gè)通用I/O接口,一個(gè)看門狗,三個(gè)串行通信接口,能夠支持PROM、SRAM、SDRAM和I/O映射空間訪問的外部存儲(chǔ)器控制器,具有軟件可控的省電工作模式,具有可實(shí)現(xiàn) PCI主機(jī)橋(Host bridge)和從屬橋(Guest bridge)功能的PCI控制器等,只要加上存儲(chǔ)器和與應(yīng)用相關(guān)的外圍電路,就可以構(gòu)成完整的單板計(jì)算機(jī)系統(tǒng)。其體系框圖如下所示:

2、集成開發(fā)環(huán)境

好的集成開發(fā)環(huán)境可以提供設(shè)計(jì)、仿真、驗(yàn)證、分析、并行開發(fā)的能力,嵌入式系統(tǒng)集成開發(fā)環(huán)境更是整合了各方的資源與一身。由于系統(tǒng)設(shè)計(jì)的各個(gè)環(huán)節(jié)彼此之間都是有相互聯(lián)系的,設(shè)計(jì)的結(jié)果好壞和正確要在仿真和驗(yàn)證中取得,仿真驗(yàn)證的數(shù)據(jù)又可以反過來指導(dǎo)設(shè)計(jì),所以說單純的隔離設(shè)計(jì)中的各個(gè)部分的設(shè)計(jì)是不合理的,集成環(huán)境可以為設(shè)計(jì)者提供這樣一個(gè)平臺(tái),使得設(shè)計(jì)者和驗(yàn)證者共享數(shù)據(jù),彼此之間協(xié)同工作使得設(shè)計(jì)更加的合理。

2.1 總體設(shè)計(jì)

嵌入式集成開發(fā)環(huán)境針對(duì)SPARC高性能處理器的軟件系統(tǒng)設(shè)計(jì)要求和設(shè)計(jì)能力進(jìn)行改進(jìn),希望能夠提供給用戶和系統(tǒng)開發(fā)工程師一個(gè)比較完備的、易用的開發(fā)工具,其主要功能應(yīng)包括以下幾個(gè)方面:

應(yīng)用程序開發(fā),包括編輯、編譯 應(yīng)用程序調(diào)試 軟件工程管理 軟件仿真環(huán)境 操作系統(tǒng)配置管理 集成環(huán)境配置管理

集成開發(fā)環(huán)境的總體設(shè)計(jì)框圖如下所示:

2.2 集成開發(fā)環(huán)境實(shí)現(xiàn)

作為高性能控制SPARC高性能處理器的專用集成開發(fā)環(huán)境,設(shè)計(jì)實(shí)現(xiàn)了軟件開發(fā)環(huán)境SPE-C,使用C語言做為其編程語言,運(yùn)用SPARC V8平臺(tái)適用的BMSPARC編譯套件,能在本地Win32的環(huán)境下運(yùn)行。

它具備集成開發(fā)環(huán)境所有必要的功能,包括集成的源代碼編輯,工程管理,編譯調(diào)試,環(huán)境設(shè)置等功能,方便用戶基于SPARC v8兼容處理器的應(yīng)用開發(fā)和程序調(diào)試。

它還具有一般開發(fā)環(huán)境所普遍具有的易用性和方便性。調(diào)試部分功能包括斷點(diǎn)、逐語句/過程運(yùn)行、查看和修改寄存器堆/存儲(chǔ)器/片上寄存器、指令跟蹤等,實(shí)現(xiàn)了調(diào)用棧和變量的查看等。

SPE-C軟件開發(fā)環(huán)境實(shí)現(xiàn)的主要特點(diǎn)包括:

編程語言為C語言 支持BMSPARC編譯器 集成調(diào)試功能 新建工程提供系統(tǒng)初始化模版框架 提供可供修改的全定制鏈接腳本 創(chuàng)建生成文件腳本 工程管理,分類函數(shù)預(yù)覽 支持中英文兩種語言 文件函數(shù)預(yù)覽 代碼編輯,語法高亮 變量屬性提示 函數(shù)瀏覽及快速檢索,快速定位(文內(nèi)及工程)及文字替換 支持打印及系統(tǒng)統(tǒng)計(jì) 文件內(nèi)書簽功能

SPE-C軟件開發(fā)環(huán)境為用戶提供了高效、便捷的開發(fā)和調(diào)試環(huán)境,現(xiàn)在該軟件已經(jīng)設(shè)計(jì)完成并通過第三方評(píng)測(cè),可以隨時(shí)提供給用戶使用。

3、BMSPARC編譯器

3.1 編譯器工作原理

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

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

3.2 BMSPARC編譯器生成

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

宿主機(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的目錄)路徑下,完全作為集成開發(fā)環(huán)境的配套工具鏈。

3.3 CORDIC指令支持

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

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

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

顯然,通過使用庫替換的方法,可以簡(jiǎn)化移植過程,實(shí)現(xiàn)軟件兼容及編譯器的快速開發(fā)和使用,并可以快速的完成針對(duì)超越函數(shù)的編譯器優(yōu)化。

4、SPE-C與BMSPARC編譯器的集成

SPE-C中編譯系統(tǒng)的基本規(guī)則為:針對(duì)工程中的源文件及鏈接文件,包括用戶指定的庫文件,按照指定的規(guī)則,并參考用戶設(shè)置,生成一個(gè)符合要求的Makefile文件,然后用make.exe對(duì)Makefile文件進(jìn)行解釋執(zhí)行,從而生成需要的目標(biāo)文件,或完成相應(yīng)的動(dòng)作。[6] [7] [8]

如果在整個(gè)過程中有錯(cuò)誤發(fā)生,則編譯/鏈接終止,IDE系統(tǒng)將套件提供的錯(cuò)誤原因反饋給用戶。

為了將BMSPARC編譯工具鏈集成到SPE-C中,必須使BMSPARC工具鏈的輸出信息包括警告和錯(cuò)誤信息最終輸出(Output)在SPE-C的顯示窗口中。由于BMSPARC工具鏈的各個(gè)執(zhí)行文件都是基于控制臺(tái)的執(zhí)行程序(基于命令窗口的命令行程序),而SPE-C是圖形用戶界面(GUI)程序,因此要將它們執(zhí)行的各種輸出信息收集并放到SPE-C的輸出窗口中顯示,需要一些實(shí)現(xiàn)技巧。本系統(tǒng)中實(shí)現(xiàn)在SPE-C的輸出窗口中顯示編譯信息的方法如下:

1)當(dāng)集成開發(fā)環(huán)境通過界面交互得到用戶編譯某一工程或源碼文件的指令后,首先發(fā)起一個(gè)后臺(tái)線程;

2)后臺(tái)線程創(chuàng)建一個(gè)匿名管道,發(fā)起一個(gè)命令子進(jìn)程以執(zhí)行編譯整個(gè)工程或某個(gè)源碼文件的make命令,直接將該命令子進(jìn)程的標(biāo)準(zhǔn)輸出和錯(cuò)誤輸出均重定向到由父進(jìn)程創(chuàng)建的匿名管道的“寫”端,SPE-C的后臺(tái)線程通過該匿名管道的“讀”端得到所需要的編譯信息;

3)后臺(tái)線程再將所有通過管道獲取的編譯信息實(shí)時(shí)傳送回IDE界面中的信息輸出(Output)窗口進(jìn)行顯示。

下圖是采用如上技術(shù),實(shí)現(xiàn)SPE-C與編譯器之間的信息交互的結(jié)果示例:

顯然,這種方法實(shí)現(xiàn)起來并不復(fù)雜,命令子進(jìn)程的Stdout和Stderr都被重定向到匿名管道的寫端,僅用一個(gè)匿名管道就實(shí)現(xiàn)了全部功能。上面程序流程圖中從匿名管道讀端讀取的輸出信息,即是由編譯命令子進(jìn)程的Stdout和Stderr重定向輸出的內(nèi)容,將其直接放入Output窗口中顯示便實(shí)現(xiàn)了編譯信息實(shí)時(shí)顯示的功能。

結(jié)束語

本文討論了針對(duì)SPARC高性能處理器的嵌入式系統(tǒng)專用軟件集成開發(fā)環(huán)境及其編譯器,介紹了集成開發(fā)環(huán)境(SPE-C)的設(shè)計(jì)及其集成的相關(guān)功能,介紹了BMSPARC編譯環(huán)境及其添加CORDIC指令支持的方法,以及如何實(shí)現(xiàn)編譯環(huán)境與集成開發(fā)環(huán)境的集成。通過上面的工作,SPE-C集成開發(fā)環(huán)境已經(jīng)實(shí)現(xiàn)了與SPARC高性能處理器的無縫配合工作;下一步要完善軟件仿真環(huán)境及對(duì)操作系統(tǒng)的支持,為用戶進(jìn)行軟件仿真和針對(duì)操作系統(tǒng)編譯開發(fā)提供有效的支持環(huán)境。

參考文獻(xiàn)

[1] “The SPARC Architecture Manual Version 8”, SPARC International,Prentice Hall, 1992

[2] Prakash Rashinkar,Peter Paterson.孫海平譯. 系統(tǒng)芯片(SOC)驗(yàn)證方法與技術(shù). 電子工業(yè)出版社,2005

[3] 張鎮(zhèn),魏同立, 基于IP模塊的片上系統(tǒng)設(shè)計(jì) 電子器件,2002

[4] 姚文剛,[碩士論文]基于GCC的交叉編譯器結(jié)構(gòu)分析與后端移植研究,2006

[5] 王曉棟,鄭扣根,基于嵌入式系統(tǒng)的交叉匯編器的研究與實(shí)現(xiàn),工業(yè)控制計(jì)算機(jī),2004

[6] 朱興泉,IDE集成GCC編譯器的方法,指揮控制與仿真,2007

[7] 王榮勝,林嘉宇,張鑌,嵌入式系統(tǒng)集成開發(fā)環(huán)境中的編譯器效能研究,電子技術(shù)應(yīng)用 2008

[8] 鄒耀,劉佩林,基于用戶描述的可配置匯編器,計(jì)算機(jī)工程,2009

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉