number007cool 发表于 2011-2-23 18:38:09

关于使用NIOS API函数(例如)操作flash的相关用法的疑问?

自己写了个读写flash的函数,如下:
//向指定地址写入一个函数
void flash_write(int addr,int i)
{
    alt_flash_fd* fd;
    int ret_code;
    fd=alt_flash_open_dev("/dev/cfi_flash_0");
    if(fd)
    {
      int ret_code;
      ret_code=alt_write_flash(fd,addr,&i,sizeof(int));
    }
    alt_flash_close_dev(fd);
}
int flash_read(int addr)
{
    alt_flash_fd* fd;
    int ret_code,j;
    fd=alt_flash_open_dev("/dev/cfi_flash_0");
    if(fd)
    {
      int ret_code;
      ret_code=alt_read_flash(fd,addr,&j,sizeof(int));
      //printf("read ok!\t%d ",j);
    }
    alt_flash_close_dev(fd);
    return j;
}
然后再主函数中操作如下:
flash_write(1,123);
flash_write(2,8);
flash_write(3,9);
flash_write(6,30110222);
int k=1111;
k=flash_read(1);
printf("%d\n",k);
k=flash_read(2);
printf("%d\n",k);
k=flash_read(3);
printf("%d\n",k);
k=flash_read(6);
printf("%d\n",k);
结果最后打出的:
前三个是随机数:
最后一个数是30110222,似乎后写入的数把先写入的数据覆盖了?!
1、请问出现这种情况的原因是?
2、函数alt_read_flash(fd,addr,&j,sizeof(int))的第二个和第四个参数实际意义是什么?偏移量是干什么的?最后一个参数为什么要用sizeof()?为什么y要这样用呢?
3、我所以希望实现的效果是要将多组数据写入flash,然后再一定的触发事件下将各个地址的数据读取出来?请问怎样实现?
4、alt_read_flash对写入的数据类型及大小有何限制?(我用自己写的函数向flash写入20100222,读出后是正确的(只写入一个数然后读出).)
注:本人使用的是DE2开发板,nios 7.2的开发环境。
页: [1]
查看完整版本: 关于使用NIOS API函数(例如)操作flash的相关用法的疑问?