軟件設(shè)計(jì)流程和方法課件_第1頁
軟件設(shè)計(jì)流程和方法課件_第2頁
軟件設(shè)計(jì)流程和方法課件_第3頁
軟件設(shè)計(jì)流程和方法課件_第4頁
軟件設(shè)計(jì)流程和方法課件_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第二章軟件設(shè)計(jì)流程和方法第二章軟件設(shè)計(jì)流程和方法NiosIIEDS(EmbeddedDesignSuite——嵌入式開發(fā)包)提供了一個(gè)統(tǒng)一的開發(fā)平臺(tái),適用于所有NiosII處理器系統(tǒng)。僅僅通過一臺(tái)PC機(jī)、一片Altera的FPGA以及一根JTAG下載電纜,軟件開發(fā)人員就能夠往NiosII處理器系統(tǒng)寫入程序以及和NiosII處理器系統(tǒng)進(jìn)行通訊。NiosII處理器的JTAG調(diào)試模塊提供了使用JTAG下載線和NiosII處理器通信唯一的、統(tǒng)一的方法。無論是單處理器系統(tǒng)中的處理器,還是復(fù)雜多處理器系統(tǒng)中的處理器,對(duì)其的訪問都是相同的。用戶不必去自己建立訪問嵌入式處理器的接口。NiosIIEDS(EmbeddedDesignSuNiosIIEDS提供了兩種不同的設(shè)計(jì)流程,包括很多生成NiosII程序的軟件工具,包括需要版權(quán)的和開源軟件工具如,GNUC/C++工具集。NiosIIEDS為基于NiosII的系統(tǒng)自動(dòng)生成板支持包(boardsupportpackage——BSP)。Altera的BSP包括Altera硬件抽象層(hardwareabstractionlayer——HAL),可選的RTOS,設(shè)備驅(qū)動(dòng)。BSP提供了C/C++運(yùn)行環(huán)境,使用戶避免直接和硬件打交道。NiosIIEDS的第一種開發(fā)流程是用戶在集成開發(fā)環(huán)境NiosIIIDE中完成所有的工作,第二種開發(fā)流程是在命令行和腳本環(huán)境中使用NiosII軟件生成工具,然后將工程導(dǎo)入到IDE中進(jìn)行調(diào)試。本書介紹使用NiosIIIDE進(jìn)行軟件設(shè)計(jì)的流程,NiosIIIDE基于開放式的、可擴(kuò)展EclipseIDEproject工程以及EclipseC/C++開發(fā)工具(CDT)工程。NiosIIEDS提供了兩種不同的設(shè)計(jì)流程,包括很多生2.1NiosIIIDE簡介NiosII集成開發(fā)環(huán)境(IDE)是NiosII系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以NiosIIIDE下完成,包括編輯、編譯和調(diào)試程序。NiosIIIDE為軟件開發(fā)提供四個(gè)主要的功能:工程管理器編輯器和編譯器調(diào)試器閃存編程器2.1NiosIIIDE簡介NiosII集成開發(fā)環(huán)境2.1.1工程管理器TheNiosIIIDE提供多個(gè)工程管理任務(wù),加快嵌入式應(yīng)用程序的開發(fā)進(jìn)度。新工程向?qū)А狽iosIIIDE推出了一個(gè)新工程向?qū)В糜谧詣?dòng)建立C/C++應(yīng)用程序工程和系統(tǒng)庫工程。采用新工程向?qū)В軌蜉p松地在NiosIIIDE中創(chuàng)建新工程,如下圖所示。2.1.1工程管理器TheNiosIIIDE提供多個(gè)NiosIIIDE新工程向?qū)iosIIIDE新工程向?qū)к浖こ棠0濉斯こ虅?chuàng)建向?qū)?,NiosIIIDE還以工程模板的形式提供了軟件代碼實(shí)例,幫助軟件工程師盡可能快速地推出可運(yùn)行的系統(tǒng)。每個(gè)模板包括一系列軟件文件和工程設(shè)置。通過覆蓋工程目錄下的代碼或者導(dǎo)入工程文件的方式,開發(fā)人員能夠?qū)⑺麄冏约旱脑创a添加到工程中。在上圖中的下半部分分別是可選用的模板和模板的介紹。軟件工程模板——除了工程創(chuàng)建向?qū)В琋iosIIIDE還以軟件組件——NiosIIIDE使開發(fā)人員通過使用軟件組件能夠快速地定制系統(tǒng)。軟件組件(或者稱為“系統(tǒng)軟件”)為開發(fā)人員提供了一個(gè)簡單的方式來輕松地為特定目標(biāo)硬件配置他們的系統(tǒng)。在上圖中點(diǎn)擊Next,會(huì)出現(xiàn)下圖所示的系統(tǒng)庫的創(chuàng)建/選擇窗口,新建工程用到的組件會(huì)包含在系統(tǒng)庫中。組件包括:NiosII運(yùn)行庫(或者稱為硬件抽象層(HAL))輕量級(jí)IPTCP/IP庫MicroC/OS-II實(shí)時(shí)操作系統(tǒng)(RTOS)Altera壓縮文件系統(tǒng)軟件組件——NiosIIIDE使開發(fā)人員通過使用軟件組件系統(tǒng)庫工程系統(tǒng)庫工程2.1.2編輯器和編譯器Altera'sNiosIIIDE提供了一個(gè)全功能的源代碼編輯器和C/C++編譯器。包括下面的幾部分:文本編輯器——NiosIIIDE文本編輯器是一個(gè)成熟的全功能源文件編輯器。這些功能包括:語法高亮顯示C/C++,代碼輔助/代碼協(xié)助完成,全面的搜索工具,文件管理,廣泛的在線幫助主題和教程,引入輔助,快速定位,自動(dòng)糾錯(cuò),內(nèi)置調(diào)試功能。2.1.2編輯器和編譯器Altera'sNiosII第2章軟件設(shè)計(jì)流程和方法課件C/C++編譯器——NiosIIIDE為GCC編譯器提供了一個(gè)圖形化用戶界面,NiosIIIDE編譯環(huán)境使設(shè)計(jì)Altera的NiosII處理器軟件更容易,它提供了一個(gè)易用的按鈕式流程,同時(shí)允許開發(fā)人員手工設(shè)置高級(jí)編譯選項(xiàng)。NiosIIIDE編譯環(huán)境自動(dòng)地生成一個(gè)基于用戶特定系統(tǒng)配置(SOPCBuilder生成的PTF文件)的makefile。NiosIIIDE中編譯/鏈接設(shè)置的任何改變都會(huì)自動(dòng)映射到這個(gè)自動(dòng)生成的makefile中。這些設(shè)置可包括生成存儲(chǔ)器初始化文件(MIF)的選項(xiàng)、閃存內(nèi)容、仿真器初始化文件(DAT/HEX)以及profile總結(jié)文件的相關(guān)選項(xiàng)。C/C++編譯器——NiosIIIDE為GCC編譯器提供2.1.3調(diào)試器NiosIIIDE包含一個(gè)強(qiáng)大的、基于GNU調(diào)試器的軟件調(diào)試器-GDB。該調(diào)試器提供了許多基本調(diào)試功能,以及一些在低成本處理器開發(fā)套件中不會(huì)經(jīng)常用到的高級(jí)調(diào)試功能。基本調(diào)試功能——NiosIIIDE調(diào)試器包含如下的基本調(diào)試功能:運(yùn)行控制調(diào)用堆棧查看軟件斷點(diǎn)反匯編代碼查看調(diào)試信息查看指令集仿真器2.1.3調(diào)試器NiosIIIDE包含一個(gè)強(qiáng)大的、基于高級(jí)調(diào)試——除了上述基本調(diào)試功能之外,NiosIIIDE調(diào)試器還支持以下高級(jí)調(diào)試功能:硬件斷點(diǎn)調(diào)試ROM或閃存中的代碼數(shù)據(jù)觸發(fā)指令跟蹤NiosIIIDE調(diào)試器通過JTAG調(diào)試模塊和目標(biāo)硬件相連。另外,支持片外跟蹤功能便于和第三方跟蹤探測工具結(jié)合使用,如FS2公司提供的用于NiosII處理器的in-target系統(tǒng)分析儀(ISA-NIOS)。調(diào)試信息查看——調(diào)試信息查看使用戶可以訪問本地變量、寄存器、存儲(chǔ)器、斷點(diǎn)以及表達(dá)式賦值函數(shù)。連接目標(biāo)——NiosIIIDE調(diào)試器能夠連接多種目標(biāo)。表6-1列出了NiosIIIDE中可用的目標(biāo)連接。高級(jí)調(diào)試——除了上述基本調(diào)試功能之外,NiosIIIDE目標(biāo)說明硬件(通過JTAG)連接至Altera的FPGA開發(fā)板,如NiosII開發(fā)套件或其他Altera及其合作伙伴提供的套件中的開發(fā)板。指令集仿真器NiosII指令集架構(gòu)的軟件例化;用于硬件平臺(tái)(如FPGA電路板)未搭建好時(shí)的系統(tǒng)開發(fā)。硬件邏輯仿真器連接至ModelSimHDL仿真器;用于驗(yàn)證用戶創(chuàng)建的外設(shè)。NiosIIIDE調(diào)試器目標(biāo)目標(biāo)說明硬件(通過JTAG)連接至Altera的FPGA開發(fā)2.1.4閃存編程器許多使用NiosII處理器的設(shè)計(jì)都在單板上采用了閃存,可以用來存儲(chǔ)FPGA配置數(shù)據(jù)和/或NiosII編程數(shù)據(jù)。NiosIIIDE提供了一個(gè)方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosIIIDE閃存編程器來燒寫。除CFI閃存之外,NiosIIIDE閃存編程器能夠?qū)B接到FPGA的任何Altera串行配置器件進(jìn)行編程。2.1.4閃存編程器許多使用NiosII處理器的設(shè)計(jì)都在

