天天看點

NIOS常用函數詳解

IO操作函數

函數原型:IORD(BASE, REGNUM)

輸入參數:BASE為寄存器的基位址,REGNUM為寄存器的偏移量

函數說明:從基位址為BASE的裝置中讀取寄存器中偏移量為REGNUM的單元裡面的值。寄存器的值在位址總線的範圍之内。

傳回值:  -

函數原型:IOWR(BASE, REGNUM, DATA)

輸入參數:BASE為寄存器的基位址,REGNUM為寄存器的偏移量,DATA為要寫入的資料

函數說明:往偏移量為REGNUM寄存器中寫入資料。寄存器的值在位址總線的範圍之内。

傳回值:  -

函數原型:IORD_32DIRECT(BASE, OFFSET)

輸入參數:BASE為寄存器的基位址,OFFSET為寄存器的的偏移量

函數說明:從位址位置為BASE+OFFSET的寄存器中直接讀取32Bit的資料

傳回值:  -

函數原型:IORD_16DIRECT(BASE, OFFSET)

輸入參數:BASE為寄存器的基位址,OFFSET為寄存器的的偏移量

函數說明:從位址位置為BASE+OFFSET的寄存器中直接讀取16Bit的資料

傳回值:  -

函數原型:IORD_8DIRECT(BASE, OFFSET)

輸入參數:BASE為寄存器的基位址,OFFSET為寄存器的的偏移量

函數說明:從位址位置為BASE+OFFSET的寄存器中直接讀取8Bit的資料

傳回值:  -

函數原型:IOWR_32DIRECT(BASE, OFFSET, DATA)

輸入參數:BASE為寄存器的基位址,REGNUM為寄存器的偏移量,DATA為要寫入的資料

函數說明:往位址位置為BASE+OFFSET的寄存器中直接寫入32Bit的資料

傳回值: -

函數原型:IOWR_16DIRECT(BASE, OFFSET, DATA)

輸入參數:BASE為寄存器的基位址,REGNUM為寄存器的偏移量,DATA為要寫入的資料

函數說明:往位址位置為BASE+OFFSET的寄存器中直接寫入16Bit的資料

傳回值: -

函數原型:IOWR_8DIRECT(BASE, OFFSET, DATA)

輸入參數:BASE為寄存器的基位址,REGNUM為寄存器的偏移量,DATA為要寫入的資料

函數說明:往位址位置為BASE+OFFSET的寄存器中直接寫入8Bit的資料

傳回值: -

Dma:

函數原型:int alt_dma_rxchan_close (alt_dma_rxchan rxchan)

輸入參數:rxchan為接收信道

函數說明:函數 alt_dma_rxchan_close ()通知系統:應用程式已經完成DMA

          接收信道rxchan,目前執行是成功的

傳回值:  成功傳回為0,反之為-1

函數原型:alt_dma_rxchan_depth(alt_dma_rxchan dma)

輸入參數:dma

函數說明:函數alt_dma_rxchan_depth ()傳回傳送到特别DMA的最大數量(深度)的接收請求

傳回值:  DMA的最大數量

函數原型:int alt_dma_rxchan_ioctl (alt_dma_rxchan dma, int req, void* arg)

輸入參數:dma直接存儲器名, req為請求操作的列舉, arg由請求決定

函數說明:通過DMA接收信道執行裝置的具體I/O操作

傳回值:  成功傳回請求具體值,反之傳回為負數

請求類型

請求類型 請求類型說明

ALT_DMA_SET_MODE_8 傳輸以8Bit為機關的資料,arg值忽略

ALT_DMA_SET_MODE_16 傳輸以16Bit為機關的資料,arg值忽略

ALT_DMA_SET_MODE_32 傳輸以32Bit為機關的資料,arg值忽略

ALT_DMA_SET_MODE_64 傳輸以64Bit為機關的資料,arg值忽略

ALT_DMA_SET_MODE_128 傳輸以128Bit為機關的資料,arg值忽略

ALT_DMA_TX_ONLY_ON (1) 軟體控制下隻能發送

ALT_DMA_TX_ONLY_OFF (1) 自定義模式,軟體控制下可以接收,發送

ALT_DMA_RX_ONLY_ON (1) 軟體控制下隻能接收

ALT_DMA_RX_ONLY_OFF (1) 自定義模式,軟體控制下可以接收,發送

