基于FPGA的WEB服務器設計_第1頁
基于FPGA的WEB服務器設計_第2頁
基于FPGA的WEB服務器設計_第3頁
基于FPGA的WEB服務器設計_第4頁
基于FPGA的WEB服務器設計_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、基于FPGA的WEB服務器設計與實現FPGA課程設計題目: 基于FPGA的WEB服務器設計與實現 I摘要設計并實現了基于 FPGA 的嵌入式WEB服務器, 簡單介紹了SOPC技術及構建方法和嵌入式WEB服務器;論述了該WEB服務器硬件和軟件設計過程,在FP GA中以Nios II軟核處理器為主控制器,實時多任務操作系統C/ OS-II為軟件運行平臺,Niche st ack TCP/ IP為應用層通信協議;外擴Flash、SRAM、SDRAM存儲器芯片和網絡控制芯片,用戶在IE瀏覽器中通過文件系統可以瀏覽存儲在FL AS H芯片中的網頁,由于CPU本身是以軟核的方式實現,其功能可根據需要進行定

2、制,非常靈活;設計具有靈活、集成度高、開發周期短等優點;設計實現的基于FP GA的嵌入式WEB服務器能夠達到預期的效果。關鍵詞 : FPGA ; SOPC;嵌入式Web ; Nios II ; C/ OS - II ; Niche stack TCP/ IPAbstract Embedded web server is designed and implemented based on FPGA. SOPC technologys features and its construction method and embedded web server are briefly introduce

3、d. Subsequently implementation of embedded web server is detailedly discussed in terms of hardware and software, thereinto uses NiosII soft intellectual property processor as primary controller in FPGA , real-time multitasks operating system C/OS-II as running platform of application software , and

4、Niche stack TCP/ IP as communication protocol of application layer . Foreign expansion Flash, SRAM ,SDRAM memory chips. Consumers can use IE to browse over web page which is stored in Fl ash through the file system. The function of the system can be customized according to different requirement , be

5、cause CPU is configured by soft IP , its constitute is very flexible , it has many advantages such as flexible design , optimum scale integration and short period of development . Experiment result s show that it can implemented all functions perfectly.Key words : FPGA ; SOPC ; embedded Web; NiosII

6、;C/ OS - II ; Nichestack TCP/IP IITOC o 1-3 h u HYPERLINK l _Toc17962 摘要 - 33 -第一章 緒論1.1 選題背景隨著Internet的發展,各種設備與Internet相結合已成為了一種發展趨勢。嵌入式Web服務器可以提供豐富的用戶界面,并進行進一步的開發豐富嵌入式功能。具有成本低、體積小、高可靠、微功耗、環境適應能力強等諸多優勢, 在通信和工業控制等領域正得到日益廣泛的應用。本文設計的的Web服務器是基于FPGA和SOPC技術的NiosII軟核處理器。SOPC是基于大規模FPGA的單片機系統。SOPC將盡可能大而完整的電

7、子系統 , 包括嵌入式處理器系統、接口系統、硬件協處理器或加速系統、DSP系統、數字通信系統、存儲電路以及普通數字系統等,在單一FPGA中嵌入實現。NiosII是一個用戶可定制的CPU,用戶可以增加新的外設、新的指令,分配外設的地址等。用戶可以在客戶端通過IE瀏覽器對服務器進行訪問,瀏覽存儲在Flash芯片中的網頁。1.2設計要求Web服務器也稱為WWW(WORLD WIDE WEB)服務器,主要功能是提供網上信息瀏覽服務。Web服務器是可以向發出請求的瀏覽器提供文檔的程序。服務器是一種被動程序:只有當Internet上運行在其他計算機中的瀏覽器發出請求時,服務器才會響應。Internet上的

8、服務器也稱為Web服務器,是一臺在Internet上具有獨立IP地址的計算機,可以向Internet上的客戶機提供WWW、Email和FTP等各種Internet服務。Web服務器是指駐留于因特網上某種類型計算機的程序。當Web瀏覽器(客戶端)連到服務器上并請求文件時,服務器將處理該請求并將文件反饋到該瀏覽器上,附帶的信息會告訴瀏覽器如何查看該文件(即文件類型)。服務器使用HTTP(超文本傳輸協議)與客戶機瀏覽器進行信息交流。本設計是基于Nios II處理器的HTTP網頁服務器,它藉由MicroC/OS-II操作系統上的NicheStack TCP/IP協議棧來實現,網頁內容存放開發板的Fla

