ADS1.2開發環境的創建_第1頁
ADS1.2開發環境的創建_第2頁
ADS1.2開發環境的創建_第3頁
ADS1.2開發環境的創建_第4頁
ADS1.2開發環境的創建_第5頁
已閱讀5頁,還剩76頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章ADS1.2開發環境創建與簡介

2.1ADS1.2開發環境創建2.1.1ADS1.2概述

ADS是個集成開發環境,主要包括編譯器、鏈接器、調試器、C和C++庫等,是ARM公司推出的新一代ARM集成開發工具。最新版本是ADS1.2,該版本支持包括Windows和Linux在內的多種操作環境。ADS1.2的組成如下所述。1.編譯器ADS提供多種編譯器,以支持ARM和Thumb指令的編譯,主要有:·armcc:是ARMC編譯器。·tcc:是ThumbC編譯器。·armcpp:是ARMC++編譯器。·tcpp:是ThumbC++編譯器。·armasm:是ARM和Thumb的匯編語言編譯器。2.鏈接器

armlink是ARM鏈接器。該命令既可以將編譯得到的一個或多個目標文件和相關的一個或多個庫文件進行鏈接,生成一個可執行文件,也可以將多個目標文件部分鏈接成一個目標文件,以供進一步的鏈接。

3符號調試器

armsd是ARM和Thumb的符號調試器,能進行源碼級程序調試。用戶可以在用C或匯編語言寫的代碼中進行單步調試、設置斷點、查看變量值和內存單元的內容。

4fromELF

將ELF格式的文件轉換為各種格式的輸出文件,包括BIN格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六進制文件。FromELF命令也能夠為輸入映像文件產生文本信息,例如代碼和數據長度。

5armar

armar是ARM庫函數生成器,它將一系列ELF格式的目標文件以庫函數的形式集合在一起。用戶可以把一個庫傳遞給一個鏈接器以代替幾個ELF文件。

6CodeWarrior

CodeWarrior集成開發環境(IDE)為管理和開發項目提供了簡單多樣化的圖形用戶界面,用戶可以使用ADS的CodeWarriorIDE為ARM和Thumb處理開發用C、C++或者ARM匯編語言編寫的程序代碼。

7調試器

ADS中含有3個調試器,即AXD、Armsd和ADW/ADU。

在ARM體系中,可以選擇多種調試方式,如Multi-ICE(Multi-processorIn-CircuitEmulator)、ARMulator或Angel。

Multi-ICE是一個獨立的產品,是ARM公司自己的JTAG在線仿真器,不是由ADS提供的。ARMulator是一個ARM指令集仿真器,集成在ARM的調試器AXD中,提供對ARM處理器的指令集的仿真,為ARM和Thumb提供精確的模擬。用戶可以在硬件尚未做好的情況下開發程序代碼,利用模擬器方式調試。

·Angel是ARM公司常駐在目標機Flash中的監控程序,只需通過RS-232C串口與PC主機相連,就可以對基于ARM架構處理器的目標機進行監控器方式的調試。

C和C++庫

ADS提供ANSIC庫函數和C++庫函數,支持被編譯的C和C++代碼。用戶可以把C庫中的與目標相關的函數作為自己應用程序中的一部分,重新進行代碼的實現。這就為用戶帶來了極大的方便,針對自己的應用程序的要求,對與目標無關的庫函數進行適當的裁剪。在C庫中有很多函數是獨立于其他函數的,并且與目標硬件沒有任何依賴關系。對于這類函數,用戶可以很容易地在匯編代碼中使用。

有了這些部件,用戶就可以為ARM系列的RISC處理器編寫和調試自己的開發應用程序了。2.1.2ADS1.2的安裝ADS全稱為ARMDeveloperSuite,是ARM公司推出的新的一代ARM集成開發工具。現在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,該版本支持包Windows和Linux在內的多種操作系統。安裝步驟如下:在ADS1.2的安裝盤中運行setup.exe,安裝ARMDeveloperSuitev1.2。出現圖2-1對話框和圖2-2對話框,同意產權協義,選省缺安裝路徑(C:\ProgramFiles\ARM\vADS1.2)和典型安裝模式(Typiflcation),按Next進入下一步,出現選文件夾、編程語言和當前設定對話框,均按Next,開始安裝,如圖2-3示。安裝結束,安裝許可文件(InstallLicense),這一步可按安裝向導進行,單擊“下一步”按鈕,會出現如圖2-4和圖2-5所示的對話框。在圖2-5對話框中選瀏覽(Browser)查許可文件,在ProgramFiles\ARM\ADSV1_2\license\中選license.dat文件并打開,單擊“下一步”按鈕,如圖2-6,即可完成ADS1.2的安裝。

