使用NiosⅡIDE對FLASH存儲器編程的步驟啟動NiosIIIDE課件_第1頁
使用NiosⅡIDE對FLASH存儲器編程的步驟啟動NiosIIIDE課件_第2頁
使用NiosⅡIDE對FLASH存儲器編程的步驟啟動NiosIIIDE課件_第3頁
使用NiosⅡIDE對FLASH存儲器編程的步驟啟動NiosIIIDE課件_第4頁
使用NiosⅡIDE對FLASH存儲器編程的步驟啟動NiosIIIDE課件_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、SOPC技術(shù)第5章 Nios II 系統(tǒng)的外圍設(shè)備NO.3.14. 使用IDE Flash Programmer編程完成所有的軟/硬件開發(fā)工作后,可以使用NiosIDE提供的Flash Programmer工具將程序下載到FPGA平臺上的FLASH存儲器中。Flash Programmer是Nios IDE 6.0提供的新工具,它可以將配置數(shù)據(jù)、Nios程序及其他數(shù)據(jù)文件下載到目標(biāo)板上的FLASH存儲器中,這里所說的FLASH存儲器包括業(yè)界標(biāo)準(zhǔn)的CFI或CFI兼容的FLASH存儲器,以及Altera公司的EPCS系列串行配置器件。IDE Flash Programmer 通過2個過程將數(shù)據(jù)寫入

2、flash:(1)用Altera提供的“Flash編程設(shè)計”對FPGA進(jìn)行配置;(2) IDE Flash Programmer將文件內(nèi)容 “Flash編程設(shè)計” FlashFlash編程設(shè)計每個Flash編程設(shè)計應(yīng)包含的元件: 使用IDE Flash Programmer編程,首先要保證在SOPC Builder中,在Target選項區(qū)中的Board的下拉列表框中選擇用戶當(dāng)前使用的目標(biāo)板Flash 編程設(shè)計。 SmartSOPC_Board_1C6是現(xiàn)用核心板提供的目標(biāo)板Flash編程設(shè)計,可以對核心板上的NOR Flash(元件標(biāo)號U7)和EPCS (元件標(biāo)號U10)進(jìn)行編程。使用Nios

3、IDE對FLASH存儲器編程的步驟:啟動Nios II IDE。 建立軟件工程,然后編譯連接(Build Project) 選中要進(jìn)行編程的工程,然后選ToolsFlash Programmer菜單啟動Flash Programmer對話框,如圖5.5.2。 單擊Flash Programmer對話框左下角的New命令按鈕,建立一個新編程任務(wù),可以修改這個新任務(wù)的名稱。若選中program software project into flash memory project,可將工程的.elf文件寫入Flash(EPCS)。若選中program FPGA configuration data

4、into hardware-image region of flash memory,可將FPGA的配置文件寫入Flash(EPCS)。若選中Program file into a flash memory選項,可將二進(jìn)制文件寫入Flash。需要選擇要編程的二進(jìn)制文件及要編程的存儲器(U7為Flash,U10為EPCS)。(5) 在Main頁面中可以選擇所要編程的內(nèi)容,包括工程名稱、FPGA配置文件的名稱以及目標(biāo)存儲器。圖5.5.2 Flash Programmer對話框 (4) 在Target Connection頁面中選擇與目標(biāo)板相連的下載電纜,如圖5.5.3。 (5) 設(shè)置好這些內(nèi)容之后

5、,單擊Apply按鈕,然后單擊Program Flash按鈕,NiosIDE重新編譯工程并對FLASH存儲器進(jìn)行編程。(若在SOPC Builder中沒有指定目標(biāo)板,則Program Flash按鈕將是灰色不能使用。) 從IDE的Console窗口可以看見編程過程。(見圖5.5.4) 完成Flash編程后,需讓系統(tǒng)重新上電,使FPGA使用EPCS中配置數(shù)據(jù)重新配置FPGA, 程序才能正常運(yùn)行。圖5.5.3 Flash Programmer 中目標(biāo)連接設(shè)置在console窗口顯示編程過程及編程結(jié)束標(biāo)志圖5.5.4通信接口 目前存在的所有計算機(jī)通信接口在嵌入式領(lǐng)域中都有其廣泛的應(yīng)用,應(yīng)用最為廣泛的

6、接口設(shè)備包括 RS-232接口(串口UART) USB接口(通用串行總線接口) IrDA(Infra Red Data Association紅外線接口) SPI(串行外圍設(shè)備接口)、 I2C、CAN總線接口、 藍(lán)牙接口(Bluetooth) Ethernet(以太網(wǎng)接口)、 IEEE1394接口和通用可編程接口GPIO。 5.5 UART內(nèi)核UART(Universal Asynchronous Receiver/Transmitter通用異步接收器/發(fā)生器)內(nèi)核帶有Avalon接口,為嵌入式系統(tǒng)和外部設(shè)備提供了串行字符流動通信方式,其數(shù)據(jù)以RS-232協(xié)議的形式與外界進(jìn)行交互。提供可調(diào)整的