函數原型:alt_dma_rxchan  alt_dma_rxchan_open (const char* name)

輸入參數:name為常數字元指針,如/dev/dma_0

函數說明:為DMA接收信道獲得一個alt_dma_rxchan描述符

傳回值:  成功傳回非0,反之傳回為0

函數原型:int alt_dma_rxchan_prepare (alt_dma_rxchan  dma, void* data,

alt_u32 length, alt_rxchan_done * done, void* handle)

輸入參數:dma使用的信道;data接收資料位置的指針;length最大的接收資料長度;done一旦資料被接收,調用傳回函數;handle,非透明值傳到done

函數說明:發送一個接收請求到DMA接收信道,

傳回值:  成功傳回0,反之傳回為負數

函數原型:int alt_dma_rxchan_reg (alt_dma_rxchan_dev * dev)

輸入參數:dev接收信道裝置名

函數說明:給系統寄存DMA接收信道

傳回值:  成功傳回0,反之傳回為負數

函數原型:int alt_dma_txchan_close (alt_dma_txchan txchan)

輸入參數:txchan發送信道名

函數說明:通知系統:應用程式已經完成DMA發送信道txchan

傳回值:  成功傳回0,反之傳回為負數

函數原型:int  alt_dma_txchan_ioctl (alt_dma_txchan dma, int req, void* arg)

輸入參數:dma直接存儲器名;req為請求操作的列舉;arg請求的額外參數,由請求決定

函數說明:通過DMA發送信道執行裝置的具體I/O操作

傳回值:  成功傳回請求具體值,反之傳回為負數

函數原型:alt_dma_txchan  alt_dma_txchan_open (const char* name)

輸入參數:name為常數字元指針,如/dev/dma_0

函數說明:為DMA發送信道獲得一個alt_dma_rxchan描述符

傳回值:  成功傳回非0,反之傳回為0

函數原型:int  alt_dma_txchan_reg (alt_dma_txchan_dev* dev)

輸入參數:dev接收信道裝置名

函數說明:給系統寄存DMA發送信道

傳回值:  成功傳回0,反之傳回為負數

函數原型:int alt_dma_txchan_send (alt_dma_txchan dma, const void* from,

alt_u32 length, alt_txchan_done* done, void* handle)

輸入參數:dma使用的信道;data接收資料位置的指針;length最大的接收資料長度;done一旦資料被接收,調用傳回函數;handle,非透明值傳到done

函數說明:發送一個發送請求到DMA發送信道,

傳回值:  發送成功傳回0,反之傳回為負數

函數原型:nt alt_dma_txchan_space (alt_dma_txchan dma)

輸入參數:dma 直接存儲器名

函數說明:傳回被傳送到具體DMA發送信道的發送請求數目

傳回值:  傳回發送請求數目

Flash

函數原型:int alt_erase_flash_block(alt_flash_fd* fd, int offset, int length)

輸入參數:fd為具體的flash裝置;offset擦除的flash子產品的偏移量;length擦除的flash子產品的長度

函數說明:擦除單獨的一個flash子產品

傳回值:  發送成功傳回0,反之傳回為負數

函數原型:void  alt_flash_close_dev(alt_flash_fd * fd)

輸入參數:fd為具體的flash裝置

函數說明:關閉flash裝置

傳回值:  -

函數原型:alt_flash_fd * alt_flash_open_dev(const char* name)

輸入參數:

函數說明:打開flash裝置。一旦打開,函數alt_write_flash()用來寫入,函數alt_read_flash()用來讀取資料,或者使用函數alt_get_flash_info(), alt_erase_flash_block(), alt_write_flash_block (),控制單個子產品

傳回值:  失敗傳回0,成功其他值

函數原型:int alt_get_flash_info(alt_flash_fd* fd, flash_region ** info,

int* number_of_regions)

輸入參數:fd flash裝置;info指向flash_region結構體的指針;number_of_regions

函數說明:得到擦除flash區域的細節

傳回值:  發送成功傳回0,反之傳回為負數

函數原型:int alt_read_flash(alt_flash_fd* fd, int offset, void* dest_addr, int length)

輸入參數:dest_addr目标位址指針

函數說明:從flash偏移量為offset位元組開始讀取資料,寫入到目标位址dest_addr中

傳回值:  成功傳回0,反之為非0

函數原型:int alt_write_flash(alt_flash_fd* fd, int offset, const void* src_addr,

int length)