閃存編程器管理多種數(shù)據(jù),下表顯示了編程到閃存的通用內(nèi)容類型。內(nèi)容類型說明系統(tǒng)固定軟件燒寫到閃存中的軟件,用于NiosII處理器復(fù)位時(shí)從閃存中導(dǎo)入啟動(dòng)程序。FPGA配置如果使用一個(gè)配置控制器(例如用在Nios開發(fā)板中的配置控制器),F(xiàn)PGA能夠在上電復(fù)位時(shí)從閃存獲取配置數(shù)據(jù)。任意二進(jìn)制數(shù)據(jù)開發(fā)人員想存儲(chǔ)到閃存內(nèi)的任何二進(jìn)制數(shù)據(jù),例如圖形、音頻等。閃存編程器管理多種數(shù)據(jù),下表顯示了編程到閃存的通用內(nèi)NiosIIIDE閃存編程器具有易用的接口,NiosIIIDE閃存編程器已做了預(yù)先配置,能夠用于NiosII開發(fā)套件中的所有單板,而且能夠輕易地引入到用戶硬件中。除了IDE中的這些工具之外,NiosIIEDS還包括如下的部分:GNU工具系列——NiosII編譯器工具是基于標(biāo)準(zhǔn)的GNUgcc編譯器、匯編器、連接器和make工具。指令集仿真器——NiosII指令仿真器(ISS)使得用戶在目標(biāo)硬件準(zhǔn)備好之前就能開發(fā)程序。NiosIIIDE使得用戶可以基于ISS運(yùn)行開發(fā)的程序,就如同在真正的目標(biāo)硬件上運(yùn)行一樣簡單。設(shè)計(jì)實(shí)例——Nios_IIED提供了軟件實(shí)例和硬件設(shè)計(jì)來展示NiosII處理器和開發(fā)環(huán)境所具有的卓越的性能。NiosIIIDE閃存編程器具有易用的接口,NiosI2.2軟件開發(fā)流程2.2.1NiosII程序的構(gòu)成每個(gè)NiosII程序包括一個(gè)應(yīng)用工程,可選的庫工程和一個(gè)板支持包工程。用戶將NiosII程序編譯成一個(gè)能在NiosII處理上運(yùn)行的可執(zhí)行和連接的格式(ExecutableAndLinkedFormatFile——.elf)的文件。2.2軟件開發(fā)流程2.2.1NiosII程序的構(gòu)成應(yīng)用工程N(yùn)iosIIC/C++應(yīng)用工程包括組成一個(gè)可執(zhí)行的.elf文件的源代碼的集合。一個(gè)典型的應(yīng)用的特征是一個(gè)源文件包含main()——主函數(shù)。應(yīng)用工程包括libraries和BSP中被調(diào)用的函數(shù)的源代碼。庫工程庫工程是一個(gè)庫文件(.a)中的源代碼的集合。庫文件中通常包含可重用的,通用的函數(shù),這些函數(shù)可被多個(gè)應(yīng)用工程所共享。比如,數(shù)學(xué)函數(shù)庫。庫工程沒有main()函數(shù)。應(yīng)用工程BSP工程N(yùn)iosIIBSP工程是包含特定系統(tǒng)支持代碼的特殊的庫。BSP為SOPCBuilder系統(tǒng)的處理器提供定制的軟件運(yùn)行環(huán)境。NiosIIEDS提供相應(yīng)的工具可以修改設(shè)置以控制BSP的行為。NiosIIIDE和NiosIIIDE開發(fā)流程文檔中使用"systemlibrary"來指代BSP。BSP包括如下的組成部分:硬件抽象層(HAL)NewlibC標(biāo)準(zhǔn)庫設(shè)備驅(qū)動(dòng)可選的軟件包可選的實(shí)時(shí)操作系統(tǒng)(RTOS)BSP工程硬件抽象層(HAL)HAL提供一個(gè)非線程的,類UNIX的C/C++運(yùn)行環(huán)境。HAL可以提供通用的I/O設(shè)備,允許用戶newlibC標(biāo)準(zhǔn)庫的函數(shù)編程來訪問硬件,如printf()。使用HAL可以最小化(或消除)通過直接訪問硬件的寄存器來控制外設(shè)和與外設(shè)通信。NewlibC標(biāo)準(zhǔn)庫Newlib是為了嵌入式系統(tǒng)的應(yīng)用,而對(duì)C的標(biāo)準(zhǔn)庫進(jìn)行精簡的開源實(shí)現(xiàn)。包括一些常用的函數(shù)的集合,如printf()、malloc()和open()等。設(shè)備驅(qū)動(dòng)每個(gè)設(shè)備驅(qū)動(dòng)管理一個(gè)硬件設(shè)備。HAL為SOPCBuilder系統(tǒng)中的每一個(gè)需要驅(qū)動(dòng)程序的設(shè)備實(shí)例化一個(gè)驅(qū)動(dòng)程序。在NiosII軟件開發(fā)環(huán)境中,設(shè)備驅(qū)動(dòng)具有如下的屬性:一個(gè)設(shè)備驅(qū)動(dòng)是和一個(gè)特定的SOPCBuilder設(shè)備相關(guān)聯(lián)的。驅(qū)動(dòng)程序可能有一些設(shè)置可以影響驅(qū)動(dòng)程序的編譯,這些設(shè)置包含在BSP的設(shè)置中。硬件抽象層(HAL)可選的選件包軟件包是用戶可以選擇加入到BSP工程中,提供附加的功能的源代碼。比如NiosII版本的NichStack?TCP/IP協(xié)議棧。NiosIIIDE和NiosIIIDE設(shè)計(jì)流程文檔使用"軟件組件"來指代軟件包。在NiosII軟件開發(fā)環(huán)境中,軟件包具有如下的典型特性:A軟件包和特定的硬件沒有關(guān)聯(lián)軟件包有一些設(shè)置會(huì)影響它的編譯,這些設(shè)置.包含在BSP的設(shè)置中。在NiosII軟件開發(fā)環(huán)境中,軟件包和庫工程是不同的,軟件包是BSP工程的一部分,不是一個(gè)單獨(dú)的庫工程??蛇x的實(shí)時(shí)操作系統(tǒng)(RTOS)NiosIIEDS包含第三方的C/OS-II實(shí)時(shí)操作系統(tǒng),用戶可以選擇加入到BSP中。C/OS-II基于HAL,實(shí)現(xiàn)了一個(gè)簡單的、welldocumented調(diào)度程序。用戶可以修改設(shè)置,這些設(shè)置也是包含在BSP設(shè)置中。其它的操作系統(tǒng)可從第三方的軟件廠商獲得。.可選的選件包2.2.2NiosIIIDE軟件開發(fā)步驟采用NiosIIIDE開發(fā)流程,用戶使用NiosIIIDE圖形用戶界面來創(chuàng)建、修改、編譯、運(yùn)行和調(diào)試NiosII程序。IDE創(chuàng)建和管理用戶的makefile。如果用戶對(duì)編譯進(jìn)程和工程設(shè)置干預(yù)比較少,而且不需要定制的腳本,采用這種流程比較好。NiosIIIDE是基于流行的EclipseIDE框架以及EclipseC/C++開發(fā)工具(CDT)插件。NiosIIIDE在后臺(tái)運(yùn)行其它的工具,對(duì)用戶屏蔽了底層工具的細(xì)節(jié),提供了一個(gè)統(tǒng)一的開發(fā)環(huán)境。借助工程的創(chuàng)建和配置向?qū)В琋iosIIIDE使用起來很容易,尤其是對(duì)NiosII的初學(xué)者幫助很大。Altera公司提供了Windows和Linux操作系統(tǒng)的NiosIIIDE。下面以電子鐘的軟件開發(fā)為例來介紹軟件開發(fā)的過程。2.2.2NiosIIIDE軟件開發(fā)步驟采用Nios1.新建IDE管理的工程N(yùn)iosIIIDE提供了新工程的向?qū)В笇?dǎo)用戶創(chuàng)建IDE管理的工程。啟動(dòng)NiosIIIDE,出現(xiàn)NiosIIC/C++的窗口。首先創(chuàng)建NiosIIC/C++應(yīng)用程序,在File菜單中選擇newNiosIIC/C++Application,啟動(dòng)創(chuàng)建NiosIIC/C++應(yīng)用工程的向?qū)А?.新建IDE管理的工程點(diǎn)擊圖中的NiosIIC/C++Application出現(xiàn)下圖的窗口點(diǎn)擊圖中的NiosIIC/C++Application為新的NiosII工程命名:這里NiosII的工程名為digi_clock。選擇目標(biāo)硬件:選擇電子鐘的硬件的系統(tǒng)的PTF文件,IDE根據(jù)該文件來建立系統(tǒng)庫。選擇新工程的模板:這里選擇為BlankProject。為新的NiosII工程命名:這里NiosII的工程名為d在該窗口中,用戶可以選擇是創(chuàng)建一個(gè)新的系統(tǒng)庫,或是利用已有的系統(tǒng)庫,缺省的配置是新建一個(gè)系統(tǒng)庫。如在圖中直接點(diǎn)擊Finish,則選擇新建一個(gè)系統(tǒng)庫。在該窗口中,用戶可以選擇是創(chuàng)建一個(gè)新的系統(tǒng)庫,或是利用已有的在上圖中點(diǎn)擊Finish之后,NiosIIIDE創(chuàng)建新的工程,IDE也創(chuàng)建了系統(tǒng)庫工程*_syslib。這些工程出現(xiàn)在IDE工作臺(tái)的NiosIIC/C++工程視圖中。digi_clock為C/C++工程,digi_clock_syslib[SOPC]為系統(tǒng)庫工程。在上圖中點(diǎn)擊Finish之后,NiosIIIDE創(chuàng)建新的第2章軟件設(shè)計(jì)流程和方法課件建立C的源文件,首先選中digi_clock工程,然后單擊右鍵,在彈出菜單選擇NewSourceFile,用戶也可以在選擇File菜單NewSourceFile。建立C的源文件,首先選中digi_clock工程,然后單擊右進(jìn)行如上的操作會(huì)出現(xiàn)下圖的窗口提示用戶輸入源程序的文件名,本例取名為digi_clock.c,注意一定要加上后綴名,點(diǎn)擊Finish完成。用戶采用同樣的步驟來建立頭文件,最后選擇HeadFile即可,將頭文件命名為digi_clock.h進(jìn)行如上的操作會(huì)出現(xiàn)下圖的窗口提示用戶輸入源程序的文件名,本第2章軟件設(shè)計(jì)流程和方法課件2.編譯工程和管理工程對(duì)源程序和頭文件編輯完成之后,對(duì)工程進(jìn)行編譯,編譯的方法,是右鍵單擊digi_clock工程,然后在彈出菜單中選擇BuildProject,如下圖,或者選擇Project菜單BuildProject。編譯成功后,在工程下面會(huì)出現(xiàn)一個(gè)Binaries的目錄,其中有一個(gè)可執(zhí)行的文件digi_clock.elf。編譯中出現(xiàn)的錯(cuò)誤和警告,IDE會(huì)在窗口給出,用戶根據(jù)系統(tǒng)提供的信息進(jìn)行修改。2.編譯工程和管理工程在菜單中,用戶還可以對(duì)工程一些重要的選項(xiàng)進(jìn)行設(shè)置。有如下的一些設(shè)置:Properties-——主要是管理工程和硬件以及其它工程的關(guān)聯(lián)。SystemLibraryProperties——管理硬件的特定的設(shè)置,比如通信設(shè)備,存儲(chǔ)器的分配。RunAs——管理程序是在硬件上運(yùn)行,還是在指令仿真器環(huán)境下運(yùn)行。DebugAs——管理是在硬件上調(diào)試程序,還是在指令仿真器環(huán)境下。在菜單中,用戶還可以對(duì)工程一些重要的選項(xiàng)進(jìn)行設(shè)置。有如下的一Properties設(shè)置在上圖中點(diǎn)擊Properties出現(xiàn)下圖的窗口,該窗口的為Info頁,顯示的該工程的一些信息,不用設(shè)置,還有其它的頁也無須設(shè)置,這里重點(diǎn)介紹C/C++Build頁,C/C++Indexer頁。Properties設(shè)置第2章軟件設(shè)計(jì)流程和方法課件在上圖中點(diǎn)擊C/C++Build,出現(xiàn)下圖所示的窗口,在該窗口中,用戶關(guān)心的選項(xiàng)有Configuration下拉列表框、ToolSettings選項(xiàng)卡。Configuration下拉列表框選擇編譯工程時(shí)采用調(diào)試模式(Debug)還是發(fā)布(Release)模式。不同的模式對(duì)應(yīng)不同的編譯器設(shè)置,優(yōu)化級(jí)別和調(diào)試級(jí)別都可能不同,用戶也可以自己來設(shè)置編譯器的優(yōu)化級(jí)別和調(diào)試級(jí)別,如下圖中的ToolsSettings頁中的NiosIICompiler的General欄。選用Release模式能很大程度減小程序空間并提高程序的執(zhí)行性能。在上圖中點(diǎn)擊C/C++Build,出現(xiàn)下圖所示的窗口,在該第2章軟件設(shè)計(jì)流程和方法課件在上圖中點(diǎn)擊C/C++Indexer,出現(xiàn)如下圖所示的窗口,在該窗口中,用戶在AvailableIndexers下拉列表框中,可以選擇可用的檢索器,這里有三個(gè)選項(xiàng),第一個(gè)選項(xiàng)是不使用Indexer;第二個(gè)選項(xiàng)是FastC/C++Indexer;第三個(gè)是FullC/C++Indexer。各種Indexer的特點(diǎn)也給出了說明。借助于檢索器,用戶可以方便地找到程序文件中的相關(guān)信息。在上圖中點(diǎn)擊C/C++Indexer,出現(xiàn)如下圖所示的窗口SystemLibraryProperties的設(shè)置在工程的彈出菜單中點(diǎn)擊SystemLibraryProperties,出現(xiàn)下圖的窗口SystemLibraryProperties的設(shè)置第2章軟件設(shè)計(jì)流程和方法課件2.3運(yùn)行和調(diào)試程序調(diào)試/運(yùn)行程序之前要把嵌入式系統(tǒng)的硬件系統(tǒng)下載到FPGA中。程序的調(diào)試可以發(fā)生在下面的環(huán)境:NiosIIHardware——NiosII硬件。NiosIIInstructionSetSimulator——NiosII指令集仿真器。NiosII程序的運(yùn)行可以發(fā)生在下面的環(huán)境:NiosIIHardware——NiosII硬件。NiosIIInstructionSetSimulator——NiosII指令集仿真器。NiosIIModelSim——在ModelSim軟件環(huán)境下運(yùn)行。想要在哪個(gè)環(huán)境下調(diào)試和運(yùn)行只要通過鼠標(biāo)右鍵單擊NiosII工程,然后在彈出的菜單中選擇DebugAs/RunAs,再選擇相應(yīng)的環(huán)境,用戶還可以通過選擇Run菜單DebugAs/RunAs來實(shí)現(xiàn)同樣的功能。2.3運(yùn)行和調(diào)試程序第2章軟件設(shè)計(jì)流程和方法課件2.3.1調(diào)試/運(yùn)行環(huán)境設(shè)置但是在調(diào)試/運(yùn)行程序之前,必須先對(duì)上述的調(diào)試/運(yùn)行環(huán)境進(jìn)行設(shè)置。方法是選擇Run菜單Debug…/Run…。如果選擇執(zhí)行Run菜單中的Debug…,出現(xiàn)下圖的窗口,在窗口中,選中NiosIIHardware,雙擊或者點(diǎn)擊快捷圖標(biāo)Newlaunchconfiguration,就新建了一個(gè)硬件調(diào)試配置。對(duì)NiosII指令集仿真器有同樣的方法。對(duì)調(diào)試環(huán)境的設(shè)置主要是Targetconnection和Debugger配置頁。配置的首頁是Main配置頁,用戶一般不用修改。選擇TargetConnection配置頁,出現(xiàn)相應(yīng)的窗口。JTAGCable:進(jìn)行JTAG下載電纜的選擇。當(dāng)只有一個(gè)下載電纜是,會(huì)自動(dòng)選擇,無需設(shè)置,當(dāng)有多個(gè)下載電纜時(shí),用戶手動(dòng)進(jìn)行選擇。JTAGDevice:進(jìn)行連接在JTAG鏈上的FPGA器件的選擇,本例只有一個(gè)器件,用戶不用選擇,當(dāng)具有多個(gè)器件時(shí),用戶必須手動(dòng)進(jìn)行選擇。NiosIITerminalcommunicationdevice:進(jìn)行NiosII系統(tǒng)終端通信設(shè)備選擇,本例選擇jtag_uart。2.3.1調(diào)試/運(yùn)行環(huán)境設(shè)置第2章軟件設(shè)計(jì)流程和方法課件第2章軟件設(shè)計(jì)流程和方法課件2.3.2調(diào)試/運(yùn)行程序進(jìn)行完調(diào)試和運(yùn)行環(huán)境的設(shè)置之后,調(diào)試和運(yùn)行程序只要點(diǎn)擊Run菜單,然后選擇RunAs/DebugAs,再選擇相應(yīng)的運(yùn)行/調(diào)試環(huán)境,如NiosIIHaredware??刂婆_(tái)會(huì)顯示調(diào)試和運(yùn)行程序的信息。2.3.2調(diào)試/運(yùn)行程序2.3.3下載程序到Flash用戶可以將軟件文件、FPGA配置文件和數(shù)據(jù)文件存儲(chǔ)到flash存儲(chǔ)器中。對(duì)flash存儲(chǔ)器編程能夠使硬件在啟動(dòng)的時(shí)從flash裝載軟件和FPGA的配置。用戶可以使用Nios