最后,程序還要注冊,注冊文件在ProgramFiles\ARM\ADSV1_2文件夾中,單擊注冊文件,即完成程序注冊,如圖2-7所示。2.2ADS集成開發環境的使用

2.2.1建立一個新工程運行ADS1.2集成開發環境(CodeWarriorforARMDeveloperSuite),點擊File|New,在New對話框中,共有7項,ARMExecutableImage是ARM的通用模板。選中它即可生成ARM的執行文件,如圖2-8所示。還要在Projectname欄中輸入項目的名稱,以及在Location中輸入其存放的位置,按確定保存項目。2.2.2開發環境設置在新建的工程中,選擇Debug版本,如圖2-9,使用Edit|DebugSettings菜單對Debug版本進行參數設置。

在如圖2-10中,點擊DebugSetting按鈕,彈出2-11圖,選中TargetSetting

項,在Post-linker欄中選中ARMfromELF項。按OK確定。這是為生成可執行的代碼的初始開關。

3.在如圖2-12中,點擊ARMAssembler,在ArchitectureorProcesser欄中選ARM920T。這是項目選擇的CPU類型。

4.在如圖2-13中,點擊ARMCCompliler,在ArchitectureorProcesser欄中選ARM920T。這是要編譯的CPU核。5.在如圖2-14中,點擊ARMlinker,在outpur欄中設定程序的代碼段地址,以及數據使用的地址。圖中的ROBase欄中填寫程序代碼存放的起始地址,RWBase欄中填寫程序數據存放的起始地址。該地址是屬于SDRAM的地址。在options欄中,如圖2-15,Imageentrypoint要填寫程序代碼的入口地址,其他保持不變,如果是在SDRAM中運行,則可在0x30000000—0x33ffffff中選值,這是64MSDRAM的地址,但是這里用的是起始地址,所以必須把你的程序空間給留出來,并且還要留出足夠的程序使用的數據空間,而且還必須是4字節對齊的地址(ARM狀態)。通常入口點Imageentrypoint為0x30000000,ro_base也為0x30000000。

在Layout欄中,如圖2-16,在Placeatbeginningofimage框內,需要填寫項目的入口程序的目標文件名,如,整個工程項目的入口程序是2410init.s,那么應在Object/Symbol處填寫其目標文件名2410init.o,在Section處填寫程序入口的起始段標號。它的作用是通知編譯器,整個項目的開始運行,是從該段開始的。6.在如圖2-17中,即在DebugSetting對話框中點擊左欄的ARMfromELF項,在Outputfilename欄中設置輸出文件名*.bin,前綴名可以自己取,在Outputformat欄中選擇Plainbinary,這是設置要下載到flash中的二進制文件。圖2-17中使用的是test.bin。7.到此,在ADS1.2中的基本設置已經完成,可以將該新建的空的項目文件作為模板保存起來。首先,要將該項目工程文件改一個合適的名字,如S3C2410ARM.mcp等,然后,在ADS1.2軟件安裝的目錄下新建一個合適的模板目錄名,如,S3C2410ARMExecutableImage,再將剛剛設置完的S3c2410ARM.mcp項目文件存放到該目錄下即可。

8.新建項目工程后,就可以執行菜單Project|AddFiles把和工程所有相關的文件加入,ADS1.2不能自動進行文件分類,用戶必須通過Project|CreateGroup來創建文件夾,然后把加入的文件選中,移入文件夾。或者鼠標放在文件填加區,右鍵點擊,如圖2-18所示。先選AddFiles,加入文件,再選CreateGroup,創建文件夾,然后把文件移入文件夾內。讀者可根據自己習慣,更改Edit|Preference窗口內關于文本編輯的顏色、字體大小,形狀,變量、函數的顏色等等設置。如圖2-19。2.2.3ADS1.2下仿真、調試

在ADS1.2下進行仿真調試,首先需要一根仿真調試電纜和JTAG仿真器,用調試電纜把JTAG仿真器和上位機并口相連,JTAG仿真器的驅動程序為兩個動態鏈接庫,也要事先安裝。 打開調試軟件AXDDebugger。點擊File|loadimage加載可執行文件xx.axf,打開超級終端,設置其參數為:波特率為115200,數據位數8,奇偶校驗無,停止位無1,數據流控無。點擊全速運行,在我們的例子程序中,出現圖2-20的界面:最后介紹調試按鈕,調試按鈕在程序進入AXDDebugge狀態時會出現在主菜單項,主要幾個調試按鈕如圖2-21所示。圖2-21,左起第一個是全速運行,第二個是停止運行,第三個跳入函數內部單步執行,第四個把一個函數做為一個語句單步執行,第五個跳出函數。關于在ADS1.2下進行仿真調試,下面還要祥細介紹。2.2.4其他開發環境介紹