輸入參數:src_addr源位址;fd,flash裝置;offset 偏移量;length位元組長度

函數說明:寫資料到flsah中,要寫的資料在源位址src_addr中

傳回值:  成功傳回0,反之為非0

函數原型:int alt_write_flash_block(alt_flash_fd* fd, int block_offset, int data_offset,

const void *data, int length)

輸入參數:fd;data_offset起始寫資料的偏移量;length為要寫資料的長度

函數說明:寫入到一個已擦除的flash子產品

傳回值:  成功傳回0,反之為非0

Irq

函數原型:alt_irq_context  alt_irq_disable_all (void)

輸入參數:void

函數說明:禁止所有中斷

傳回值:  傳遞的值作為随後的函數調用的輸入參數

函數原型:void alt_irq_enable_all (alt_irq_context context)

輸入參數:先前調用函數alt_irq_disable_all (void)的傳回值,

函數說明:啟動所有中斷

傳回值:  -

函數原型:int alt_irq_enabled (void)

輸入參數:void

函數說明:啟動中斷

傳回值:  禁止中斷傳回0,反之為非0

函數原型:int alt_irq_register (alt_u32 id, void* context, void (*isr) (void*, alt_u32))

輸入參數:id,32位無符号數,中斷使能;context和id是isr的兩個輸入參數;中斷激活時調用isr

函數說明:寄存一個isr

傳回值:  成功傳回0,反之為非0

函數原型:int alt_write_flash(alt_flash_fd* fd, int offset, const void* src_addr,

int length)

輸入參數:src_addr源位址;fd,flash裝置;offset 偏移量;length位元組長度

函數說明:寫資料到flsah中,要寫的資料在源位址src_addr中

傳回值:  成功傳回0,反之為非0

函數原型:int alt_write_flash_block(alt_flash_fd* fd, int block_offset, int data_offset,

const void *data, int length)

輸入參數:fd;data_offset起始寫資料的偏移量;length為要寫資料的長度

函數說明:寫入到一個已擦除的flash子產品

傳回值:  成功傳回0,反之為非0

函數原型:int close (int filedes)

輸入參數:filedes,描述符

函數說明:标準的UNIX函數close(),關閉檔案描述符filedes

傳回值:  成功傳回0,反之為-1

函數原型:int open (const char* pathname, int flags, mode_t mode)

輸入參數:pathname, 路徑名;flags,O_RDONLY或O_WRONLY 或O_RDWR,分别對應着隻讀,隻寫,或讀寫操作;mode,使用許可說明

函數說明:打開檔案或裝置,傳回一個檔案描述符(讀寫中使用的非負整數)

傳回值:  成功傳回檔案描述符,反之傳回-1

函數原型:int read(int file,  void *ptr,  size_t  len)

輸入參數:file檔案描述符;ptr為讀資料的位置指針,len讀資料的長度,機關為位元組

函數說明:從檔案或裝置中讀取資料塊

傳回值:  成功傳回讀取的位元組數,反之傳回-1

函數原型:clock_t times (struct tms *buf)

輸入參數:buf結構體指針

函數說明:相容newlib,tms的結構體指針如下:

          type struct

{clock_t  tms_utime;

clock_t  tms_stime;

clock_t  tms_cutime;

clock_t  tms_sutime;

};

tms_utime: CPU索取使用者指令的執行時間

tms_stime: CPU索取由系統表示的過程的執行時間

tms_cutime:所有子程序tms_utime和tms_cutime的時間之和

tms_sutime:所有子程序tms_stime和tms_sutime的時間之和

傳回值:  傳回時鐘數,沒有時鐘則傳回0

函數原型:int usleep (int us)

輸入參數:us,機關為微秒

函數說明:直到us微秒後才解除阻塞,即其功能相當于延時us微秒

傳回值:  成功傳回0,反之為-1,有錯誤發生顯示錯誤發生原因

函數原型:int wait(int *status)

輸入參數: status 程序狀态指針

函數說明:功能是等候所有子程序退出,由于HAL不支援分散子程序,函數立即傳回

傳回值:  status内容清0,表明沒有子程序;傳回值為-1,且errno置為ECHILD,            表明沒有子程序等候

函數原型:int write(int file, const void *ptr, size_t len)

輸入參數:file檔案描述符;ptr為讀資料的位置指針,len讀資料的長度,機關為位元組