IIIDEflashprogrammer編程連接到FPGA的flash存儲(chǔ)器。用戶好似用flashprogrammer配置來管理flash存儲(chǔ)器的編程。flashprogrammer配置是影響特定的目標(biāo)硬件的flash編程進(jìn)程的一組設(shè)置。用戶可以創(chuàng)建多個(gè)flashprogrammer配置,每一個(gè)具有自己的編程參數(shù)。如果用戶在多個(gè)目標(biāo)板上開發(fā)項(xiàng)目時(shí)很有幫助。用戶也可以建立一個(gè)flashprogrammer配置來編程文件的組合,允許用戶一次操作編程兩或三個(gè)文件。2.3.3下載程序到Flash用戶可以將軟件文件、FPGA1.打開flashprogrammer,創(chuàng)建flashprogrammer配置在Tools菜單中,點(diǎn)擊FlashProgrammer....,出現(xiàn)FlashProgrammer對(duì)話窗口。在配置列表中右鍵單擊FlashProgrammer,然后在彈出菜單中單擊New,一個(gè)新的flashprogrammer配置出現(xiàn)。在Name框中為該配置輸入一個(gè)唯一的、有意義的名字。1.打開flashprogrammer,創(chuàng)建flash第2章軟件設(shè)計(jì)流程和方法課件2.指定要編程到flash存儲(chǔ)器的文件在配置列表中,單擊一個(gè)flashprogrammer配置。點(diǎn)擊Main頁。如果要將可執(zhí)行文件編程到flash存儲(chǔ)器,采用如下的步驟:選中Programsoftwareprojectintoflashmemory。在Project框中指定工程。flashprogrammer會(huì)自動(dòng)找到用戶工程的Nios