IAR(瑞典愛亞軟件技術咨詢公司)EmbeddedWorkbenchforARM是IARSystems公司為ARM微處理器開發的一個集成開發環境,下面簡稱IAREWARM。比較其他的ARM開發環境,IAREWARM具有入門容易、使用方便和代碼緊湊等特點。故在這里做簡單介紹。IARSystems公司目前推出的最新版本是IAREmbeddedWorkbenchforARMversion4.42,并提供一個32k代碼限制學習版或30天時間限制的免費評估版,可以到IAR公司的網站/ewarm下載。IAREWARM中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM內核、外部設備甚至中斷的軟件運行環境。從中可以了解和評估IAREWARM的功能和使用方法。IAREWARM中包含一個全軟件的模擬程序(simulator)。用戶不需要任何硬件支持就可以模擬各種ARM內核、外部設備甚至中斷的軟件運行環境。從中可以了解和評估IAREWARM的功能和使用方法。

IAREmbeddedWorkbenchforARMversion4.42是一個針對ARM處理器的集成開發環境,包含項目管理器、編輯器、編譯連接工具和支持RTOS(嵌入式實時控制系統)的調試工具,在該環境下可以使用C/C++和匯編語言方便地開發嵌入式應用程序。IAREWARM的主要模塊如下:

.項目管理器

.功能強大的編輯器

.高度優化的IARARMC/C++Compiler

.IARARMAssembler

.1個通用的IARXLINKLinker

.IARXAR和XLIB建庫程序和IARDLIBC/C++運行庫

.IARC-SPY調試器(先進的高級語言調試器)

.命令行實用程序

以下介紹一下EWARM4.42版本及其相關配套硬件的一些特點:

1.IAREWAM軟件的特點

①EWARM4.42版基本特點

.完善的ARM內核支持

.最新支持到ARM11及CortexM3內核

.支持的其他ARM內核

.ARM7(ARM7TDMI,ARM7TDMI-S,ARM720T)

.ARM9(ARM9TDMI,ARM920T,ARM922T,ARM940T,ARM9E,ARM9E-S,

ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E-S)

.ARM10(ARM10E,ARM1020E,ARM1022E,ARM1026EJ-S)

.XScale(XScale,XScale-IR7)

.更加客戶化地提供芯片級的支持

.完備的各廠商ARM處理器的C/C++和匯編語言外設寄存器定義文件

支持的芯片廠商有AnalogDevices、ARM、Atmel、CirrusLogic、Freescale、Intel、NetSilicon、

OKI、Philips、Samsung、Sharp、ST和TI等

.支持AnalogDevices、Atmel、Freescale、OKI、Philips、ST和TI等廠商的ARM處理器的FlashLoader程序.軟件集成了400余個代碼例程,對應于各種不同的芯片,位于...\arm\src\examples目錄下

.進一步改進了編譯器速度優化,重寫了的浮點運算庫

.對更多嵌入式操作系統的支持

新增支持OSEK類操作系統的OSEKRun-TimeInterface(ORTI)新增支持OSEEpsilonRTOS的KernelAwareness調試

.新增支持embOS、SMX、NORTi等的支持

.調試器的增強功能

.對堆棧運行的監測功能

.配合IARJ-Link仿真器的新增功能

.J-LinkTCP/IP服務器

.調試器和IARJ-Link仿真器協同配合,實現對ARM處理器的多核調試

.對IARJ-Trace仿真器提供全面的支持

.在C-SPY模擬器中可執行Trace的模擬

.支持同一芯片上多顆Flash的FlashLoader程序,以及通用的FlashLoader開發指南

②EWARM軟件在芯片級支持方面的特色

.完備的各廠商ARM處理器的C/C++和匯編語言外設寄存器定義文件

.大量適合于嵌入式代碼的編程語言擴展特性,包括存儲器關鍵字,函數,中斷函數,存儲器映射I/O等

.針對評估板的例程,包含IAR、AnalogDevices、AijiSystem、ARM、Atmel、CirrusLogic、

Freescale、Keil、OKI、Olimex、Pasat、Philips、Phytec、ST和TI等廠家的開發.支持ARM或Thumb模式下大至4G字節的應用程序

.每個函數都能選擇在ARM或Thumb模式下編譯

.可生成VFP向量浮點協處理器代碼

.支持AnalogDevices、Atmel、Freescale、OKI、Philips、ST和TI等廠商的ARM處

器的FlashLoader程序

