<?xml version="1.0" encoding="gbk"?> <rss version="2.0"><channel> <title>定阅帖子更新</title> <link>http://www.broadkey.com.cn/XML.ASP</link><description>TEAM Board - 科伟奇电子</description> <copyright>TEAM 2.0.5 Release</copyright><generator>TEAM Board by TEAM5.Cn Studio</generator> <ttl>30</ttl><item><link>http://www.broadkey.com.cn/Thread.asp?tid=155 </link><title>NIOS&amp;nbsp;II常用函数详解</title><author>michael</author><pubDate>2009/11/30 17:35:52</pubDate><description><![CDATA[<p>NIOS II常用函数详解 (转)<br />
IO操作函数 <br />
函数原型：IORD(BASE, REGNUM) <br />
输入参数：BASE为寄存器的基地址，REGNUM为寄存器的偏移量 <br />
函数说明：从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值。寄存器的值在地址总线的范围之内。 <br />
返回值： －</p>
<p>函数原型：IOWR(BASE, REGNUM, DATA) <br />
输入参数：BASE为寄存器的基地址，REGNUM为寄存器的偏移量，DATA为要写入的数据 <br />
函数说明：往偏移量为REGNUM寄存器中写入数据。寄存器的值在地址总线的范围之内。 <br />
返回值： －</p>
<p>函数原型：IORD_32DIRECT(BASE, OFFSET) <br />
输入参数：BASE为寄存器的基地址，OFFSET为寄存器的的偏移量 <br />
函数说明：从地址位置为BASE+OFFSET的寄存器中直接读取32Bit的数据 <br />
返回值： －</p>
<p>函数原型：IORD_16DIRECT(BASE, OFFSET) <br />
输入参数：BASE为寄存器的基地址，OFFSET为寄存器的的偏移量 <br />
函数说明：从地址位置为BASE+OFFSET的寄存器中直接读取16Bit的数据 <br />
返回值： －</p>
<p>函数原型：IORD_8DIRECT(BASE, OFFSET) <br />
输入参数：BASE为寄存器的基地址，OFFSET为寄存器的的偏移量 <br />
函数说明：从地址位置为BASE+OFFSET的寄存器中直接读取8Bit的数据 <br />
返回值： －</p>
<p>函数原型：IOWR_32DIRECT(BASE, OFFSET, DATA) <br />
输入参数：BASE为寄存器的基地址，REGNUM为寄存器的偏移量，DATA为要写入的数据 <br />
函数说明：往地址位置为BASE+OFFSET的寄存器中直接写入32Bit的数据 <br />
返回值： －</p>
<p>函数原型：IOWR_16DIRECT(BASE, OFFSET, DATA) <br />
输入参数：BASE为寄存器的基地址，REGNUM为寄存器的偏移量，DATA为要写入的数据 <br />
函数说明：往地址位置为BASE+OFFSET的寄存器中直接写入16Bit的数据 <br />
返回值： －</p>
<p>函数原型：IOWR_8DIRECT(BASE, OFFSET, DATA) <br />
输入参数：BASE为寄存器的基地址，REGNUM为寄存器的偏移量，DATA为要写入的数据 <br />
函数说明：往地址位置为BASE+OFFSET的寄存器中直接写入8Bit的数据 <br />
返回值： －</p>
<p>Dma： <br />
函数原型：int alt_dma_rxchan_close (alt_dma_rxchan rxchan) <br />
输入参数：rxchan为接收信道 <br />
函数说明：函数 alt_dma_rxchan_close ()通知系统：应用程序已经完成DMA <br />
接收信道rxchan，目前执行是成功的 <br />
返回值： 成功返回为0，反之为－1</p>
<p>函数原型：alt_dma_rxchan_depth(alt_dma_rxchan dma) <br />
输入参数：dma <br />
函数说明：函数alt_dma_rxchan_depth ()返回传送到特别DMA的最大数量(深度)的接收请求 <br />
返回值： DMA的最大数量</p>
<p>函数原型：int alt_dma_rxchan_ioctl (alt_dma_rxchan dma, int req, void* arg) <br />
输入参数：dma直接存储器名, req为请求操作的列举, arg由请求决定 <br />
函数说明：通过DMA接收信道执行设备的具体I/O操作 <br />
返回值： 成功返回请求具体值，反之返回为负数</p>
<p>请求类型 <br />
请求类型 请求类型说明 <br />
ALT_DMA_SET_MODE_8 传输以8Bit为单位的数据，arg值忽略 <br />
ALT_DMA_SET_MODE_16 传输以16Bit为单位的数据，arg值忽略 <br />
ALT_DMA_SET_MODE_32 传输以32Bit为单位的数据，arg值忽略 <br />
ALT_DMA_SET_MODE_64 传输以64Bit为单位的数据，arg值忽略 <br />
ALT_DMA_SET_MODE_128 传输以128Bit为单位的数据，arg值忽略 <br />
ALT_DMA_TX_ONLY_ON (1) 软件控制下只能发送 <br />
ALT_DMA_TX_ONLY_OFF (1) 自定义模式，软件控制下可以接收，发送 <br />
ALT_DMA_RX_ONLY_ON (1) 软件控制下只能接收 <br />
ALT_DMA_RX_ONLY_OFF (1) 自定义模式，软件控制下可以接收，发送 <br />
函数原型：alt_dma_rxchan alt_dma_rxchan_open (const char* name)</p>
<p>输入参数：name为常数字符指针，如/dev/dma_0 <br />
函数说明：为DMA接收信道获得一个alt_dma_rxchan描述符 <br />
返回值： 成功返回非0，反之返回为0</p>
<p>函数原型：int alt_dma_rxchan_prepare (alt_dma_rxchan dma, void* data, <br />
alt_u32 length, alt_rxchan_done * done, void* handle) <br />
输入参数：dma使用的信道；data接收数据位置的指针；length最大的接收数据长度；done一旦数据被接收，调用返回函数；handle，非透明值传到done函数说明：发送一个接收请求到DMA接收信道， <br />
返回值： 成功返回0，反之返回为负数</p>
<p>函数原型：int alt_dma_rxchan_reg (alt_dma_rxchan_dev * dev) <br />
输入参数：dev接收信道设备名 <br />
函数说明：给系统寄存DMA接收信道 <br />
返回值： 成功返回0，反之返回为负数</p>
<p>函数原型：int alt_dma_txchan_close (alt_dma_txchan txchan) <br />
输入参数：txchan发送信道名 <br />
函数说明：通知系统：应用程序已经完成DMA发送信道txchan <br />
返回值： 成功返回0，反之返回为负数</p>
<p>函数原型：int alt_dma_txchan_ioctl (alt_dma_txchan dma, int req, void* arg) <br />
输入参数：dma直接存储器名；req为请求操作的列举；arg请求的额外参数，由请求决定 <br />
函数说明：通过DMA发送信道执行设备的具体I/O操作 <br />
返回值： 成功返回请求具体值，反之返回为负数</p>
<p>函数原型：alt_dma_txchan alt_dma_txchan_open (const char* name) <br />
输入参数：name为常数字符指针，如/dev/dma_0 <br />
函数说明：为DMA发送信道获得一个alt_dma_rxchan描述符 <br />
返回值： 成功返回非0，反之返回为0</p>
<p>函数原型：int alt_dma_txchan_reg (alt_dma_txchan_dev* dev) <br />
输入参数：dev接收信道设备名 <br />
函数说明：给系统寄存DMA发送信道 <br />
返回值： 成功返回0，反之返回为负数</p>
<p>函数原型：int alt_dma_txchan_send (alt_dma_txchan dma, const void* from, <br />
alt_u32 length, alt_txchan_done* done, void* handle) <br />
输入参数：dma使用的信道；data接收数据位置的指针；length最大的接收数据长度；done一旦数据被接收，调用返回函数；handle，非透明值传到done <br />
函数说明：发送一个发送请求到DMA发送信道， <br />
返回值： 发送成功返回0，反之返回为负数</p>
<p>函数原型：nt alt_dma_txchan_space (alt_dma_txchan dma) <br />
输入参数：dma 直接存储器名 <br />
函数说明：返回被传送到具体DMA发送信道的发送请求数目 <br />
返回值： 返回发送请求数目</p>
<p>Flash <br />
函数原型：int alt_erase_flash_block(alt_flash_fd* fd, int offset, int length) <br />
输入参数：fd为具体的flash设备；offset擦除的flash模块的偏移量；length擦除的flash模块的长度 <br />
函数说明：擦除单独的一个flash模块 <br />
返回值： 发送成功返回0，反之返回为负数</p>
<p>函数原型：void alt_flash_close_dev(alt_flash_fd * fd) <br />
输入参数：fd为具体的flash设备 <br />
函数说明：关闭flash设备 <br />
返回值： －</p>
<p>函数原型：alt_flash_fd * alt_flash_open_dev(const char* name) <br />
输入参数： <br />
函数说明：打开flash设备。一旦打开，函数alt_write_flash()用来写入，函数alt_read_flash()用来读取数据，或者使用函数alt_get_flash_info(), alt_erase_flash_block(), alt_write_flash_block(),控制单个模块 <br />
返回值： 失败返回0，成功其他值</p>
<p>函数原型：int alt_get_flash_info(alt_flash_fd* fd, flash_region ** info, <br />
int* number_of_regions) <br />
输入参数：fd flash设备；info指向flash_region结构体的指针；number_of_regions <br />
函数说明：得到擦除flash区域的细节 <br />
返回值： 发送成功返回0，反之返回为负数</p>
<p>函数原型：int alt_read_flash(alt_flash_fd* fd, int offset, void* dest_addr, int length) <br />
输入参数：dest_addr目标地址指针 <br />
函数说明：从flash偏移量为offset字节开始读取数据，写入到目标地址dest_addr中 <br />
返回值： 成功返回0，反之为非0</p>
<p>函数原型：int alt_write_flash(alt_flash_fd* fd, int offset, const void* src_addr, <br />
int length) <br />
输入参数：src_addr源地址；fd，flash设备；offset 偏移量；length字节长度 <br />
函数说明：写数据到flsah中，要写的数据在源地址src_addr中 <br />
返回值： 成功返回0，反之为非0</p>
<p>函数原型：int alt_write_flash_block(alt_flash_fd* fd, int block_offset, int data_offset, <br />
const void *data, int length) <br />
输入参数：fd；data_offset起始写数据的偏移量；length为要写数据的长度 <br />
函数说明：写入到一个已擦除的flash模块 <br />
返回值： 成功返回0，反之为非0</p>
<p>Irq <br />
函数原型：alt_irq_context alt_irq_disable_all (void) <br />
输入参数：void <br />
函数说明：禁止所有中断 <br />
返回值： 传递的值作为随后的函数调用的输入参数</p>
<p>函数原型：void alt_irq_enable_all (alt_irq_context context) <br />
输入参数：先前调用函数alt_irq_disable_all (void)的返回值， <br />
函数说明：启动所有中断 <br />
返回值： －</p>
<p>函数原型：int alt_irq_enabled (void) <br />
输入参数：void <br />
函数说明：启动中断 <br />
返回值： 禁止中断返回0，反之为非0</p>
<p>函数原型：int alt_irq_register (alt_u32 id, void* context, void (*isr)(void*, alt_u32)) <br />
输入参数：id,32位无符号数，中断使能；context和id是isr的两个输入参数；中断激活时调用isr <br />
函数说明：寄存一个isr <br />
返回值： 成功返回0，反之为非0</p>
<p>函数原型：int alt_write_flash(alt_flash_fd* fd, int offset, const void* src_addr, <br />
int length) <br />
输入参数：src_addr源地址；fd，flash设备；offset 偏移量；length字节长度 <br />
函数说明：写数据到flsah中，要写的数据在源地址src_addr中 <br />
返回值： 成功返回0，反之为非0</p>
<p>函数原型：int alt_write_flash_block(alt_flash_fd* fd, int block_offset, int data_offset, <br />
const void *data, int length) <br />
输入参数：fd；data_offset起始写数据的偏移量；length为要写数据的长度 <br />
函数说明：写入到一个已擦除的flash模块 <br />
返回值： 成功返回0，反之为非0</p>
<p>函数原型：int close (int filedes) <br />
输入参数：filedes，描述符 <br />
函数说明：标准的UNIX函数close()，关闭文件描述符filedes <br />
返回值： 成功返回0，反之为－1</p>
<p>函数原型：int open (const char* pathname, int flags, mode_t mode) <br />
输入参数：pathname, 路径名；flags,O_RDONLY或O_WRONLY 或O_RDW R,分别对应着只读，只写，或读写操作；mode，使用许可说明 <br />
函数说明：打开文件或设备，返回一个文件描述符（读写中使用的非负整数） <br />
返回值： 成功返回文件描述符，反之返回－1</p>
<p>函数原型：int read(int file, void *ptr, size_t len) <br />
输入参数：file文件描述符；ptr为读数据的位置指针，len读数据的长度，单位为字节 <br />
函数说明：从文件或设备中读取数据块 <br />
返回值： 成功返回读取的字节数，反之返回－1</p>
<p>函数原型：clock_t times (struct tms *buf) <br />
输入参数：buf结构体指针 <br />
函数说明：兼容newlib，tms的结构体指针如下： <br />
type struct <br />
{clock_t tms_utime; <br />
clock_t tms_stime; <br />
clock_t tms_cutime; <br />
clock_t tms_sutime; <br />
}; <br />
tms_utime： CPU索取用户指令的执行时间 <br />
tms_stime： CPU索取由系统表示的过程的执行时间 <br />
tms_cutime：所有子进程tms_utime和tms_cutime的时间之和 <br />
tms_sutime：所有子进程tms_stime和tms_sutime的时间之和 <br />
返回值： 返回时钟数，没有时钟则返回0</p>
<p>函数原型：int usleep (int us) <br />
输入参数：us,单位为微秒 <br />
函数说明：直到us微秒后才解除阻塞，即其功能相当于延时us微秒 <br />
返回值： 成功返回0，反之为－1，有错误发生显示错误发生原因</p>
<p>函数原型：int wait(int *status) <br />
输入参数： status 进程状态指针 <br />
函数说明：功能是等候所有子进程退出，由于HAL不支持分散子进程，函数立即返回 <br />
返回值： status内容清0，表明没有子进程；返回值为－1，且errno置为ECHILD， 表明没有子进程等候</p>
<p>函数原型：int write(int file, const void *ptr, size_t len) <br />
输入参数：file文件描述符；ptr为读数据的位置指针，len读数据的长度，单位为字节 <br />
函数说明：往文件或设备写入数据块， <br />
返回值： 成功返回写入的字节数，也可能少于请求的长度；反之返回－1，万一有错误发生，errno被设置为发生的原因 <br />
数据的标准类型</p>
<p>类型 说明 <br />
alt_8 符号8位整数 <br />
alt_u8 无符号8位整数 <br />
alt_16 符号16位整数 <br />
alt_u16 无符号16位整数 <br />
alt_32 符号32位整数 <br />
alt_u32 无符号32位整数 <br />
//////////////////////////////////////////</p>
<p>函数原型：int fopen (char * file_name, way_use); <br />
输入参数：file_name文件名，way_use使用文件方式，比如r，w分别对应着读写 <br />
函数说明：打开文件，对其进行某种文件操作 <br />
返回值： 打不开则出错，回一个空指针NULL</p>
<p>函数原型：int fclose (fp) <br />
输入参数：fp的定义为：FILE *fp <br />
函数说明：关闭文件fp <br />
返回值： 成功返回0，反之为－1（EOF）</p>
<p>函数原型：int fread(void *ptr, int size, int count, FILE * fp); <br />
输入参数：buffer为指针；是读入数据地存放地址；size读字节数；count读字节数地数目；fp文件型指针 <br />
函数说明：从一个流中读取数据 <br />
返回值： 成功返回值为count</p>
<p>函数原型：int fwrite(void *ptr, int size, int count, FILE *fp) <br />
输入参数：buffer为指针；是读入数据地存放地址；size读字节数；count读字节数地数目；fp文件型指针， <br />
函数说明：写内容到流中 <br />
返回值： 成功返回值为count</p>
<p>函数原型：int fprintf(FILE *fp, char *format[, argument,...]); <br />
输入参数：fp文件型指针；format格式字符串；[, argument,...]输出列表,如： <br />
fprintf(fp,&ldquo;%d,%f&rdquo;,i,t) <br />
函数说明：传送格式化输出到一个流中 <br />
返回值： －</p>
<p>函数原型：int fscanf(FILE * fp, char *format[,argument...]) <br />
输入参数：fp文件型指针；format格式字符串；[, argument,...]输入列表，如： <br />
fscanf(fp,&ldquo;%d,%f&rdquo;,i,t) <br />
函数说明：从一个流中执行格式化输入 <br />
返回值： －</p>
<p>函数原型：int fputc(int ch, FILE *fp) <br />
输入参数：ch字符；fp：文件型指针 <br />
函数说明：送一个字符到一个流中 <br />
返回值： 成功返回字符，反之返回－1（EOF）</p>
<p>函数原型：int fgetc(FILE *fp); <br />
输入参数：fp：文件型指针 <br />
函数说明：从流中读取字符 <br />
返回值： 遇到文件结束返回－1（EOF）</p>
<p>函数原型：int putw(int w, FILE *fp) <br />
输入参数：w: 字符或字; fp：文件型指针 <br />
函数说明：把一字符或字送到流中 <br />
返回值： －</p>
<p>函数原型：int getw(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：从流中取一整数 <br />
返回值： －</p>
<p>函数原型：int rewind(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：将文件指针重新指向一个流的开头 <br />
返回值： －</p>
<p>函数原型：int fseek(FILE *fp, long offset, int fromwhere); <br />
输入参数：fp：文件型指针；offset：long型偏移量；fromwhere：起始点 <br />
起始点为0，1，2分别代表文件开始，当前位置，文件末尾 <br />
函数说明：重定位流上的文件指针 <br />
返回值： －</p>
<p>函数原型：int ferror(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：检测流上的错误 <br />
返回值： 未出错返回值为0，反之为非0</p>
<p>函数原型：long ftell(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：返回当前文件指针，得到当前位置 <br />
返回值： 返回值为－1表示出错，反之为非0</p>
<p>函数原型：void clearerr(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：复位错误标志 <br />
返回值： 出错为非0，反之为0</p>
<p>函数原型：char *fgets(char *string, int n, FILE *fp) <br />
输入参数：string：字符串指针；fp：文件型指针 <br />
函数说明：从流中读取一字符串，但只从文件输入n－1个字符，后一个为&lsquo;\0&rsquo;结束标志位 <br />
返回值： －</p>
<p>函数原型：nt fputs(char *string, FILE *fp) <br />
输入参数：string：字符串指针；fp：文件型指针 <br />
函数说明：送一个字符串到一个流中 <br />
返回值： －</p>
<p>函数原型：int feof(FILE *fp) <br />
输入参数：fp：文件型指针 <br />
函数说明：检测流上的文件结束符 <br />
返回值： －</p>
<p>Nios II IDE Command Line Tools <br />
Tool Descriptor <br />
nios2-create-system-library 创建一个新系统库工程 <br />
nios2-create-application-project 创建一个C/C++应用库工程 <br />
nios2-build-project 使用Nios II IDE编译工程，创建或更新文件编写来编译工程，该操作工程必须是存在当前的Nios II IDE工作区间 <br />
nios2-import-project 导入一个以前创建的Nios II IDE工程到当前的工作区间 <br />
nios2-delete-project 从Nios II IDE工作区间删除工程</p>
<p>Altera Command-Line Tools <br />
Tool Descriptor <br />
nios2-download 为调试或运行下载代码到目标处理器 <br />
nios2-flash-programmer 编程数据到目标板的flash存储器上 <br />
nios2-gdb-server 通过TCP,用目标Nios II处理器把GNU调试器远程的串口协议分组翻译为共同测试行动小组（JTAG）的事务 <br />
nios2-terminal 用JTAG通用异步收发机（UART）执行终止Nios II系统里面的I/O <br />
validate_zip 核实指定的zip文件是否兼容Altera只读zip文件系统</p>
<p>File Conversion Utilities <br />
Utility Descriptor <br />
bin2flash 为下载到flash存储器上，将二进制文件转换为.flash文件 <br />
elf2dat 为适应Verilog HDL硬件仿真，将.elf可执行文件格式转换为.dat文件格式 <br />
elf2flash 为下载到flash存储器上，将.elf可执行文件格式转换为.flash文件 <br />
elf2hex 将.elf可执行文件格式转换为Intel.hex文件格式 <br />
elf2mem 在指定的Nios II系统中为存储设备生成存储内容 <br />
elf2mif <br />
将.elf可执行文件格式转换为Quartus II <br />
内存初始化文件（.mif）格式 <br />
flash2dat <br />
为适应Verilog HDL硬件仿真，将.flash可执行文件格式转换为.dat文件格式 <br />
mk-nios2- <br />
signaltap-mnemonic-table 获得一个.elf文件和SOPC Builder 系统文件（.ptf），创建一个.stp包含Nios II子令集记忆表和Altera&rsquo;s SignalTap? II logic分析仪符号的文件 <br />
sof2flash <br />
为下载到flash存储器上，将FPGA配置文件（.sof）转换为.flash文件 <br />
Backward Compatibility Tools <br />
Tool Descriptor <br />
nios2-build 基于传统SDK库的编译和链接软件工程 <br />
nios2-run 下载程序到Nios II处理器，终止I/O的变成 <br />
nios2-debug <br />
下载程序到Nios II处理器，启动洞察力的调试器 <br />
nios2-console <br />
打开FS2命令行接口（CLI），连接到Nios II处理器</p>
<p>IORD_16DIRECT(BASE, OFFSET) <br />
从地址位置为BASE+OFFSET的寄存器中直接读取16Bit的数据 <br />
IORD_8DIRECT(BASE, OFFSET) <br />
从地址位置为BASE+OFFSET的寄存器中直接读取8Bit的数据 <br />
IOWR_32DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入32Bit的数据 <br />
IOWR_16DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入16Bit的数据</p>
<p>IOWR_8DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入8Bit的数据 <br />
IORD(BASE, REGNUM) <br />
从基地址为BASE的设备中读取偏移量为REGNUM的寄存器里面的值。寄存器的值在地址总线的范围之内。 <br />
IOWR(BASE, REGNUM, DATA) <br />
BASE为基地址，往偏移量为REGNUM寄存器中写入数据。寄存器的值在地址总线的范围之内。 <br />
IORD_32DIRECT(BASE, OFFSET) <br />
BASE为寄存器的基地址，OFFSET为寄存器的的偏移量。 <br />
从地址位置为BASE+OFFSET的寄存器中直接读取32Bit的数据 <br />
IORD_16DIRECT(BASE, OFFSET) <br />
从地址位置为BASE+OFFSET的寄存器中直接读取16Bit的数据 <br />
IORD_8DIRECT(BASE, OFFSET) <br />
从地址位置为BASE+OFFSET的寄存器中直接读取8Bit的数据 <br />
IOWR_32DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入32Bit的数据 <br />
IOWR_16DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入16Bit的数据 <br />
IOWR_8DIRECT(BASE, OFFSET, DATA) <br />
往地址位置为BASE+OFFSET的寄存器中直接写入8Bit的数据</p>]]></description></item></channel></rss>