7、波特率;可配置奇偶校驗(yàn)位、停止位和數(shù)據(jù)位等。UART內(nèi)核的結(jié)構(gòu)框圖UART內(nèi)核寄存器映射UART內(nèi)核配置選項1、波特率設(shè)置2、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位3、流控制4、Avalon流控制傳輸軟件編程Altera提供的驅(qū)動程序執(zhí)行HAL字符模式設(shè)備驅(qū)動程序。HAL用戶應(yīng)通過熟悉的HAL API函數(shù)和ANSI C標(biāo)準(zhǔn)庫函數(shù)訪問UART,而不是訪問UART寄存器。altera_avalon_uart_regs.h 寄存器級訪問頭文件altera_avalon_uart.h, altera_avalon_uart.c HAL系統(tǒng)庫的UART內(nèi)核設(shè)備驅(qū)動程序?qū)嶒?yàn)4.10:ANSI C標(biāo)準(zhǔn)庫來訪問UART;

8、如果檢測到字符t,則報告檢測到字符t;如果檢測到字符v,則退出程序。#include#include#include system.hint main () char* msg = Detected the character t.n; FILE* fp; char prompt = 0; printf(Please Enter some characters: n); fp = fopen (UART_NAME, r+); /打開文件進(jìn)行讀和寫 if (fp) while (prompt != v) / 循環(huán)直至接收到 v prompt = getc(fp); / 從UART中獲取字符 if