.支持ARMAngelDebugmonitor③EWARM編譯器的軟件特色.先進的通用編譯器優化和針對特定處理器的速度優化及存儲器優化功能.輕量運行庫,用戶可以根據需要自行配置,提供全部源代碼.靈活的存儲器控制,允許詳細地為代碼和數據分配地址.去除不需要的函數和變量.C/C++變量和函數連接時全局類型檢查.可選的校驗和生成功能,用于運行時映象校驗.自動將代碼和數據放置到非連續的存儲器區域.強大的可重定位宏匯編器,支持豐富的命令集和操作符④EWARM調試器的軟件特色.完全集成的源代碼和反匯編程序調試器.非常細化的執行控制(函數調用級步進).復雜的代碼和數據斷點.豐富的數據監視功能.Locals,Watch,Auto,LiveWatch和QuickWatch等變量查看窗口.寄存器和存儲器查看窗口.支持STL容器.C/C++調用棧窗口,同時還可以顯示將要進入的函數.雙擊調用鏈上的任何函數將更新編輯器、局部變量、寄存器、變量查看和反匯編窗口,以顯示在該函數調用時的狀態.跟蹤功能,可以檢查執行的歷史記錄。在跟蹤窗口中移動時將更新編輯器和反匯編窗口以顯示合適的位置。.控制臺I/O仿真.中斷和I/O模擬仿真.類似C語言的宏系統,可擴充調試器的功能.由主機執行的應用程序系統調用仿真.代碼覆蓋率和執行時間分析工具.通用的FlashLoader程序及開發指南.同時支持多顆Flash的FlashLoader程序.支持OSEKRun-TimeInterface(ORTI).提供為調試器擴充第三方功能的軟件開發包,如RTOS調試擴充和仿真器驅動擴充.命令行調試工具⑤IARC-SPY支持的調試方法.IARJ-LinkJTAG接口(支持所有ARM7和ARM9核,通過USB或TCP/IP連接).RDI接口類的第三方仿真器(AbatronBDI1000&BDI2000,EPIMajic,AshlingOpella,AijiOpenICE,SignumJTAGjet,ARMMulti-ICE等).MacraigorWiggler,Raven,mpDemon和USBdemon等調試接口.EPIJeeni仿真器支持.IAR的ROM-Monitor.ARM公司的AngelROM-Monitor(用于Atmel和CirrusLogic的評估板)⑥EWARM圖形化的集成開發環境的界面特色.分層次的工程組織.同一工作空間中允許存放多個工程.可停靠的窗口和多視圖.源代碼瀏覽.創建和維護庫的工具.可以和源代碼控制系統相集成.文本編輯器.支持多字節字符(漢字).上下文相關的幫助系統.根據句法著色.無限制的undo/redo.搜尋、替換和增量搜尋.Goto.書簽.錯誤標簽:查閱前一個/下一個.自動括號配對.智能縮排.類似網頁瀏覽器的前向/后向源碼查閱.代碼斷點的設置/清除/使能/禁止.命令行編譯連接工具⑦EWARM的編程語言和標準.遵循ISO/ANSIC94(帶有一些從C99標準中挑選的特性)標準的C編程語言.嵌入式C++擴展,支持模板、多重繼承和虛擬繼承、名字空間以及其它不增加執行時間或存儲器開銷的C++特性。完整的嵌入式C++庫還包含字符串、流等特性。

.IEEE-754浮點運算規則.MISRAC檢查器.支持大量工業標準的調試和映象文件格式(如ELF/DWARF),與大多數常見的調試器和仿真器兼容⑧用戶幫助.完備的例程和工程模板。.上下文相關的聯機幫助系統,帶有庫函數查閱功能.印刷好的用戶指南,帶有詳細的step-by-step教程.友好、詳盡和精確的錯誤信息和警告信息2.3用AXD進行代碼仿真、調試