函數說明:往檔案或裝置寫入資料塊,

傳回值:  成功傳回寫入的位元組數,也可能少于請求的長度;反之傳回-1,萬一有錯誤發生,errno被設定為發生的原因

資料的标準類型

類型 說明

alt_8 符号8位整數

alt_u8 無符号8位整數

alt_16 符号16位整數

alt_u16 無符号16位整數

alt_32 符号32位整數

alt_u32 無符号32位整數

下面為自己整理

函數原型:int  fopen (char * file_name, way_use);

輸入參數:file_name檔案名,way_use使用檔案方式,比如r,w分别對應着讀寫

函數說明:打開檔案,對其進行某種檔案操作

傳回值:  打不開則出錯,傳回一個空指針NULL

函數原型:int  fclose (fp)

輸入參數:fp的定義為:FILE *fp

函數說明:關閉檔案fp

傳回值:  成功傳回0,反之為-1(EOF)

函數原型:int  fread(void *ptr, int size, int count, FILE * fp);

輸入參數:buffer為指針;是讀入資料地存放位址;size讀位元組數;count讀位元組數地數目;fp檔案型指針

函數說明:從一個流中讀取資料

傳回值:  成功傳回值為count

函數原型:int  fwrite(void *ptr, int size, int count, FILE *fp)

輸入參數:buffer為指針;是讀入資料地存放位址;size讀位元組數;count讀位元組數地數目;fp檔案型指針,

函數說明:寫内容到流中

傳回值:  成功傳回值為count

函數原型:int  fprintf(FILE *fp, char *format[, argument,...]);

輸入參數:fp檔案型指針;format格式字元串;[, argument,...]輸出清單,如:

          fprintf(fp,“%d,%f”,i,t)

函數說明:傳送格式化輸出到一個流中

傳回值:  -

函數原型:int  fscanf(FILE * fp, char *format[,argument...])

輸入參數:fp檔案型指針;format格式字元串;[, argument,...]輸入清單,如:

          fscanf(fp,“%d,%f”,i,t)

函數說明:從一個流中執行格式化輸入

傳回值:  -

函數原型:int  fputc(int ch, FILE *fp)

輸入參數:ch字元;fp:檔案型指針

函數說明:送一個字元到一個流中

傳回值:  成功傳回字元,反之傳回-1(EOF)

函數原型:int  fgetc(FILE *fp);

輸入參數:fp:檔案型指針

函數說明:從流中讀取字元

傳回值:  遇到檔案結束傳回-1(EOF)

函數原型:int  putw(int w, FILE *fp)

輸入參數:w: 字元或字; fp:檔案型指針

函數說明:把一字元或字送到流中

傳回值:  -