9、sh芯片中。網頁服務器可以處理基本的一些網絡請求,包括HTML,JPEG,GIF,PNG,JS,CSS,SWF,ICO等文件,并通過在網頁上進行相應設置對開發板的相應模塊進行操作。 系統的整體架構圖1.3實現方法1.3.1硬件法根據已有的TCP/IP芯片直接作為以太網口。該方法的優點是可靠性高,執行速度快,但硬件電路復雜,價格昂貴,硬件成本高。1.3.2軟件法將TCP/IP協議以軟件的方式寫入系統的ROM中。但是TCP/IP協議棧比較龐大,在嵌入式系統中很難完整地支持TCP/IP協議棧,因此需要精簡TCP/IP協議,保留與需要相關的部分,減少對系統資源的占用。通過對上述方法的比較,本設計采用第

10、二種方法。使用Altera公司的NiosII軟核處理器與NicheStack TCP/IP協議棧相結合的方法來實現該Web服務器的功能。第二章 設計方案概述2.1硬件設計SOPC系統 Nios II處理器定時器JTAG UART片上存儲單元SGDMA控制器三速以太網控制器外圍硬設 LED七段數碼管LCD顯示屏系統需要使用的硬件器件有:FPGA芯片以太網PHY芯片LED燈LCD顯示屏七段數碼管SSRAM芯片Flash芯片四位顯示數碼管圖片LED燈LCD顯示屏需要系統搭建的組件:NiosII CPUJTAG UART接口片內存儲器Avalon三態總線橋SSRAM接口Flash接口并行輸入/輸出模塊

11、(PIO)定時器三速以太網接口DMA總線控制器硬件的主要設計步驟為:在SOPC Builder中構建SOPC系統。包括NiosII軟核CPU、存儲器接口(SDRAM、SRAM、Flash等)、以太網接口等。創建SOPC系統的系統描述文件和原理圖模型;通過原理圖將生成的SOPC系統模塊添加到工程中,并在原理圖中繼續為電路添加輸入、輸出、雙向引腳及PLL等其他組件;為工程分配引腳并編譯,將編譯的工程下載至開發板,運行并調試;2.2軟件設計軟件開發的部分分為兩個部分:客戶端部分在NiosII IDE環境中的開發,服務器部分在C+Builder環境中的開發。基于NiosII的應用程序開發需要使用C/O

12、S-II實時操作系統和NicheStack TCP/IP協議棧兩個組件的支持。軟件設計主要完成的任務如下:初始化以太網設備,C/OS-II實時操作系和NicheStack TCP/IP協議棧;將緩存的數據分割為小包發送出去;處理PC端服務器返回的信息,根據返回信息對象對緩存中的數據進行清除或重新發送;PC上的C+Builder程序開發主要完成的任務如下:接受來自以太網的數據,存儲并顯示;判斷丟失的數據并通知重發;如無數據丟失,定時通知對方已收到內容;配合對端進行傳輸速率的控制;第三章 相關原理3.1三速以太網設計媒體訪問層(MAC)作為以太網接口芯片的主要部分,主要完成以太幀的檢錯和提供可靠的