2.3.1AXD簡介ADX(ARMextendedDebugger)是ADS軟件中獨立于CodeWarriorIDE的圖形軟件,可從CodeWarriorforARMDeveloperSuite中進入ADX進行調試,或在Windows下選擇“程序”∣ARMDeveloperSuitev1.2∣AXDDebugger進入調試。要使用AXD必須首先有生成包含調試信息的程序,即由CodeWarriorforARMDeveloperSuite編譯生成含有調試信息的可執行ELF格式的映像文件(*.axf)。1在AXD中打開調試文件在CodeWarriorforARMDeveloperSuite界面中,點擊Debugger進入AXD調試界面。選擇File∣Loadimage命令,打開Loadimage對話框,找到要裝入的.axf映像文件,單擊“打開”按鈕,就可以把映像文件裝載到目標內存中,如圖2-22所示。利用Exeute菜單中的子菜單項對可執行映像文件進行調試,各選項的含義如下:.選擇Go子菜單或按F5鍵,將全速運行代碼。.選擇Stop子菜單或按Shift+F5鍵,將停止運行代碼。.選擇StepIn子菜單或按F8鍵,以單步執行代碼,若遇到函數,則進入函數內執行。.選擇Step子菜單或按F10鍵,以單步執行代碼,若遇到函數,則把函數看成一條語句單步執行。.選擇StepOut子菜單或按Shift+F8鍵,在StepIn單步執行代碼進入函數內后,若選該子菜單,則可以從函數中跳出返回到上一級程序執行。.選擇RunTocursor子菜單或按F7鍵,以全速運行到光標處停下。.選擇ShowExecutionContext子菜單,可顯示執行的內容。.選擇DeleteAllBreakpoint子菜單,清除所有的斷點。2.查看存儲器、寄存器、變量內容利用AXD菜單選項ProcessorViews和SystemViews中的子菜單選項可查看寄存器、變量值,還可以查看某個內存單元的數值等。各子菜單的含義如下:選擇Registers子菜單或按Ctrl+R鍵,可查看或修改目標板處理器中寄存器中的值.選擇Watch子菜單或按Ctrl+E鍵,可對處理器設置觀察點,觀察點可以是寄存器、地址等,但不能修改。特別注意:ProcessorViews菜單下的Watch只能觀察處理器,而SystemViews菜單下的Watch或按Alt+E鍵時可對目標板上的任何資源建立觀察,可增加或刪除觀察點。.選擇Variables菜單或按Ctrl+E鍵,可查看或修改當前可執行的映像文件(程序)中的變量值,這些變量可以是局部變量、全局變量、類屬變量。可增加或刪除查看或修改的變量。.選擇Memory子菜單或按Ctrl+M鍵,可查看或修改存儲器中的值。如在程序執行前,可以先查看兩個宏變量IOPMOD和IOPDATA的當前值。方法是:.選擇AXD的ProcessorViews∣Memory命令或按Ctrl+M鍵后,查看或修改存儲器中的值,如圖2-23所示。3.在MemoryStartaddress文本框圖上,用戶可以根據要查看或修改的存儲器地址輸入起始地址,在下面的表格中會列出連續的64個地址。因為I/O模式控制寄存器和I/O數據控制寄存器都是32位的控制寄存器,所以從0x00000000開始的連續4個地址空間存放的是I/O模式控制寄存器的值,從圖中可以讀出該控制寄存器的值,數據控制寄存器的內容,注意因為用的是小端模式,所以讀數據時注意高地址中存放的高字節,低地址存放的是低字節。4.斷點設置、查看在程序調試時經常設置斷點,即在程序的某處設置斷點,當程序執行到斷點處即可停下,這時開發人員可通過前面的方法查看寄存器、存儲器或變量的值,以判定程序是否正常。設置斷點的方法是將光標移到需設置斷點處,使用快捷鍵F9在此處設置斷點。查看斷點的方法是:選擇SystemViews∣breakpointview命令或按Alt+K鍵,在斷點狀態對話框中右擊,利用快捷菜單可增加或刪除斷點。按F5鍵,程序將運行到斷點,如果要進入函數內查看如何運行的,可以選擇Execte∣StepInw命令或按下F8鍵,進入到子函數內部進行單步程序的調試。2.3.2JTAG概述

JTAG是JointTestActionGroup(聯合測試行動小組)的簡稱,由于IEEE1149.1標準是由JTAG這個組織最初提出的,最終由IEEE批準并且標準化的。所以IEEE1149.1這個標準一般也俗稱JTAG調試標準。JTAG標準主要用于芯片內部測試及對系統進行仿真、調試。JTAG技術是一種嵌入式調試技術,它在芯片內部封裝了專門的測試電路TAP(TestAccessPort測試訪問口),通過專用的JTAG測試工具對內部節點進行測試。目前大多數比較復雜的器件都支持JTAG協議,如ARM、DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為測試模式選擇、測試時鐘、測試數據輸入和測試數據輸出。JTAG測試允許多個器件通過JTAG接口串聯在一起,形成一個JTAG鏈,能實現對多個器件分別測試。JTAG接口還常用于實現ISP(In-SystemProgrammable在線系統可編程)功能,如對FLASH器件進行編程等。在JTAG調試中,邊界掃描(Boundary-Scan)是一個很重要的概念。邊界掃描技術的基本思想是在靠近芯片的輸入輸出管腳上增加一個移位寄存器單元。因為這些移位寄存器單元都分布在芯片的邊界上,所以被稱為邊界掃描寄存器(Boundary-ScanRegisterCell)。芯片處于調試狀態的時候,這些邊界掃描寄存器可以將芯片和外圍的輸入輸出隔離開來。通過這些邊界掃描寄存器單元,可以實現對芯片輸入輸出信號的觀察和控制。如果需要捕獲芯片某個管腳上的輸出,首先需要把該管腳上的輸出裝載到邊界掃描鏈的寄存器單元中去,然后通過TDO輸出,這樣,我們就可以從TDO上得到相應管腳上的輸出信號。如果要在芯片的某個管腳上加載一個特定的信號,則首先需要通過TDI把期望的信號移位到與相應管腳相連的邊界掃描鏈的寄存器單元里去,然后將該寄存器單元的值加載到相應的芯片管腳。由于在正常的運行狀態下,這些邊界掃描寄存器對芯片來說是透明的,所以正常的運行不會受到任何影響。這樣,邊界掃描寄存器就提供了一個便捷的方式,用以觀測和控制所需要調試的芯片。另外,芯片輸入輸出管腳上的邊界掃描(移位)寄存器單元可以相互連接起來,在芯片的周圍形成一個邊界掃描鏈(Boundary-ScanChain)。一般的芯片都會提供幾條獨立的邊界掃描鏈,用來實現完整的測試功能。邊界掃描鏈可以串行地輸入和輸出,通過相應的時鐘信號和控制信號,可以方便地觀察和控制處在調試狀態下的芯片。JTAG仿真器需要設備驅動程序驅動,在我們使用的教學實驗系統(EDUKIT-Ⅲ),JTAG仿真器的驅動程序為兩個動態鏈接庫(EasyICEArm9Plus.dll,EasyICEArm7Plus.dll),把這兩個文件拷貝到C:\EmbestIDE\Bin\Device\路徑下,即可正常使用。2.3.3Nor和NandFlash的區別和使用

