简单的方法是直接对地址读写。 函数原型:IORD(BASE, REGNUM) 输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量 函数说明:从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值。寄存器的值在地址总线的范围之内。 返回值: -
函数原型:IOWR(BASE, REGNUM, DATA) 输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量,DATA为要写入的数据 函数说明:往偏移量为REGNUM寄存器中写入数据。寄存器的值在地址总线的范围之内。 返回值: - 或者: 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
更多见nios software handbook.pdf,网上有!
|