13、數據通路的功能,以太網的物理層(PHY)負責建立傳輸介質和MAC層的鏈接,將數據進行信號轉換。MAC需要配置PHY的寄存器信息,設定PHY的工作頻率、接口傳輸介質選擇及工作模式選擇。MDIO接口是用來傳輸MAC對PHY器件控制管理的模塊通過Marvell 88E1111以太網PHY芯片為用戶提供網絡界面。88E1111芯片支持10/100/1000 Mbps傳輸速率,支持的MAC層傳輸界面有GMII/MII/RGMII/TBI等。在Altera三速以太網控制器的設計界面中,以選擇其MAC界面為MII或者RGMII。MII (Media Independent Interface(介質無關接口)

14、或稱為媒體獨立接口,它是IEEE-802.3定義的以太網行業標準。它包括一個數據接口,以及一個MAC和PHY之間的管理接口,MII支持10兆和100兆的操作。RMII是簡化的MII接口,在數據的收發上它比MII接口少了一倍的信號線,一般要求是50兆的總線時鐘,和MII一樣,RMII支持10兆和100兆的總線接口速度。GMII是千兆網的MII接口,這個也有相應的RGMII接口,表示簡化了的GMII接口。在MAC選項標簽頁面,用戶應該給以太網控制器設置合適的值。控制器須包含MDIO模塊,它用于給PHY芯片生成2.5MHz的MDC時鐘,這個頻率從控制器主時鐘分頻而得。3.2實時操作系統實時操作系統是

15、指如果邏輯和時序出現偏差將會引起嚴重后果的系統,由系統硬件(包括處理器芯片、存儲芯片等),固化在存儲芯片的用戶軟件及操作系統組成。有兩種類型的實時系統:軟實時系統和硬實時系統。軟實時系統中,系統的各個任務運行不限定完成時間,速度越快越好;硬實時系統中,各任務的執行不僅要無誤還需準時。現在較為流行的實時操作系統有:C/OS-II、eCOS、RTLinux、RTAI、RTEMS等。C/OS-II系統是一個完整地、可移植、可固化、可裁減、搶占式的實時多任務內核,穩定性可靠性高,允許嵌套多大255層的中斷嵌套,符合本課題的要求。3.3 C/OS-II在NiosII中的移植移植指的是一個實時內核能在其他

16、的微處理器或微控制器上運行。C/OS-II的絕大部分代碼是C語言編寫,僅部分與使用的處理器相關的代碼需要重新編寫。C/OS-II的正常運行需要滿足一下條件:處理器的C編譯器能產生課重入型代碼;處理器支持中斷,并能產生實時中斷;C語言可開/關中斷;處理器支持一定數量的數據存儲硬件堆棧;處理器有將堆棧指針及其他CPU寄存器內容讀出并存儲到堆棧或內存中的指令;3.4 TCPIP協議棧TCP/IP協議全稱傳輸控制協議/網際協議。TCP/IP協議模型與OSI參考模型一樣采用了分層結構,但是側重于互連設備之間的數據傳輸,而不是嚴格的功能層次劃分。該模型分為四層:數據鏈路層、網絡層、傳輸層、應用層。數據鏈路

17、層管理網絡的連接并提供網絡上的報文輸入/輸出。主要包括ARP地址解析協議和RARP逆地址解析協議,以太網接口芯片及其驅動程序。網絡層處理報文的路由管理,根據接收保溫的信息決定報文的去向。包含了TCP/IP協議族里的IP協議、ICMP協議、IGMP協議。傳輸層的作用是管理源和目的之間的報文傳輸。這一層包含了兩個協議:有連接的TCP協議、無連接的UDP協議。應用層包括一些與用戶相關的認證、數據處理、壓縮等服務。主要包括FTP協議、SMTP協議、SNMP協議、Telnet協議等。用戶數據用戶數據用戶數據SocketTCPUDPICMP協議IP協議IGMP協議ARP協議硬件協議RARP協議網絡電纜應用

18、層傳輸層網絡層數據鏈路層傳統的TCP/IP協議的實現過于復雜,需要占用大量的系統資源。而嵌入式應用的系統資源往往很有限,所以傳統的TCP/IP并不適合本課題。因此需要把傳統的TCP/IP在不違背協議標準的情況下進行改進,以提高其實時性能,減少占用的系統資源,從而滿足本課題的應用要求。這種用于嵌入式系統的實時、簡單、靈活的TCP/IP協議稱為嵌入式TCP/IP協議。目前,常用的TCP/IP協議棧有:BSD TCP/IP協議棧、C/IP協議棧、LwIp協議棧、IP協議棧、OpenTCP協議棧、NicheStack協議棧等。NicheStack是針對于嵌入式系統的通訊協議,全部采用ANSIC書寫,占

19、用極少的內存資源。如內存的需求在ARM 32位CPU上最小的TCP/IP只有12.8K,而全功能的TCP/IP也只有42.4K。NicheStack TCP/IP協議棧在業內被譽為靈活的最佳聯網堆棧。NicheStack TCP/IP協議棧具有代碼小、移植行和兼容性高等優點,包含ANSIC代碼、一個Socket API和全部技術文檔。NicheStack的IP層軟件可以造成一個標準的客戶機、一個IP路由器活一個多主機服務器。NicheStack支持地址解析協議(APP)、Internet協議(IP)、Internet協議(ICMP)、域名服務(DNS)、用戶數據報協議(UDP)、傳輸控制協議(

20、TCP)、自引導協議(BOOTP)等協議和服務。3.5 NicheStack TCP/IP協議棧的移植在QuartusII軟件中,用戶可以在NiosII IDE的圖形用戶界面下對NicheStack TCP/IP協議棧進行配置來以題目設計的要求。Nios II進行NicheStack的移植需要滿足以下條件:硬件系統必須包含支持中斷的以太網接口系統程序必庫必須基于C/OS-II實時操作系統C/OS-II必須提供時鐘控制機制和時鐘節拍系統時鐘由專用定時器提供NicheStack的配置過程如下:在IDE界面的工程欄中,右鍵待配置工程,選擇System Library Properties,進入系統庫

21、的屬性對話框。選擇System Library,顯示系統庫選項。在Software Component下選擇NicheStack TCP/IP Stack,進入配置對話框。配置NicheStack的通用選項、IP選項、TCP選項。完成配置第四章 系統設計4.1硬件系統設計4.1.1NiosII處理器系統構建由以上分析,本設計的NiosII處理器系統如下圖:啟動QuartusII,建立新工程,選擇QuartusII中的Tools菜單,選中SOPC Builder項,進入SOPC開發工具SOPC Builder,界面如下圖。在彈出的Create New System對話框中輸入模塊名稱,選擇生成代

22、碼類型。 1、添加CPU模塊選擇SOPC Builder選擇欄中的NiosII Processor,打開NiosII Processor對話框(如下圖),并進行配置。系統提供了三種類型的軟核:NiosII/e占用資源最少600-800LEs,功能也最簡單,速度最慢。NiosII/s占資源比前者多一些,功能也多了,速度也忚一些NiosII/f占資源最多,功能也最多,速度快,具有NiosII CPU的所有功能,包括一些高級功能需要的LE數目最多。Reset Vector是復位后啟動的Memory類型和偏移量,Exception Vector是異常情況時Memory類型和偏移量,需要SDRAM和FL

23、ASH設置好以后才能修改。添加JTAG UART在組件選擇欄中選擇Interface Protocols,選擇Serial,進入JTAG UART。JTAG通用異步接收器/收發器(UART)核是PC和FPGA上SOPC Builder系統間進行串行通信的一種實現方式。此外,JTAG UART也可用于NiosII系統的仿真調試。添加片內存儲器在組件中選擇Memories and Memory Controllers,選擇On Chip,On-Chip Memory,進入片內存儲器設置的對話框。添加片內存儲器:緊耦合指令存儲器、緊耦合數據存儲器、描述符存儲器、普通片內RAM。添加Avalon三態總

24、線橋SSRAM和Flash的數據總線是三態的,NiosII CPU與SSRAM、Flash相連時需要用到Avalon三態橋。在組件選擇欄中選擇Bridge and Adapters,選擇Memory Mapped,進入Avalon-MM Tristate Bridge,進行設置。添加SSRAM通過Avalon三態總線橋,外部的SSRAM和Flash就可以接入NiosII系統中,SSRAM的作用類似于PC機中的內存,用于存放正在運行的程序和數據。正對于不同型號的SSRAM創建SSRAM接口組件。只需要定義好SSRAM與Avalon總線的接口即可。具體步驟如下:在組件選擇欄中選擇Create ne

25、w component,打開新建組件編輯器對話框。選擇Signals標簽,將SSRAM的信號映射到有效的Avalon信號類型。選擇Interface標簽,為組件配置Avalon接口的屬性。選擇Component Wizard標簽,設置組件的向導界面。添加Flash在組件選擇欄中選擇Memories and Memory Controllers,選擇Flash,進入Flash Memory(CFI),打開Flash設置對話框,分別設置Attributes(屬性)標簽和Timing(時序)標簽。具有Avalon接口的通用Flash接口控制器核(CFI)和容易與SOPC Builder系統外的符合C

26、FI參照要求的外部Flash相連。CFI控制器是SOPC Builder內如集成,可輕松集成到SOPC Builder創建的系統中去。Flash用于保存數據和程序,并在掉電時保持數據。添加PIO并行輸入/輸出(PIO)模塊在Avalon從端口和通用I/O端口之間提供了一個存儲器映像接口。I/O端口與片上用戶邏輯或者FPGA的I/O引腳相連,I/O引腳連接片外設備。在組件選擇欄中選擇Peripherals,選擇Microcontroller Peripherals,進入PIO,添加組件,用作LED和七段數碼管。添加定時器系統中共需要兩個定時器,一個為C/OS-II實時操作系統提供周期的時鐘節拍。

27、Timeout period設置為10ms,另一個作為NiosII系統的時間截定定時器,Timeout period設置為10ns。添加三速以太網在組件選擇欄中選擇Interface Protocols,選擇Ethernet,進入Triple-speed Ethernet。分別設置Core Configuration標簽和FIFO Options標簽。Core Configuration中Core variation設置為10/100/1000MB Ethernet MAC,interface設置為MII/GII。添加DMA總線控制器添加兩個DMA控制器,分別為三速以太網提供數據包的發送和接收

28、通道。在組件選擇欄中選擇Memories and Memory Controller,進入Scatter-Gather DMA Controller,添加兩個DMA控制器sg_rx、sg_tx,分別配置如下:、sg_rx:設置Transfer mode選項為Stream To Memory設置Sink error Width選項為6;、sg_tx:設置Transfer mode選項為Memory To Stream設置Source error Width選項為1;4.1.2設置基地址和中斷SOPC Builder為系統中的每個IP模塊制定默認的32位地址,用戶可以手動改變這些默認地址,也可自動

29、分配。、設置地址選擇System,進入Auto-Assign Base Address,自動分配基地址。、設置中斷為jtag_uartz、sg_rx、sg_tx分別設置中斷號。4.1.3配置NiosII系統雙擊SOPC系統中已經添加的CPU核,設定復位地址和異常處理地址。將復位地址定位于Flash存儲器,異常處理地址定位在on-chip memory。4.1.4生成NiosII系統完成NiosII系統模塊的設置后,需要生成用于QuartusII編譯的文件,同時生成原理圖模塊,以及軟甲開發工具包,使NiosII系統成為QuartusII工程的一部分。各部分的連接圖如下:點擊SOPC Builde

30、r窗口下的Generate按鈕,生成NiosII系統。生成的原理圖模塊如下圖:4.2軟件系統設計4.2.1C/OS-II移植過程作為NiosII開發系統的一部分,C/OS-II構建在安全線程HAL系統庫上。HAL為C/OS-II實時操作系統在NiosII微處理器上的運行提供了驅動。配置過程如下:在IDE環境的工程欄中,右鍵待配置的工程,選擇System Library Properities,進入系統庫的屬性對話框;在RTOS下選擇MicroC/OS-II(即C/OS-II),打開RTOS Options對話框;配置C/OS-II的一下選項:通用選項、事件標志選項、互斥選項、信號量選項、郵箱選

31、項、隊列選項、存儲器管理選項、任務管理選項、時間管理選項、雜項選項;完成配置4.2.2 NicheStack的初始化初始化NicheStack之前,需要提供兩個函數:get_mac_addr()和get_ip_addr(),為系統庫中的以太網設備的初始化提供MAC和IP地址。、get_ip_addr()該函數的的原型是int get_mac_addr(NET net ,unsigned char mac_addr6);函數實現的流程如下圖:函數入口輸入9位的串號Flash中是否有地址信息據串號自動生成MAC地址將MAC地址存儲至Flash芯片獲取Flash中存儲的MAC地址NoYesget_i

32、p_addr()函數原型為:int get_ip_addr(alt_iniche_dev *p_dev,ip_addr *ipaddr,ip_addr*netmask,ip_addr*gw,int *use_dhcp);初始化NicheStack是需要調用兩個系統提供的初始化函數:alt_iniche_init()和netmain()。NicheStack初始化完成后,全局變量iniche_net_ready自動置為非0值,調用兩個NicheStack的初始化函數后,需要等待iniche_net_ready非0后才能啟動用戶應用程序。整體效果圖:4.2.3WEB網頁界面設計4.3調試運行(1)

33、運Qauartus II,下載硬件配置到FPGA (2)運Nios II IDE,進入工作目錄(3)將網頁信息文件下載到Flash (4)在Nios II IDE中,選擇Run-Run as Nios II Hardware運軟件工程(5)在PC機上開啟瀏覽器,在瀏覽器地址欄輸入IP地址(6)進入預設網頁界面,通過左邊框欄來訪問開發板上同的外設,勾選各項LED,控制對應的LED燈的滅狀態,設定七段數碼管顯示的數值,單擊發送,可觀察到數碼管顯示對應的數字。附 部分模塊代碼一、LCD 1602顯示module lcm(CLOCK_50, LCD_DATA, LCD_RW, LCD_RS, LCD_

34、EN,LCD_BLON );always(posedge CLOCK_50) if(counter=25000) begin clk_1k=clk_1k; counter=0; end else counter=counter+1; always(posedge clk_1k)/ begin if(counter11023) counter1=counter1+1; casex (counter1) 400:begin LCD_DATA=8b00111000; /0 x38 設置顯示模式 LCD_RW=1b0; LCD_RS=1b0; end 401:LCD_EN=1b1; 410: /0 x

35、0c 開顯示 關光標 begin LCD_DATA=8b00001100; LCD_RW=1b0; LCD_RS=1b0; end 411: LCD_EN=1b1; 420: begin /0 x01 清屏幕 LCD_DATA=8b00000001; LCD_RW=1b0; LCD_RS=1b0; end421: LCD_EN=1b1; 430: begin /0 x06 讀或者寫后 自動加1 LCD_DATA=8b00000110; LCD_RW=1b0; LCD_RS=1b0; end431: LCD_EN=1b1; 440:begin /0 xc0 定位到第二行 LCD_DATA=8b1

36、1000000; LCD_RW=1b0; LCD_RS=1b0; end441: begin LCD_EN=1b1; ack=1; end /根據數字的ASCII碼值顯示數據 631: LCD_EN=1b1; default: LCD_EN=1b0; endcase endendmodule二、數碼管驅動module jkled(key,seg);input3:0 key;output reg7:0 seg;always(key)begincase(key)4b0000:seg=8b00111111;4b0001:seg=8b00000110;4b0010:seg=8b01011011;4b0

37、011:seg=8b01001111;4b0100:seg=8b01100110;4b0101:seg=8b01101101;4b0110:seg=8b01111101;4b0111:seg=8b00000111;4b1000:seg=8b01111111;4b1001:seg=8b01101111;4b1010:seg=8b01110111;4b1011:seg=8b01111100;4b1100:seg=8b00111001;4b1101:seg=8b01011110;4b1110:seg=8b01111001;4b1111:seg=8b01110001;endcaseendendmodu

38、le附錄資料:不需要的可以自行刪除C語言編譯環境中的調試功能及常見錯誤提示調試功能1常用健 : 激活系統菜單: 將光標在編輯窗口和、信息窗口之間切換: 加載一個文件+: 查看程序運行結果: 得到有關編輯器在線幫助+: 得到有關C語言的在線幫助+: 終止正在運行的程序2塊操作 KB: 定義塊首 KK: 定義塊尾 KV: 塊移動 KC: 塊復制 KY: 塊刪除 KH: 取消塊定義3查找、替換和刪除操作 QF: 查找字符串 QA: 查找并替換字符串 Option: G(全程), B(向文件頭), N(直接替換) Y : 刪除一行 QY: 刪除從光標位置到行末的所有字符編譯中的常見錯誤例析(1)警告類

39、錯誤 XXXdeclare but never used 變量XXX已定義但從未用過。 XXXis assigned a value which is never used 變量XXX已賦值但從未用過。 Code has no effect 程序中含有沒有實際作用的代碼。 Non-portable pointer conversion 不適當的指針轉換,可能是在應該使用指針的地方用了一個非0的數值。 Possible use of XXXbefore definition 表達式中使用了未賦值的變量 Redeclaration of main 一個程序文件中主函數main不止一個。 Suspi

40、cious pointer conversion 可疑的指針轉換。通常是使用了基本類型不匹配的指針。 Unreachable code 程序含有不能執行到的代碼。(2)錯誤或致命錯誤 Compound statement missing in function main 程序結尾缺少括號。 “”expected; “(”expected等 復合語句或數組初始化的結尾缺少“)”;“(”。 Case outside of switch case 不屬于Switch結構,多由于switch結構中的花括號不配對所致。 Case statement missing : switch結構中的某個case之

41、后缺少冒號。 Constant expression required 定義數組時指定的數組長度不是常量表達式。 Declaration syntax error 結構體或聯合類型的定義后缺少分號。 Declaration was expected 缺少說明,通常是因為缺少分界符如逗號、分號、右圓括號等所引起的。 Default outside switch Default部分放到了switch結構之外,一般是因為花括號不匹配而引起的。 do statement must have while do語句中缺少相應的while部分。 Expression syntax 表達式語法錯。如表達式中含

42、有兩個連續的運算符 Extra parameter in call fun 調用函數fun時給出了多余的實參。 Function should return a value 函數應該返回一個值,否則與定義時的說明類型不匹配。 Illegal use of pointer 指針被非法引用,一般是使用了非法的指針運算。 Invalid pointer addition 指針相加非法。一個指針(地址)可以和一個整數相加,但兩個指針不能相加。 Lvalue required 賦值運算的左邊是不能尋址的表達式。 Misplaced else 程序遇到了沒有配對的else No matching 表達式中

43、的括號不配對。 Pointer required on left side of_ 在“_”運算的左邊只能允許一個指針而不能是一個一般的結構體變量或聯合類型的變量。 Statement missing; 程序遇到了后面沒有分號的語句。 Too few parameters in call 調用某個函數時實參數目不夠。 Unable to open include file XXXXXXXXXXX 頭文件找不到。 Unexpected 或:或 在不希望的地方使用了或:。 Undefined symbol Xin function fun 函數fun中的變量X沒有定義。5.連接中的常見錯誤主要錯誤

44、類似于“undefined symbol _print in modula xxx”(print沒有定義),通常是函數名書寫錯誤。6.運行中的常見錯誤Abnormal program termination 程序異常終止。通常是由于內存使用不當所致。Floating point error : Domain 或Divide by 0 運算結果不是一個數或被0 除Null pointer assignment 對未初始化的指針賦值,程序有嚴重錯誤。User break 在運行程序時終止。7.程序的跟蹤調試利用Run菜單可以進行程序的跟蹤調試(1)GO to Cursor ()選擇該選項使程序執行

45、到光標所在行首先將光標移到某行(一般為可執行),選擇該功能項,則程序執行到該行的前一行暫停。此時程序處于跟蹤調試狀態,并有亮條顯示在暫停處,此時可以查詢變量或表達式的值。(2)Trace into ()執行一條語句或一行暫停此時程序處于跟蹤調試狀態,并有亮條顯示在暫停處。該選項可跟蹤到被調函數的內部。(3)Step over ()執行一條語句或一行暫停此時程序處于跟蹤調試狀態,并有亮條顯示在暫停處。該選項將自定義函數當作一個語句執行,不跟蹤到函程序的內部。(4)Debug 菜單程序處于跟蹤狀態時,可使用該菜單的選項。其主要是使用Evaluate目的是查詢或更新變量或表達式的值。選擇Evalua

46、te功能后,系統彈出一個對話框。該對話框包含三個選項區域:Evaluate域可以輸入一個含有目前代碼中(程序暫停區的作用域)正在使用的變量名、或含變量的表達式、或常量表達式。按回車鍵后,在Result域中顯示變量或表達式的值。還可以用New value域進行調試。如果調試程序時發現Result域顯示的某變量或表達式的值不正確,并能估計出該變量或表達式的值,則可以將該值輸入到New value域,繼續執行程序,其目的是肯定錯誤發生處是否在當前位置之前。如果輸入這個正確的值并將程序繼續執行完畢而結果正確,說明在目前暫停處之前已經發生錯誤而之后無錯誤。(5)Break/Watch用于設置斷點和監視表

47、達式。選擇Add Watch功能選項,系統將彈出一個菜單,在Add Watch框中輸入變量名或表達式,按回車鍵后,系統在屏幕底部開辟一個窗口并顯示 該變量或表達式的值。【常見錯誤信息語句索引】Ambiguous operators need parentheses:不明確的運算需要用括號括起 Ambiguous symbol xxx :不明確的符號 Argument list syntax error:參數表語法錯誤 Array bounds missing in function main 缺少數組界限符 Array bounds missing :丟失數組界限符 Array size to

48、o large :數組尺寸太大 Bad character in paramenters :參數中有不適當的字符 Bad file name format in include directive :包含命令中文件名格式不正確 Bad ifdef directive synatax :編譯預處理ifdef有語法錯 Bad undef directive syntax :編譯預處理undef有語法錯 Bit field too large :位字段太長 Call of non-function :調用未定義的函數 Call to function with no prototype :調用函數時

49、沒有函數的說明 Cannot modify a const object :不允許修改常量對象 Case outside of switch :漏掉了case 語句 Case syntax error :Case 語法錯誤 Code has no effect :代碼不可述不可能執行到 Compound statement missing :分程序漏掉 Conflicting type modifiers :不明確的類型說明符 Constant expression required :要求常量表達式 Constant out of range in comparison :在比較中常量超出范

50、圍 Conversion may lose significant digits :轉換時會丟失意義的數字 Conversion of near pointer not allowed :不允許轉換近指針 Could not find file xxx :找不到XXX文件 Declaration missing ; :說明缺少; Declaration syntax error :說明中出現語法錯誤 Default outside of switch :Default 出現在switch語句之外 Define directive needs an identifier :定義編譯預處理需要標識

51、符 Division by zero :用零作除數 Do statement must have while :Do-while語句中缺少while部分 Enum syntax error :枚舉類型語法錯誤 Enumeration constant syntax error :枚舉常數語法錯誤 Error directive :xxx :錯誤的編譯預處理命令 Error writing output file :寫輸出文件錯誤 Expression syntax error :表達式語法錯誤 Extra parameter in call :調用時出現多余錯誤 File name too l

52、ong :文件名太長 Function call missing ) :函數調用缺少右括號 Fuction definition out of place :函數定義位置錯誤 Fuction should return a value :函數必需返回一個值 Goto statement missing label :Goto語句沒有標號 Hexadecimal or octal constant too large :16進制或8進制常數太大 Illegal character x :非法字符x Illegal initialization :非法的初始化 Illegal octal digi

53、t :非法的8進制數字 Illegal pointer subtraction :非法的指針相減 Illegal structure operation :非法的結構體操作 Illegal use of floating point :非法的浮點運算 Illegal use of pointer :指針使用非法 Improper use of a typedefsymbol :類型定義符號使用不恰當 In-line assembly not allowed :不允許使用行間匯編 Incompatible storage class :存儲類別不相容 Incompatible type conv

54、ersion :不相容的類型轉換 Incorrect number format :錯誤的數據格式 Incorrect use of default Default使用不當 Invalid indirection 無效的間接運算 Invalid pointer addition 指針相加無效 Irreducible expression tree 無法執行的表達式運算 Lvalue required 需要邏輯值0或非0值 Macro argument syntax error 宏參數語法錯誤 Macro expansion too long 宏的擴展以后太長 Mismatched number

55、 of parameters in definition 定義中參數個數不匹配 Misplaced break 此處不應出現break語句 Misplaced continue 此處不應出現continue語句 Misplaced decimal point 此處不應出現小數點 Misplaced elif directive 不應編譯預處理elif Misplaced else 此處不應出現else Misplaced else directive 此處不應出現編譯預處理else Misplaced endif directive 此處不應出現編譯預處理endif Must be addre

56、ssable 必須是可以編址的 Must take address of memory location 必須存儲定位的地址 No declaration for function xxx 沒有函數xxx的說明 No stack 缺少堆棧 No type information 沒有類型信息 Non-portable pointer assignment 不可移動的指針(地址常數)賦值 Non-portable pointer comparison 不可移動的指針(地址常數)比較 Non-portable pointer conversion 不可移動的指針(地址常數)轉換 Not a valid expression format type 不合法的表達式格式 Not an allowed type 不允許使用的類型 Numeric constant too large 數值常太大 Out of memory 內存不夠用 Parameter xxx is never used 能數xxx沒有用到 Pointer required on left side of - 符號-的左邊必須是指針 Possible use of xxx before definition 在定義之前就使用了xxx(警

溫馨提示

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

評論

0/150

提交評論