Nor和Nand是現在市場上兩種主要的非易失閃存技術。Intel公司于1988年首先開發出NorFlash技術。這項技術的開發和投放市場徹底改變了原先由EPROM和EEPROM一統天下的局面。緊接著,1989年東芝公司發表了NandFlash結構,強調降低每比特的成本,提供更高的性能,并且像磁盤一樣可以通過接口輕松升級。在具有NandFlash接口的系統中,NandFlash存儲器可以替代NorFlash存儲器使用。許多業內人士也搞不清楚Nand閃存技術相對于Nor技術的優越之處,因為大多數情況下閃存只是用來存儲少量的代碼,這時Nor閃存更適合一些。而Nand則是高數據存儲密度的理想解決方案。Nor的特點是XIP(eXecuteInPlace芯片內執行)特性,這樣,應用程序可以直接在Flash閃存內運行,不必再把代碼讀到系統RAM中。Nor的傳輸效率很高,在1~4MB的小容量時具有很高的成本效益,但是很低的寫入和擦除速度大大影響了它的性能。Nand結構能提供極高的單元密度,可以達到高存儲密度,并且寫入和擦除的速度也很快。應用Nand的困難在于Flash的管理和需要特殊的系統接口。1.性能比較Flash閃存是非易失存儲器,可以對稱作塊的存儲器單元塊進行擦寫和再編程。由于任何Flash器件的寫入操作只能在空或已擦除的單元內進行,所以大多數情況下,在進行寫入操作之前必須先執行擦除。Nand器件執行擦除操作是十分簡單的,而Nor則要求在進行寫入前先要將目標塊內所有的位都寫為0。由于擦除Nor器件時是以64KB~128KB的塊進行的,執行一個寫入/擦除操作的時間為5s,與此相反,擦除Nand器件是以8KB~32KB的塊進行的,執行相同的操作最多只需要4ms。執行擦除時塊尺寸的不同進一步拉大了Nor和Nand之間的性能差距,統計表明,對于給定的一套寫入操作,尤其是更新小文件時,在基于Nor的單元中進行需要更多的擦除操作。這樣,當選擇存儲解決方案時,設計師必須權衡以下的各項因素:

.Nor的讀速度比Nand稍快一些。.Nand的寫入速度比Nor快很多,Nand的4ms擦除速度遠比Nor的5s快。.大多數寫入操作需要先進行擦除操作。.Nand的擦除單元更小,相應的擦除電路更少。2.容量和成本。NandFlash的單元尺寸幾乎是Nor器件的一半,由于生產過程更為簡單,Nand結構可以在給定的模具尺寸內提供更高的容量,也就相應地降低了價格。在Nand閃存中每個塊的最大擦寫次數是一百萬次,而Nor的擦寫次數是十萬次。NorFlash占據了容量為1MB~16MB閃存市場的大部分,而NandFlash只是用在8MB~128MB的產品當中,這也說明Nor主要應用在代碼存儲介質中,Nand適合于數據存儲。Nand在CompactFlash、SecureDigital、PCCards和MMC存儲卡市場上所占份額最大。3.接口差別。NorFlash帶有SRAM接口,有足夠的地址引腳來尋址,可以很容易地存取其內部的每一個字節。基于Nor的閃存使用非常方便,可以像其他存儲器那樣連接,并可以在上面直接運行代碼。Nand器件使用復雜的I/O口來串行存取數據,各個產品或廠商的方法可能各不相同。8個引腳用來傳送控制、地址和數據信息。Nand的讀寫操作采用512字節的塊,這一點與硬盤管理操作類似,顯然基于Nand的存儲器就可以取代硬盤或其他塊設備。在使用Nand器件時,必須先寫入驅動程序,才能繼續執行其他操作。向Nand器件寫入信息需要相當的技巧,因為設計師決不能向壞塊寫入,這就意味著在Nand器件上自始至終都必須進行虛擬映射。幸運的是,S3C2410微處理器支持NandFlash接口,大大方便了在嵌入式系統設計中的應用。鑒于兩種存儲器各自的優缺點,在S3C2410嵌入式系統中,對NorFlash和NandFlash電路都進行了設計,以方便使用。2.3.4燒寫Flash