IIELFExecutable和目標(biāo)硬件。2.指定要編程到flash存儲(chǔ)器的文件如果用戶不是將可執(zhí)行文件編程到flash存儲(chǔ)器,采取如下的步驟:選中Programsoftwareintoflashmemory.刪除Project框中的內(nèi)容。不選擇Programsoftwareintoflashmemory。SOPCBuilderSystem框可用.在SOPCBuilderSystem框中指定目標(biāo)硬件文件。如果用戶不是將可執(zhí)行文件編程到flash存儲(chǔ)器,采取如下的步如果要將FPGA配置編程到flash存儲(chǔ)器,采取如下的步驟:選中ProgramFPGAconfigurationdataintohardware-imageregionofflashmemory.在FPGAconfiguration(.sof)框中指定數(shù)據(jù)文件.在HardwareImage列表中選擇FPGA配置位置。在Memory列表中,選擇flash存儲(chǔ)器設(shè)備。在Offset框中,鍵入flash存儲(chǔ)器設(shè)備中的配置文件起始位置的偏移量。如果要將FPGA配置編程到flash存儲(chǔ)器,采取如下的步驟:如果用戶要將數(shù)據(jù)文件編程到flash存儲(chǔ)器,采用如下的步驟:選中Programafileintoflashmemory。在File框指定要編程到flash的文件。在Memory列表中,選擇flash存儲(chǔ)器設(shè)備。在Offset框中,輸入數(shù)據(jù)文件的在flash存儲(chǔ)器設(shè)備中起始位置的偏移量。如果用戶要將數(shù)據(jù)文件編程到flash存儲(chǔ)器,采用如下的步驟:指定編程的線纜和目標(biāo)flash存儲(chǔ)器設(shè)備在配置列表中,單擊一個(gè)flashprogrammer配置。單擊TargetConnection頁。在JTAGcable列表中,選擇連接到目標(biāo)板的JTAGcable。如果用戶只有一條電纜,automatic的設(shè)置會(huì)自動(dòng)地確定用戶的下載線。如果用戶的下載線沒有出現(xiàn)在列表中,確認(rèn)是否正確地安裝和連接,然后點(diǎn)擊Refresh將其添加到列表中。在JTAGdevice列表中,選擇要編程的Nios