函數原型:int  getw(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:從流中取一整數

傳回值:  -

函數原型:int rewind(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:将檔案指針重新指向一個流的開頭

傳回值:  -

函數原型:int fseek(FILE *fp, long offset, int fromwhere);

輸入參數:fp:檔案型指針;offset:long型偏移量;fromwhere:起始點

          起始點為0,1,2分别代表檔案開始,目前位置,檔案末尾

函數說明:重定位流上的檔案指針

傳回值:  -

函數原型:int ferror(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:檢測流上的錯誤

傳回值:  未出錯傳回值為0,反之為非0

函數原型:long ftell(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:傳回目前檔案指針,得到目前位置

傳回值:  傳回值為-1表示出錯,反之為非0

函數原型:void clearerr(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:複位錯誤标志

傳回值:  出錯為非0,反之為0

函數原型:char *fgets(char *string, int n, FILE *fp)

輸入參數:string:字元串指針;fp:檔案型指針

函數說明:從流中讀取一字元串,但隻從檔案輸入n-1個字元,後一個為‘/0’結束标志位

傳回值:  -

函數原型:nt fputs(char *string, FILE *fp)

輸入參數:string:字元串指針;fp:檔案型指針

函數說明:送一個字元串到一個流中

傳回值:  -

函數原型:int feof(FILE *fp)

輸入參數:fp:檔案型指針

函數說明:檢測流上的檔案結束符

傳回值:  -

Nios II IDE Command Line Tools

Tool Descriptor

nios2-create-system-library 建立一個新系統庫工程

nios2-create-application-project 建立一個C/C++應用庫工程

nios2-build-project 使用Nios II IDE編譯工程,建立或更新檔案編寫來編譯工程,該操作工程必須是存在目前的 Nios II IDE工作區間

nios2-import-project 導入一個以前建立的Nios II IDE工程到目前的工作區間

nios2-delete-project 從Nios II IDE工作區間删除工程

Altera Command-Line Tools

Tool Descriptor

nios2-download 為調試或運作下載下傳代碼到目标處理器

nios2-flash-programmer 程式設計資料到目标闆的flash存儲器上

nios2-gdb-server 通過TCP,用目标Nios II處理器把GNU調試器遠端的序列槽協定分組翻譯為共同測試行動小組(JTAG)的事務

nios2-terminal 用JTAG通用異步收發機(UART)執行終止Nios II系統裡面的I/O

validate_zip 核實指定的zip檔案是否相容Altera隻讀zip檔案系統

File Conversion Utilities

Utility Descriptor

bin2flash 為下載下傳到flash存儲器上,将二進制檔案轉換為.flash檔案

elf2dat 為适應Verilog HDL硬體仿真,将.elf可執行檔案格式轉換為.dat檔案格式

elf2flash 為下載下傳到flash存儲器上,将.elf可執行檔案格式轉換為.flash檔案

elf2hex 将.elf可執行檔案格式轉換為Intel.hex檔案格式

elf2mem 在指定的Nios II系統中為儲存設備生成存儲内容

elf2mif

将.elf可執行檔案格式轉換為Quartus II

記憶體初始化檔案(.mif)格式

flash2dat

為适應Verilog HDL硬體仿真,将.flash可執行檔案格式轉換為.dat檔案格式

mk-nios2-

signaltap-mnemonic-table 獲得一個.elf檔案和SOPC Builder 系統檔案(.ptf),建立一個.stp包含 Nios II子令集記憶表和Altera’s SignalTap? II logic分析儀符号的檔案

sof2flash

為下載下傳到flash存儲器上,将FPGA配置檔案(.sof)轉換為.flash檔案

Backward Compatibility Tools

Tool Descriptor

nios2-build 基于傳統SDK庫的編譯和連結軟體工程

nios2-run 下載下傳程式到Nios II處理器,終止I/O的變成

nios2-debug

下載下傳程式到Nios II處理器,啟動洞察力的調試器

nios2-console

打開FS2指令行接口(CLI),連接配接到Nios II處理器

IORD_16DIRECT(BASE, OFFSET)

從位址位置為BASE+OFFSET的寄存器中直接讀取16Bit的資料

IORD_8DIRECT(BASE, OFFSET)

從位址位置為BASE+OFFSET的寄存器中直接讀取8Bit的資料

IOWR_32DIRECT(BASE, OFFSET, DATA)

往位址位置為BASE+OFFSET的寄存器中直接寫入32Bit的資料

IOWR_16DIRECT(BASE, OFFSET, DATA) 

往位址位置為BASE+OFFSET的寄存器中直接寫入16Bit的資料

IOWR_8DIRECT(BASE, OFFSET, DATA)

往位址位置為BASE+OFFSET的寄存器中直接寫入8Bit的資料

IORD(BASE, REGNUM)

從基位址為BASE的裝置中讀取偏移量為REGNUM的寄存器裡面的值。寄存器的值在位址總線的範圍之内。

IOWR(BASE, REGNUM, DATA)

BASE為基位址,往偏移量為REGNUM寄存器中寫入資料。寄存器的值在位址總線的範圍之内。

IORD_32DIRECT(BASE, OFFSET) 

BASE為寄存器的基位址,OFFSET為寄存器的的偏移量。

從位址位置為BASE+OFFSET的寄存器中直接讀取32Bit的資料

IORD_16DIRECT(BASE, OFFSET)

從位址位置為BASE+OFFSET的寄存器中直接讀取16Bit的資料

IORD_8DIRECT(BASE, OFFSET)

從位址位置為BASE+OFFSET的寄存器中直接讀取8Bit的資料

IOWR_32DIRECT(BASE, OFFSET, DATA)

往位址位置為BASE+OFFSET的寄存器中直接寫入32Bit的資料 IOWR_16DIRECT(BASE, OFFSET, DATA) 

往位址位置為BASE+OFFSET的寄存器中直接寫入16Bit的資料

IOWR_8DIRECT(BASE, OFFSET, DATA)

往位址位置為BASE+OFFSET的寄存器中直接寫入8Bit的資料