程序調試結束,要將其可執行文件燒寫(或稱固化)到目標機中Flash運行,這個過程要通過一個轉門的下載軟件來進行,以EmbestOnLineFlashProgrammerforARM為例,來說明該軟件的安裝和使用。1.安裝FlashProgrammerFlashProgrammer安裝過程比較簡單,運行FlashProgrammer安裝包中的Setup.exe,按照提示一步步執行即可。FlashProgrammer安裝程序將自動區分電腦是否已安裝EmbestIDE軟件的情況:①電腦已安裝EmbestIDE軟件,安裝程序將會把FlashProgrammer缺省安裝到“EmbestIDE安裝目錄\Tools\FlashProgrammer”目錄,見圖2-24。同時安裝程序將自動探測是否安裝與IDE軟件共享的設備模塊和驅動程序,安裝完畢后電腦無需重新啟動。如果IDE已注冊,軟件可直接運行。②電腦未安裝EmbestIDE軟件,安裝程序將會把FlashProgrammer缺省安裝到“ProgramFiles\Embest\FlashProgrammer”目錄,安裝完畢后需要重新啟動。軟件正常運行時需要注冊。軟件安裝完成后將缺省建立EmbestTools程序文件夾,包含執行程序和幫助的快捷方式。2.FlashProgrammer的功能點擊FlashProgrammer圖標,出現圖2-25對話框,在第一行有四個一級菜單,下面分別介紹。①文件菜單文件菜單用于保存、打開用戶設置的編程配置數據文件,該文件一般以*.cfg形式存在。通過文件菜單,用戶還可以將已打開的編程配置數據文件里另存為其他文件,以及打開最近打開過的四個編程配置文件。文件菜單各子菜單命令如表2-1所示。表2-1文件菜單

圖2-25FlashProgrammer對話框②設置菜單設置菜單僅包含Configure子菜單。功能見表2-2表2-2設置菜單選擇Setting>Configure…子菜單,將彈出編程設備配置對話框,如圖2-26所示:連接設備(RemoteDevice),該下拉框中顯示所有本軟件支持的編程設備,用戶可以選擇其中一種,下拉框下方將顯示對應該設備的說明和版本。通訊類型(Communicationtype),設置該設備與主機使用的連接方式和連接到的主機通訊口。通訊口(ParallelPort),按實際連接設置。③Tools菜單Tools菜單設置菜單僅包含Option…子菜單,功能見2-3。表2-3Tools菜單選擇Tools>Option…子菜單,將彈出應用選項對話框,見圖2-27輸出信息記錄文件(Outputinformationtologfile),選擇該檢查框則應用程序將所有輸出的提示信息和錯誤信息記錄到安裝目錄下的Info.log文件。編程時載入扇區所有數據(Loadingallsectordatawhenprogramming),部分Flash芯片編程時需要一次性載入扇區全部數據,則用戶可以選擇本選項完成編程操作。超時(TimeOut),設置超時時間,單位為秒。測試RAM區大小(TestRamSize),設置目標測試(TargetTest)時測試的RAM存儲區大小,單位為Kbyte;根據本軟件運行時需要,一般情況下應設置為4K,對于必須一次性載入一個扇區數據的Flash芯片,應該設置為4K+扇區大小。執行FLASH操作前復位次數(ResetCountBeforeFlashCommand),設置執行編程、擦除、保護等命令前復位芯片的次數。④Help菜單Help菜單該菜單最重要的是Contents子菜單,內部有我們需要的許多資料,特別是用戶手冊,對我們正確使用FlashProgrammer有很大幫助。幫助菜單項見表2-4:3.FlashProgrammer的使用NetStart評估板是一款基于SAMSUNG公司ARM7芯片S3C4510的評估電路板,板上包含2M字節的Flash芯片,型號是AMD公司AM29LV160DB,以及16M字節的SDRAM,板上應用程序為ucLinux,是目前比較流行的一款評估板。我們以NetStart為例來說明FlashProgrammer的使用。NetStart評估板使用FLASH前64K存儲空間,即1到4號扇區保存BootLoader軟件,該軟件用于啟動固化在5到35號扇區的ucLinux,以及燒寫5到35號扇區內容。本節講述如何使用FlashProgrammer對NetStart評估板Flash進行編程,用戶可以參照本實例對其他電路板進行編程配置。選擇合適的編程設備并設置通訊類型和通訊通道。②處理器設置選擇處理器CPU子對話框,如圖2-29所示:編程設備設置選擇Setting>Configure…子菜單,彈出編程設備配置對話框,如圖2-28所示:選擇SAMSUNG公司S3C4510處理器,選擇小端模式,按表2-5設置以下寄存器:FLASH芯片設置選擇FLASH子對話框,如圖2-30所示:圖2-30FLASH對話框選擇AMD公司AM29LV160B/DB芯片,選擇訪問寬度為16位,選擇芯片數目為1片,設置Flash起始地址為為0x180000,如果要燒寫BootLoader程序,選擇扇區范圍為1到4,如果要燒寫ucLinux,選擇扇區范圍為5到35。編程數據設置選擇編程子對話框,如圖2-31所示:設置RAM起始地址為0,選擇需要編程的BIN格式文件,如果需要上載,選擇上載文件。圖2-31編程數據設置5目標板測試選擇處理器CPU子對話框,點擊目標板測試TargetTest按鈕,開始目標測試,測試時彈出以下對話框圖2-31,通知SYSCFG寄存器寫入值和讀取值不相同,原因是SYSCFG寄存器中包含S3C4510器件標識,因此選擇YES繼續測試。彈出類似的對話框均選擇YES繼續測試。圖2-32目標板測試對話框RAM區測試完后,開始獲取Flash設備標識號,如果獲取的Flash標識和保存的標識相同,表示測試成功,輸出信息如下圖:圖2-33表示測試成功對話框6FLASH編程