II系統(tǒng)。如果用戶只有更一個(gè)連接到JTAGCable的Nios

II系統(tǒng),automatic的設(shè)置自動(dòng)確定用戶的系統(tǒng)。如果用戶的Nios

II系統(tǒng)沒有顯示在列表中,確認(rèn)硬件是否正確地安裝和連接,然后點(diǎn)擊Refresh將其添加到列表中。指定編程的線纜和目標(biāo)flash存儲(chǔ)器設(shè)備編程目標(biāo)板上的flash存儲(chǔ)器在配置列表中,點(diǎn)擊一個(gè)flashprogrammer配置。Main和TargetConnection頁上的設(shè)置必須是合法的。點(diǎn)擊右下角的ProgramFlash開始對(duì)flash編程。flash的編程過程需要幾分鐘,具體的時(shí)間取決于下載的數(shù)據(jù)的大小。如果用戶的工程不是最新的,在將工程編程到flash存儲(chǔ)器之前,Nios

IIIDE會(huì)自動(dòng)地編譯用戶的工程。用戶也可以關(guān)閉自動(dòng)編譯,在Window菜單,點(diǎn)擊Preferences,然后展開Run/Debug,點(diǎn)擊Launching,然后去掉Build(ifrequired)beforelaunching的選項(xiàng)。如果需要的話,flashprogrammer自動(dòng)地在編程數(shù)據(jù)之前添加上boot-loader代碼。編程目標(biāo)板上的flash存儲(chǔ)器演講完畢,謝謝觀看!演講完畢,謝謝觀看!第二章軟件設(shè)計(jì)流程和方法第二章軟件設(shè)計(jì)流程和方法NiosIIEDS(EmbeddedDesignSuite——嵌入式開發(fā)包)提供了一個(gè)統(tǒng)一的開發(fā)平臺(tái),適用于所有NiosII處理器系統(tǒng)。僅僅通過一臺(tái)PC機(jī)、一片Altera的FPGA以及一根JTAG下載電纜,軟件開發(fā)人員就能夠往NiosII處理器系統(tǒng)寫入程序以及和NiosII處理器系統(tǒng)進(jìn)行通訊。NiosII處理器的JTAG調(diào)試模塊提供了使用JTAG下載線和NiosII處理器通信唯一的、統(tǒng)一的方法。無論是單處理器系統(tǒng)中的處理器,還是復(fù)雜多處理器系統(tǒng)中的處理器,對(duì)其的訪問都是相同的。用戶不必去自己建立訪問嵌入式處理器的接口。NiosIIEDS(EmbeddedDesignSuNiosIIEDS提供了兩種不同的設(shè)計(jì)流程,包括很多生成NiosII程序的軟件工具,包括需要版權(quán)的和開源軟件工具如,GNUC/C++工具集。NiosIIEDS為基于NiosII的系統(tǒng)自動(dòng)生成板支持包(boardsupportpackage——BSP)。Altera的BSP包括Altera硬件抽象層(hardwareabstractionlayer——HAL),可選的RTOS,設(shè)備驅(qū)動(dòng)。BSP提供了C/C++運(yùn)行環(huán)境,使用戶避免直接和硬件打交道。NiosIIEDS的第一種開發(fā)流程是用戶在集成開發(fā)環(huán)境NiosIIIDE中完成所有的工作,第二種開發(fā)流程是在命令行和腳本環(huán)境中使用NiosII軟件生成工具,然后將工程導(dǎo)入到IDE中進(jìn)行調(diào)試。本書介紹使用NiosIIIDE進(jìn)行軟件設(shè)計(jì)的流程,NiosIIIDE基于開放式的、可擴(kuò)展EclipseIDEproject工程以及EclipseC/C++開發(fā)工具(CDT)工程。NiosIIEDS提供了兩種不同的設(shè)計(jì)流程,包括很多生2.1NiosIIIDE簡介NiosII集成開發(fā)環(huán)境(IDE)是NiosII系列嵌入式處理器的基本軟件開發(fā)工具。所有軟件開發(fā)任務(wù)都可以NiosIIIDE下完成,包括編輯、編譯和調(diào)試程序。NiosIIIDE為軟件開發(fā)提供四個(gè)主要的功能:工程管理器編輯器和編譯器調(diào)試器閃存編程器2.1NiosIIIDE簡介NiosII集成開發(fā)環(huán)境2.1.1工程管理器TheNiosIIIDE提供多個(gè)工程管理任務(wù),加快嵌入式應(yīng)用程序的開發(fā)進(jìn)度。新工程向?qū)А狽iosIIIDE推出了一個(gè)新工程向?qū)?,用于自?dòng)建立C/C++應(yīng)用程序工程和系統(tǒng)庫工程。采用新工程向?qū)?,能夠輕松地在NiosIIIDE中創(chuàng)建新工程,如下圖所示。2.1.1工程管理器TheNiosIIIDE提供多個(gè)NiosIIIDE新工程向?qū)iosIIIDE新工程向?qū)к浖こ棠0濉斯こ虅?chuàng)建向?qū)?,NiosIIIDE還以工程模板的形式提供了軟件代碼實(shí)例,幫助軟件工程師盡可能快速地推出可運(yùn)行的系統(tǒng)。每個(gè)模板包括一系列軟件文件和工程設(shè)置。通過覆蓋工程目錄下的代碼或者導(dǎo)入工程文件的方式,開發(fā)人員能夠?qū)⑺麄冏约旱脑创a添加到工程中。在上圖中的下半部分分別是可選用的模板和模板的介紹。軟件工程模板——除了工程創(chuàng)建向?qū)?,NiosIIIDE還以軟件組件——NiosIIIDE使開發(fā)人員通過使用軟件組件能夠快速地定制系統(tǒng)。軟件組件(或者稱為“系統(tǒng)軟件”)為開發(fā)人員提供了一個(gè)簡單的方式來輕松地為特定目標(biāo)硬件配置他們的系統(tǒng)。在上圖中點(diǎn)擊Next,會(huì)出現(xiàn)下圖所示的系統(tǒng)庫的創(chuàng)建/選擇窗口,新建工程用到的組件會(huì)包含在系統(tǒng)庫中。組件包括:NiosII運(yùn)行庫(或者稱為硬件抽象層(HAL))輕量級(jí)IPTCP/IP庫MicroC/OS-II實(shí)時(shí)操作系統(tǒng)(RTOS)Altera壓縮文件系統(tǒng)軟件組件——NiosIIIDE使開發(fā)人員通過使用軟件組件系統(tǒng)庫工程系統(tǒng)庫工程2.1.2編輯器和編譯器Altera'sNiosIIIDE提供了一個(gè)全功能的源代碼編輯器和C/C++編譯器。包括下面的幾部分:文本編輯器——NiosIIIDE文本編輯器是一個(gè)成熟的全功能源文件編輯器。這些功能包括:語法高亮顯示C/C++,代碼輔助/代碼協(xié)助完成,全面的搜索工具,文件管理,廣泛的在線幫助主題和教程,引入輔助,快速定位,自動(dòng)糾錯(cuò),內(nèi)置調(diào)試功能。2.1.2編輯器和編譯器Altera'sNiosII第2章軟件設(shè)計(jì)流程和方法課件C/C++編譯器——NiosIIIDE為GCC編譯器提供了一個(gè)圖形化用戶界面,NiosIIIDE編譯環(huán)境使設(shè)計(jì)Altera的NiosII處理器軟件更容易,它提供了一個(gè)易用的按鈕式流程,同時(shí)允許開發(fā)人員手工設(shè)置高級(jí)編譯選項(xiàng)。NiosIIIDE編譯環(huán)境自動(dòng)地生成一個(gè)基于用戶特定系統(tǒng)配置(SOPCBuilder生成的PTF文件)的makefile。NiosIIIDE中編譯/鏈接設(shè)置的任何改變都會(huì)自動(dòng)映射到這個(gè)自動(dòng)生成的makefile中。這些設(shè)置可包括生成存儲(chǔ)器初始化文件(MIF)的選項(xiàng)、閃存內(nèi)容、仿真器初始化文件(DAT/HEX)以及profile總結(jié)文件的相關(guān)選項(xiàng)。C/C++編譯器——NiosIIIDE為GCC編譯器提供2.1.3調(diào)試器NiosIIIDE包含一個(gè)強(qiáng)大的、基于GNU調(diào)試器的軟件調(diào)試器-GDB。該調(diào)試器提供了許多基本調(diào)試功能,以及一些在低成本處理器開發(fā)套件中不會(huì)經(jīng)常用到的高級(jí)調(diào)試功能?;菊{(diào)試功能——NiosIIIDE調(diào)試器包含如下的基本調(diào)試功能:運(yùn)行控制調(diào)用堆棧查看軟件斷點(diǎn)反匯編代碼查看調(diào)試信息查看指令集仿真器2.1.3調(diào)試器NiosIIIDE包含一個(gè)強(qiáng)大的、基于高級(jí)調(diào)試——除了上述基本調(diào)試功能之外,NiosIIIDE調(diào)試器還支持以下高級(jí)調(diào)試功能:硬件斷點(diǎn)調(diào)試ROM或閃存中的代碼數(shù)據(jù)觸發(fā)指令跟蹤NiosIIIDE調(diào)試器通過JTAG調(diào)試模塊和目標(biāo)硬件相連。另外,支持片外跟蹤功能便于和第三方跟蹤探測工具結(jié)合使用,如FS2公司提供的用于NiosII處理器的in-target系統(tǒng)分析儀(ISA-NIOS)。調(diào)試信息查看——調(diào)試信息查看使用戶可以訪問本地變量、寄存器、存儲(chǔ)器、斷點(diǎn)以及表達(dá)式賦值函數(shù)。連接目標(biāo)——NiosIIIDE調(diào)試器能夠連接多種目標(biāo)。表6-1列出了NiosIIIDE中可用的目標(biāo)連接。高級(jí)調(diào)試——除了上述基本調(diào)試功能之外,NiosIIIDE目標(biāo)說明硬件(通過JTAG)連接至Altera的FPGA開發(fā)板,如NiosII開發(fā)套件或其他Altera及其合作伙伴提供的套件中的開發(fā)板。指令集仿真器NiosII指令集架構(gòu)的軟件例化;用于硬件平臺(tái)(如FPGA電路板)未搭建好時(shí)的系統(tǒng)開發(fā)。硬件邏輯仿真器連接至ModelSimHDL仿真器;用于驗(yàn)證用戶創(chuàng)建的外設(shè)。NiosIIIDE調(diào)試器目標(biāo)目標(biāo)說明硬件(通過JTAG)連接至Altera的FPGA開發(fā)2.1.4閃存編程器許多使用NiosII處理器的設(shè)計(jì)都在單板上采用了閃存,可以用來存儲(chǔ)FPGA配置數(shù)據(jù)和/或NiosII編程數(shù)據(jù)。NiosIIIDE提供了一個(gè)方便的閃存編程方法。任何連接到FPGA的兼容通用閃存接口(CFI)的閃存器件都可以通過NiosIIIDE閃存編程器來燒寫。除CFI閃存之外,NiosIIIDE閃存編程器能夠?qū)B接到FPGA的任何Altera串行配置器件進(jìn)行編程。2.1.4閃存編程器許多使用NiosII處理器的設(shè)計(jì)都在

