OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5934|回复: 2

想在战舰板上的W25Q64上建立文件系统遇到问题。。

[复制链接]

3

主题

10

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-4-7
在线时间
0 小时
发表于 2013-9-9 11:42:03 | 显示全部楼层 |阅读模式

              
//。。。。。初始化程序(省略)。。。。 

mem_init(SRAMIN);
   exfuns_init();     //为文件系统分配内存
  
    f_mount(0,fs[0]);      //挂载磁盘0---SD卡
    f_mount(1,fs[1]);     //挂在磁盘1 ---W25Q64
  
  printf("\r\nSPI Flash格式化开始。。。。。。");
  re=f_mkfs(1,0,4096);//Flash上创建文件系统
  if (res == FR_OK)
 {
  printf("\r\n格式化成功。。。。");
 }
   re=f_open(&fsouce,"0:/Demo.txt",FA_OPEN_EXISTING|FA_READ);  //打开SD卡根目录下 demo.txt文件
 if(re==FR_OK)
 {
  printf("\r\n源文件打开成功");
 
    re=f_open(&fdst,"1:/Demo.txt",FA_OPEN_ALWAYS|FA_WRITE);//Flash上创建demo.txt文件  ----------A
  if(re==FR_OK)
   {
   printf("\r\n目标文件创建成功。。。。");
    }
 }
//    re=f_opendir(&dir1,"1:");
//    while(1)
//    {
//    re=f_readdir(&dir1,&fio1);  //检查Flash上的文件,已经确定成功在Flash上创建了demo.txt文件
//    }
 printf("\n\r开始复制。。。。。");
  while(1)
  {
   for ( a=0; a<512; a++ )                            /* 清缓存 */
    buffer[a]=0;
   re=f_read(&fsouce,buffer,512,&bread);  //读取SD卡上文件数据---------B
  if (res || bread == 0) break;   /* error or eof */
   f_write(&fdst,buffer,bread,(UINT *)&bw); //写入新建立在Falsh上的demo.txt文件内
    if(re ||bw<bread)   break;
  }
  f_close(&fsouce);
  f_close(&fdst);
  }
   myfree(SRAMIN,fftemp); //释放内存
  myfree(SRAMIN,tempbuf); //??·?????

另外,文件系统内关于disk_ioctl()函数中关于Flsah 的设定
if(drv==EX_FLASH) //????FLASH 
 {
     switch(ctrl)
     {

case CTRL_SYNC:
    res = RES_OK;
          break; 
      case GET_SECTOR_SIZE:
          *(WORD*)buff = FLASH_SECTOR_SIZE;  //512
          res = RES_OK;
          break; 
      case GET_BLOCK_SIZE:
          *(WORD*)buff = FLASH_BLOCK_SIZE;  //8
          res = RES_OK;
          break; 
      case GET_SECTOR_COUNT:
          *(DWORD*)buff = FLASH_SECTOR_COUNT;  //2048*6
          res = RES_OK;
          break;
      default:
          res = RES_PARERR;
          break;
}}else res=RES_ERROR;
    return res;

问题:

如果屏蔽掉A句,B能正确的读出SD卡上的文件数据,如果不屏蔽掉A,B读出错,代码为0x01. 对SPI Flash上创建文件系统和创建demo.txt操作都成功的。不知道是哪里出了问题。。。。。请指点一下谢谢!

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

10

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2013-4-7
在线时间
0 小时
 楼主| 发表于 2013-9-9 16:35:18 | 显示全部楼层
          没有人这样实现过吗?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-9 17:19:09 | 显示全部楼层
返回0X01说明底层有问题,检查底层接口函数。
我们战舰板的现成例子可以好好参考下。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-13 07:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表