用戶可以點擊編程按鈕進行編程操作或其他Flash操作。2.3.5程序的運行

程序固化到FLASH中后,運行前往往將其復制到SDRAM中去,這樣可以提高運行速度,作者在科研工作中,因工作需要,編寫了一段將程序從FLASH中復制到DSRAM中去的C語言程序,可供參考,其中ARM9init(void)程序略。//------------------------------------------------------------------------------//主程序//------------------------------------------------------------------------------#include"def.h"#include"2410addr.h"#include"2410lib.h"#defineARM_ADDR0X30000000;//定義SDRAM地址void(*run)(void);//定義函數指針voidARM9init(void);voidCopyFromFlashToRAM(U32*FlashAddr,U32*ArmAddr,U32ul);voidcopy(void);voidmain(void){run=(void(*)(void))ARM_ADDR;ARM9init();copy();run();}//----------------------------------------------------------------------------//復制程序//----------------------------------------------------------------------------CopyFromFlashToRAM(U32*pulFlashAddr,U32*pulArmAddr,U32ul){U32*pulSource=pulFlashAddr;U32*pulDest=pulArmAddr;U32i; ul/=4;for(i=0;i<ul;i++){*pulDest++=*pulSource++;}}//-----------------------------------------------------------------------------//調復制程序//-----------------------------------------------------------------------------copy(void){U32*p1;U32*p2;P1=(U32*)0x00200000;P2=(U32*)0x30000000;CopyFromFlashToRAM(p1,p2,0x20000);}2.4ARMC語言程序的基本規則和系統初始化程序

2.4.1ARM使用C語言編程基本規則在應用系統的程序設計中,若所有的編程任務均由匯編語言來完成,其工作量巨大,并且不易移植。由于ARM的程序執行速度較高,存儲器的存儲速度和存儲量也很高,因此,C語言的特點充分發揮,使得應用程序的開發時間大為縮短,代碼的移植十分方便,程序的重復使用率提高,程序架構清晰易懂,管理較為容易等等。因此,C語言的在ARM編程中具有重要地位。在ARM程序的開發中,需要大量讀寫硬件寄存器,盡量縮短程序的執行時間,因此部分初始化代碼一般使用匯編語言來編寫,比如ARM的啟動代碼,ARM的操作系統的移植代碼等,除此之外,絕大多數代碼可以使用C語言來完成。C語言使用的是標準的C語言,ARM的開發環境實際上就是嵌入了一個C語言的集成開發環境,只不過這個開發環境和ARM的硬件緊密相關。在使用C語言時,有時要用到和匯編語言的混合編程。當匯編代碼較為簡潔,則可使用直接內嵌匯編的方法,否則,將匯編程序以文件的形式加入項目當中,通過ATPCS(ARM/ThumbProcedureCallStandard)的規定與C程序相互調用與訪問。ATPCS,就是ARM、Thumb的過

溫馨提示

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

評論

0/150

提交評論