9、 (prompt = t) / 如果字符為 t 打印信息 fwrite (msg, strlen (msg), 1, fp); if (ferror(fp) / 檢查錯誤是否在UART連接上出現(xiàn) clearerr(fp); / 如果是,清除它 fprintf(fp, Closing the UART file handle.n); fclose (fp); else printf(Fail to open file.n); return 0; System.h 描述的UART設(shè)備#define UART_NAME /dev/uart#define UART_TYPE altera_avalon

10、_uart#define UART_BASE 0 x00B00840#define UART_IRQ 1#define UART_BAUD 115200#define UART_DATA_BITS 8#define UART_FIXED_BAUD 0#define UART_PARITY N#define UART_STOP_BITS 1#define UART_USE_CTS_RTS 0#define UART_USE_EOP_REGISTER 0#define UART_SIM_TRUE_BAUD 0#define UART_SIM_CHAR_STREAM #define UART_FRE

11、Q 48000000具有Avalon接口的JTAG UART核是實(shí)現(xiàn)在PC機(jī)和FPGA上的SOPC Builder系統(tǒng)間進(jìn)行串行通信的一種實(shí)現(xiàn)方式JTAG UART用來替代RS-232完成與PC主機(jī)的字符輸入/輸出, NiosII 處理器通過讀/寫控制和數(shù)據(jù)寄存器與JTAG UART核通信5.6 JTAG-UART內(nèi)核對于NiosII 處理器, HAL系統(tǒng)庫中包含該設(shè)備的驅(qū)動程序,允許使用ANSI C標(biāo)準(zhǔn)庫stdio.h訪問JTAG UART核對PC機(jī), Altera提供JTAG終端軟件來管理PC機(jī)與目標(biāo)系統(tǒng)的連接,對JTAG數(shù)據(jù)流解碼和在屏幕上顯示字符5.7 JTAG-UART內(nèi)核JTAG

12、UART核方框圖缺省的深度值(64)IRQ門限值(8)是最優(yōu)的,不用改變JTAG UART核配置軟件編程HAL用戶應(yīng)通過HAL API 和ANSI C 標(biāo)準(zhǔn)庫訪問JTAG-UART,而不是訪問JTAG-UART寄存器。對JTAG UART核的操作與下列文件有關(guān)。 altera_avalon_jtag_uart_regs.h altera_avalon_jtag_uart.h altera_avalon_jtag_uart.c#include #include #include system.hint main() char *msg=“Detected the character t.n”;F

13、ILE *fp;char prompt=0;printf(Please Enter some characters: n);fp=fopen(“/dev/jtag_uart”,”r+”); /為讀寫操作打開文件If(fp) while(prompt!=v) /循環(huán)直到接收一個”v” prompt=getc(fp); /從JTAG UART中讀取一個字符 if(prompt=t) /若字符是“t”,則輸出信息 fwrite(msg,strlen(msg),1,fp); 例:使用標(biāo)準(zhǔn)庫通過JTAG UART核讀和發(fā)送一個消息if(ferror(fp) /檢查是否有錯誤產(chǎn)生clearerr(fp);

14、 /若有則清除fprintf(fp,”Closing the JTAG UART file handle.n”);fclose(fp); else printf(Fail to open file.n); return 0;5.7 定時器內(nèi)核定時器可作為系統(tǒng)的周期性時鐘源(Tick);可以作為計數(shù)器測定事件發(fā)生的時間;作“看門狗”(Watchdog)。定時器內(nèi)核特性: 可控制定時器的啟動、停止或復(fù)位 兩種計數(shù)模式:單次減一和連續(xù)減一計數(shù)模式 計數(shù)器達(dá)到0時產(chǎn)生中斷請求(IRQ) 可作為看門狗定時器 可選擇輸出周期性脈沖 可由軟件使能或屏蔽定時器中斷定時器內(nèi)核結(jié)構(gòu)框圖定時器寄存器1. 狀態(tài)寄存器

15、(status)2. 控制寄存器(control)3. periodl & periodh 寄存器 periodl 和 periodh 寄存器一起存儲超時周期的計數(shù)值。當(dāng)對此寄存器進(jìn)行寫操作或內(nèi)部計數(shù)器減到0時,保存在periodl &和periodh 中的值會裝載到內(nèi)部計數(shù)器中。4. snapl & snaph 寄存器 可通過對snapl & snaph 寄存器的寫操作來獲取32位內(nèi)部計數(shù)器的當(dāng)前值。5. 中斷操作 只要內(nèi)部計數(shù)器減到0且控制寄存器的ITO位設(shè)為1,定時器內(nèi)核就會產(chǎn)生IRQ.用戶可用以下任一方式應(yīng)答IRQ: 清除狀態(tài)寄存器的TO位,等待下一個超時事件的發(fā)生; 通過將控制寄存器

16、的ITO位清零來禁止中斷。定時器內(nèi)核(interval timer)配置選項Timeout Period: 設(shè)置periodl 和 periodh 寄存器的初始值,此值可根據(jù)系統(tǒng)輸入時鐘頻率和initial period中的設(shè)置計算獲得。定時器內(nèi)核配置選項Preset Configurations: 提供的預(yù)定義硬件配置:Simple periodic interrupt Full-featured WatchdogWriteable period:主控制器可通過寫periodl 和 periodh改變向下計數(shù)周期 Readable snapshot:主控制器可讀當(dāng)前向下計數(shù)的值Start/s

17、top control bits:主控制器可通過寫控制寄存器的START和STOP位來啟動后停止定時器。Timeout pulse:當(dāng)定時器計數(shù)到0時將輸出持續(xù)一個周期的高電平。System reset on timeout:配置定時器用于看門狗。當(dāng)使能以下各項時:定時器提供了硬件的寄存器級訪問和HAL層的API函數(shù): altera_avalon_time_regs.h: 定義內(nèi)核的寄存器映射并提供硬件設(shè)備訪問宏定義; altera_avalon_timer.h、altera_avalon_timer_sc.c、 altera_avalon_timer_ts.c、 altera_avalon_

18、timer_vars.c 實(shí)現(xiàn)了HAL系統(tǒng)庫的定時器設(shè)備驅(qū)動程序(在components/altera_avalon_timer中)軟件設(shè)計軟件設(shè)計HAL API提供如下兩種定時器設(shè)備的驅(qū)動程序: 系統(tǒng)時鐘定時器-該驅(qū)動程序支持報警(alarms)。 時間戳定時器 -該驅(qū)動程序支持高精度的時間測量。HAL特定的訪問定時器設(shè)備的API函數(shù)在components/altera_hal/HAL/inc/sys/alt_alarm.h和sys/alt_timestamp.h中定義?!緦?shí)驗(yàn)4.5】利用系統(tǒng)時鐘服務(wù)產(chǎn)生1s的周期性事件,并借此控制LED閃爍#include #include system.

19、h /包含基本的硬件描述信息#include altera_avalon_pio_regs.h /包含基本的IO寄存器信息#include alt_types.h /Altera定義的數(shù)據(jù)類型#include sys/alt_alarm.h /系統(tǒng)時鐘服務(wù)頭文件 #ifndef LED_PIO_BASE /這是LED_PIO核的基地址#define LED_PIO_BASE 0 xffffffff /users definition here#endif#if LED_PIO_BASE = 0 xffffffff#error No definition of LED_PIO core.n#en

20、dif#define LEDCON 0 xff static alt_alarm alarm; /按調(diào)用API函數(shù)規(guī)定定義的變量static unsigned char led = 0 xff; 功能:按調(diào)用規(guī)定系統(tǒng)時鐘回調(diào)函數(shù),在該函數(shù)中實(shí)現(xiàn)用戶功能入口參數(shù):context,系統(tǒng)傳給回調(diào)函數(shù)的參數(shù) 出口參數(shù):返回下一次的系統(tǒng)時鐘服務(wù)的周期值alt_u32 my_alarm_callback (void* context) if(led = 0 xff) led = 0 x00; else led = 0 xff; IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,led); /操作IO口 return alt_ticks_per_second();功能:初始化LED_PIO為輸出,其余輸入,屏蔽中斷,清邊沿捕獲寄存器void InitPIO(void) /* LED_PIO為輸出,其余輸入 */ IOWR_ALTERA_AVALON_PIO_DIRECTION(LED_PIO_BASE, LEDCON); /* 禁止所有PIO中斷 */ IOWR

溫馨提示

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

評論

0/150

提交評論