閃存編程器管理多種數(shù)據(jù),下表顯示了編程到閃存的通用內(nèi)容類型。內(nèi)容類型說明系統(tǒng)固定軟件燒寫到閃存中的軟件,用于NiosII處理器復(fù)位時(shí)從閃存中導(dǎo)入啟動(dòng)程序。FPGA配置如果使用一個(gè)配置控制器(例如用在Nios開發(fā)板中的配置控制器),F(xiàn)PGA能夠在上電復(fù)位時(shí)從閃存獲取配置數(shù)據(jù)。任意二進(jìn)制數(shù)據(jù)開發(fā)人員想存儲(chǔ)到閃存內(nèi)的任何二進(jìn)制數(shù)據(jù),例如圖形、音頻等。閃存編程器管理多種數(shù)據(jù),下表顯示了編程到閃存的通用內(nèi)NiosIIIDE閃存編程器具有易用的接口,NiosIIIDE閃存編程器已做了預(yù)先配置,能夠用于NiosII開發(fā)套件中的所有單板,而且能夠輕易地引入到用戶硬件中。除了IDE中的這些工具之外,NiosIIEDS還包括如下的部分:GNU工具系列——NiosII編譯器工具是基于標(biāo)準(zhǔn)的GNUgcc編譯器、匯編器、連接器和make工具。指令集仿真器——NiosII指令仿真器(ISS)使得用戶在目標(biāo)硬件準(zhǔn)備好之前就能開發(fā)程序。NiosIIIDE使得用戶可以基于ISS運(yùn)行開發(fā)的程序,就如同在真正的目標(biāo)硬件上運(yùn)行一樣簡單。設(shè)計(jì)實(shí)例——Nios_IIED提供了軟件實(shí)例和硬件設(shè)計(jì)來展示NiosII處理器和開發(fā)環(huán)境所具有的卓越的性能。NiosIIIDE閃存編程器具有易用的接口,NiosI2.2軟件開發(fā)流程2.2.1NiosII程序的構(gòu)成每個(gè)NiosII程序包括一個(gè)應(yīng)用工程,可選的庫工程和一個(gè)板支持包工程。用戶將NiosII程序編譯成一個(gè)能在NiosII處理上運(yùn)行的可執(zhí)行和連接的格式(ExecutableAndLinkedFormatFile——.elf)的文件。2.2軟件開發(fā)流程2.2.1NiosII程序的構(gòu)成應(yīng)用工程N(yùn)iosIIC/C++應(yīng)用工程包括組成一個(gè)可執(zhí)行的.elf文件的源代碼的集合。一個(gè)典型的應(yīng)用的特征是一個(gè)源文件包含main()——主函數(shù)。應(yīng)用工程包括libraries和BSP中被調(diào)用的函數(shù)的源代碼。庫工程庫工程是一個(gè)庫文件(.a)中的源代碼的集合。庫文件中通常包含可重用的,通用的函數(shù),這些函數(shù)可被多個(gè)應(yīng)用工程所共享。比如,數(shù)學(xué)函數(shù)庫。庫工程沒有main()函數(shù)。應(yīng)用工程BSP工程N(yùn)iosIIBSP工程是包含特定系統(tǒng)支持代碼的特殊的庫。BSP為SOPCBuilder系統(tǒng)的處理器提供定制的軟件運(yùn)行環(huán)境。NiosIIEDS提供相應(yīng)的工具可以修改設(shè)置以控制BSP的行為。NiosIIIDE和NiosIIIDE開發(fā)流程文檔中使用"systemlibrary"來指代BSP。BSP包括如下的組成部分:硬件抽象層(HAL)NewlibC標(biāo)準(zhǔn)庫設(shè)備驅(qū)動(dòng)可選的軟件包可選的實(shí)時(shí)操作系統(tǒng)(RTOS)BSP工程硬件抽象層(HAL)HAL提供一個(gè)非線程的,類UNIX的C/C++運(yùn)行環(huán)境。HAL可以提供通用的I/O設(shè)備,允許用戶newlibC標(biāo)準(zhǔn)庫的函數(shù)編程來訪問硬件,如printf()。使用HAL可以最小化(或消除)通過直接訪問硬件的寄存器來控制外設(shè)和與外設(shè)通信。NewlibC標(biāo)準(zhǔn)庫Newlib是為了嵌入式系統(tǒng)的應(yīng)用,而對(duì)C的標(biāo)準(zhǔn)庫進(jìn)行精簡的開源實(shí)現(xiàn)。包括一些常用的函數(shù)的集合,如printf()、malloc()和open()等。設(shè)備驅(qū)動(dòng)每個(gè)設(shè)備驅(qū)動(dòng)管理一個(gè)硬件設(shè)備。HAL為SOPCBuilder系統(tǒng)中的每一個(gè)需要驅(qū)動(dòng)程序的設(shè)備實(shí)例化一個(gè)驅(qū)動(dòng)程序。在NiosII軟件開發(fā)環(huán)境中,設(shè)備驅(qū)動(dòng)具有如下的屬性:一個(gè)設(shè)備驅(qū)動(dòng)是和一個(gè)特定的SOPCBuilder設(shè)備相關(guān)聯(lián)的。驅(qū)動(dòng)程序可能有一些設(shè)置可以影響驅(qū)動(dòng)程序的編譯,這些設(shè)置包含在BSP的設(shè)置中。硬件抽象層(HAL)可選的選件包軟件包是用戶可以選擇加入到BSP工程中,提供附加的功能的源代碼。比如NiosII版本的NichStack?TCP/IP協(xié)議棧。NiosIIIDE和NiosIIIDE設(shè)計(jì)流程文檔使用"軟件組件"來指代軟件包。在NiosII軟件開發(fā)環(huán)境中,軟件包具有如下的典型特性:A軟件包和特定的硬件沒有關(guān)聯(lián)軟件包有一些設(shè)置會(huì)影響它的編譯,這些設(shè)置.包含在BSP的設(shè)置中。在NiosII軟件開發(fā)環(huán)境中,軟件包和庫工程是不同的,軟件包是BSP工程的一部分,不是一個(gè)單獨(dú)的庫工程。可選的實(shí)時(shí)操作系統(tǒng)(RTOS)NiosIIEDS包含第三方的C/OS-II實(shí)時(shí)操作系統(tǒng),用戶可以選擇加入到BSP中。C/OS-II基于HAL,實(shí)現(xiàn)了一個(gè)簡單的、welldocumented調(diào)度程序。用戶可以修改設(shè)置,這些設(shè)置也是包含在BSP設(shè)置中。其它的操作系統(tǒng)可從第三方的軟件廠商獲得。.可選的選件包2.2.2NiosIIIDE軟件開發(fā)步驟采用NiosIIIDE開發(fā)流程,用戶使用NiosIIIDE圖形用戶界面來創(chuàng)建、修改、編譯、運(yùn)行和調(diào)試NiosII程序。IDE創(chuàng)建和管理用戶的makefile。如果用戶對(duì)編譯進(jìn)程和工程設(shè)置干預(yù)比較少,而且不需要定制的腳本,采用這種流程比較好。NiosIIIDE是基于流行的EclipseIDE框架以及EclipseC/C++開發(fā)工具(CDT)插件。NiosIIIDE在后臺(tái)運(yùn)行其它的工具,對(duì)用戶屏蔽了底層工具的細(xì)節(jié),提供了一個(gè)統(tǒng)一的開發(fā)環(huán)境。借助工程的創(chuàng)建和配置向?qū)?,NiosIIIDE使用起來很容易,尤其是對(duì)NiosII的初學(xué)者幫助很大。Altera公司提供了Windows和Linux操作系統(tǒng)的NiosIIIDE。下面以電子鐘的軟件開發(fā)為例來介紹軟件開發(fā)的過程。2.2.2NiosIIIDE軟件開發(fā)步驟采用Nios1.新建IDE管理的工程N(yùn)iosIIIDE提供了新工程的向?qū)?,指?dǎo)用戶創(chuàng)建IDE管理的工程。啟動(dòng)NiosIIIDE,出現(xiàn)NiosIIC/C++的窗口。首先創(chuàng)建NiosIIC/C++應(yīng)用程序,在File菜單中選擇newNiosIIC/C++Application,啟動(dòng)創(chuàng)建NiosIIC/C++應(yīng)用工程的向?qū)А?.新建IDE管理的工程點(diǎn)擊圖中的NiosIIC/C++Application出現(xiàn)下圖的窗口點(diǎn)擊圖中的NiosIIC/C++Application為新的NiosII工程命名:這里NiosII的工程名為digi_clock。選擇目標(biāo)硬件:選擇電子鐘的硬件的系統(tǒng)的PTF文件,IDE根據(jù)該文件來建立系統(tǒng)庫。選擇新工程的模板:這里選擇為BlankProject。為新的NiosII工程命名:這里NiosII的工程名為d在該窗口中,用戶可以選擇是創(chuàng)建一個(gè)新的系統(tǒng)庫,或是利用已有的系統(tǒng)庫,缺省的配置是新建一個(gè)系統(tǒng)庫。如在圖中直接點(diǎn)擊Finish,則選擇新建一個(gè)系統(tǒng)庫。在該窗口中,用戶可以選擇是創(chuàng)建一個(gè)新的系統(tǒng)庫,或是利用已有的在上圖中點(diǎn)擊Finish之后,NiosIIIDE創(chuàng)建新的工程,IDE也創(chuàng)建了系統(tǒng)庫工程*_syslib。這些工程出現(xiàn)在IDE工作臺(tái)的NiosIIC/C++工程視圖中。digi_clock為C/C++工程,digi_clock_syslib[SOPC]為系統(tǒng)庫工程。在上圖中點(diǎn)擊Finish之后,NiosIIIDE創(chuàng)建新的第2章軟件設(shè)計(jì)流程和方法課件建立C的源文件,首先選中digi_clock工程,然后單擊右鍵,在彈出菜單選擇NewSourceFile,用戶也可以在選擇File菜單NewSourceFile。建立C的源文件,首先選中digi_clock工程,然后單擊右進(jìn)行如上的操作會(huì)出現(xiàn)下圖的窗口提示用戶輸入源程序的文件名,本例取名為digi_clock.c,注意一定要加上后綴名,點(diǎn)擊Finish完成。用戶采用同樣的步驟來建立頭文件,最后選擇HeadFile即可,將頭文件命名為digi_clock.h進(jìn)行如上的操作會(huì)出現(xiàn)下圖的窗口提示用戶輸入源程序的文件名,本第2章軟件設(shè)計(jì)流程和方法課件2.編譯工程和管理工程對(duì)源程序和頭文件編輯完成之后,對(duì)工程進(jìn)行編譯,編譯的方法,是右鍵單擊digi_clock工程,然后在彈出菜單中選擇BuildProject,如下圖,或者選擇Project菜單BuildProject。編譯成功后,在工程下面會(huì)出現(xiàn)一個(gè)Binaries的目錄,其中有一個(gè)可執(zhí)行的文件digi_clock.elf。編譯中出現(xiàn)的錯(cuò)誤和警告,IDE會(huì)在窗口給出,用戶根據(jù)系統(tǒng)提供的信息進(jìn)行修改。2.編譯工程和管理工程在菜單中,用戶還可以對(duì)工程一些重要的選項(xiàng)進(jìn)行設(shè)置。有如下的一些設(shè)置:Properties-——主要是管理工程和硬件以及其它工程的關(guān)聯(lián)。SystemLibraryProperties——管理硬件的特定的設(shè)置,比如通信設(shè)備,存儲(chǔ)器的分配。RunAs——管理程序是在硬件上運(yùn)行,還是在指令仿真器環(huán)境下運(yùn)行。DebugAs——管理是在硬件上調(diào)試程序,還是在指令仿真器環(huán)境下。在菜單中,用戶還可以對(duì)工程一些重要的選項(xiàng)進(jìn)行設(shè)置。有如下的一Properties設(shè)置在上圖中點(diǎn)擊Properties出現(xiàn)下圖的窗口,該窗口的為Info頁,顯示的該工程的一些信息,不用設(shè)置,還有其它的頁也無須設(shè)置,這里重點(diǎn)介紹C/C++Build頁,C/C++Indexer頁。Properties設(shè)置第2章軟件設(shè)計(jì)流程和方法課件在上圖中點(diǎn)擊C/C++Build,出現(xiàn)下圖所示的窗口,在該窗口中,用戶關(guān)心的選項(xiàng)有Configuration下拉列表框、ToolSettings選項(xiàng)卡。Configuration下拉列表框選擇編譯工程時(shí)采用調(diào)試模式(Debug)還是發(fā)布(Release)模式。不同的模式對(duì)應(yīng)不同的編譯器設(shè)置,優(yōu)化級(jí)別和調(diào)試級(jí)別都可能不同,用戶也可以自己來設(shè)置編譯器的優(yōu)化級(jí)別和調(diào)試級(jí)別,如下圖中的ToolsSettings頁中的NiosIICompiler的General欄。選用Release模式能很大程度減小程序空間并提高程序的執(zhí)行性能。在上圖中點(diǎn)擊C/C++Build,出現(xiàn)下圖所示的窗口,在該第2章軟件設(shè)計(jì)流程和方法課件在上圖中點(diǎn)擊C/C++Indexer,出現(xiàn)如下圖所示的窗口,在該窗口中,用戶在AvailableIndexers下拉列表框中,可以選擇可用的檢索器,這里有三個(gè)選項(xiàng),第一個(gè)選項(xiàng)是不使用Indexer;第二個(gè)選項(xiàng)是FastC/C++Indexer;第三個(gè)是FullC/C++Indexer。各種Indexer的特點(diǎn)也給出了說明。借助于檢索器,用戶可以方便地找到程序文件中的相關(guān)信息。在上圖中點(diǎn)擊C/C++Indexer,出現(xiàn)如下圖所示的窗口SystemLibraryProperties的設(shè)置在工程的彈出菜單中點(diǎn)擊SystemLibraryProperties,出現(xiàn)下圖的窗口SystemLibraryProperties的設(shè)置第2章軟件設(shè)計(jì)流程和方法課件2.3運(yùn)行和調(diào)試程序調(diào)試/運(yùn)行程序之前要把嵌入式系統(tǒng)的硬件系統(tǒng)下載到FPGA中。程序的調(diào)試可以發(fā)生在下面的環(huán)境:NiosIIHardware——NiosII硬件。NiosIIInstructionSetSimulator——NiosII指令集仿真器。NiosII程序的運(yùn)行可以發(fā)生在下面的環(huán)境:NiosIIHardware——NiosII硬件。NiosIIInstructionSetSimulator——NiosII指令集仿真器。NiosIIModelSim——在ModelSim軟件環(huán)境下運(yùn)行。想要在哪個(gè)環(huán)境下調(diào)試和運(yùn)行只要通過鼠標(biāo)右鍵單擊NiosII工程,然后在彈出的菜單中選擇DebugAs/RunAs,再選擇相應(yīng)的環(huán)境,用戶還可以通過選擇Run菜單DebugAs/RunAs來實(shí)現(xiàn)同樣的功能。2.3運(yùn)行和調(diào)試程序第2章軟件設(shè)計(jì)流程和方法課件2.3.1調(diào)試/運(yùn)行環(huán)境設(shè)置但是在調(diào)試/運(yùn)行程序之前,必須先對(duì)上述的調(diào)試/運(yùn)行環(huán)境進(jìn)行設(shè)置。方法是選擇Run菜單Debug…/Run…。如果選擇執(zhí)行Run菜單中的Debug…,出現(xiàn)下圖的窗口,在窗口中,選中NiosIIHardware,雙擊或者點(diǎn)擊快捷圖標(biāo)Newlaunchconfiguration,就新建了一個(gè)硬件調(diào)試配置。對(duì)NiosII指令集仿真器有同樣的方法。對(duì)調(diào)試環(huán)境的設(shè)置主要是Targetconnection和Debugger配置頁。配置的首頁是Main配置頁,用戶一般不用修改。選擇TargetConnection配置頁,出現(xiàn)相應(yīng)的窗口。JTAGCable:進(jìn)行JTAG下載電纜的選擇。當(dāng)只有一個(gè)下載電纜是,會(huì)自動(dòng)選擇,無需設(shè)置,當(dāng)有多個(gè)下載電纜時(shí),用戶手動(dòng)進(jìn)行選擇。JTAGDevice:進(jìn)行連接在JTAG鏈上的FPGA器件的選擇,本例只有一個(gè)器件,用戶不用選擇,當(dāng)具有多個(gè)器件時(shí),用戶必須手動(dòng)進(jìn)行選擇。NiosIITerminalcommunicationdevice:進(jìn)行NiosII系統(tǒng)終端通信設(shè)備選擇,本例選擇jtag_uart。2.3.1調(diào)試/運(yùn)行環(huán)境設(shè)置第2章軟件設(shè)計(jì)流程和方法課件第2章軟件設(shè)計(jì)流程和方法課件2.3.2調(diào)試/運(yùn)行程序進(jìn)行完調(diào)試和運(yùn)行環(huán)境的設(shè)置之后,調(diào)試和運(yùn)行程序只要點(diǎn)擊Run菜單,然后選擇RunAs/DebugAs,再選擇相應(yīng)的運(yùn)行/調(diào)試環(huán)境,如NiosIIHaredware??刂婆_(tái)會(huì)顯示調(diào)試和運(yùn)行程序的信息。2.3.2調(diào)試/運(yùn)行程序2.3.3下載程序到Flash用戶可以將軟件文件、FPGA配置文件和數(shù)據(jù)文件存儲(chǔ)到flash存儲(chǔ)器中。對(duì)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論