搜索
bottom↓
回复: 21

求助:MQX中的MFS模块,RAMDisk例程RAM换成Flash不行(已解决)

[复制链接]

出0入0汤圆

发表于 2014-5-9 16:55:56 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-6-4 13:14 编辑

这几天在研究MFS模块,想利用MCU上多余的空间做一个U盘,另外还要MQX系统认识,可以进行文件读写,将文件中的内容再通过串口发出去。

目前的硬件用的是TWR-K20D72M的板子,将RAMDisk的例程中的RAM部分屏掉,改为Flashx,而且在Config文件中已经打开了Flashx驱动,结果是可以格式化,甚至可以创建文件,但是就是不能创建路径,而且创建路径失败后,前面创建的文件也没有了,不知道什么原因?

坛子里如果有研究MQX的,可以一起看一下!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2014-5-12 09:53:16 | 显示全部楼层
楼主你好,你的问题我已经转给我们的MQX工程师,他分析之后会给你回复,请耐心等待!

出0入0汤圆

 楼主| 发表于 2014-5-12 09:58:15 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-12 09:53
楼主你好,你的问题我已经转给我们的MQX工程师,他分析之后会给你回复,请耐心等待! ...

感激不尽!

出0入0汤圆

发表于 2014-5-12 17:28:27 | 显示全部楼层
楼主你好,你这个MQX问题,到官网去建一个技术服务请求吧。
因为我们大多数的MQX工程师都是在国外,而且MQX工程师都是通过邮件的方式帮客户解决问题的。
最好用英文哦。

出0入0汤圆

 楼主| 发表于 2014-5-12 19:39:32 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-12 17:28
楼主你好,你这个MQX问题,到官网去建一个技术服务请求吧。
因为我们大多数的MQX工程师都是在国外,而且MQX ...

我英文不好啊,读起来都有点困难,再写可更难了,呵呵,谢谢你!我自己再研究研究

出0入0汤圆

发表于 2014-5-13 11:39:43 | 显示全部楼层
wangpengcheng 发表于 2014-5-12 19:39
我英文不好啊,读起来都有点困难,再写可更难了,呵呵,谢谢你!我自己再研究研究  ...

实在不好意思,我是裸板的支持。
MQX是有专门的人支持,但几乎都是国外的支持,国内的MQX工程师不是很了解你这个问题。
当然,如果你这边有裸板的任何问题都可以问我。

出0入0汤圆

 楼主| 发表于 2014-5-13 21:58:32 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-13 11:39
实在不好意思,我是裸板的支持。
MQX是有专门的人支持,但几乎都是国外的支持,国内的MQX工程师不是很了 ...

没事,呵呵,我还在想办法!谢谢啊!要是搞定了,我会在此说明方法的!

出0入0汤圆

发表于 2014-5-14 08:58:37 | 显示全部楼层
wangpengcheng 发表于 2014-5-13 21:58
没事,呵呵,我还在想办法!谢谢啊!要是搞定了,我会在此说明方法的! ...

好的,多谢你一直以来对坛子的关照!

出0入0汤圆

 楼主| 发表于 2014-5-14 09:18:42 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-14 08:58
好的,多谢你一直以来对坛子的关照!

呵呵,我也是想弄个塔式开发板什么的玩玩

出0入0汤圆

发表于 2014-5-14 10:47:45 | 显示全部楼层
wangpengcheng 发表于 2014-5-14 09:18
呵呵,我也是想弄个塔式开发板什么的玩玩

照现在的情况,你坚持下去很有希望哦,坛子中没有人比你更活跃了。

出0入0汤圆

 楼主| 发表于 2014-5-14 11:07:22 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-14 10:47
照现在的情况,你坚持下去很有希望哦,坛子中没有人比你更活跃了。

可以混个脸熟

出0入0汤圆

发表于 2014-5-14 11:13:36 | 显示全部楼层

你的账号已经很熟了,因为当时我是额外帮你搞的邀请码,哈哈!
看你这么活跃,邀请码也是非常值得给你的。

出0入0汤圆

 楼主| 发表于 2014-5-15 11:53:04 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2014-5-14 11:13
你的账号已经很熟了,因为当时我是额外帮你搞的邀请码,哈哈!
看你这么活跃,邀请码也是非常值得给你的 ...

搞定了,呵呵!

当MFS中选择除了除RAM外的其它的存储设备的时候,不能用默认格式化,需要根据自己的存储设备作格式化,因为我选用的是片内的Flash,格式化函数如下:

  1. void Format(MQX_FILE_PTR mfs_fd_ptr)
  2. {
  3.     int32_t                 error_code;
  4.     uint32_t                bad_cluster_count;
  5.     MFS_IOCTL_FORMAT_PARAM  format_struct;
  6.     MFS_FORMAT_DATA         MFS_format =
  7.     {
  8.         0x80,        //PHYSICAL_DRIVE—0x00:软盘;0x80:硬盘,对于SD卡或CF卡等设备可以选择0x80
  9.         0xF8, //MEDIA_DESCRIPTOR---0xFD:5.25寸360K磁盘;0xF9:5.25寸1200K磁盘或3.5寸720K磁盘;0xF0:3.5寸1.44M磁盘或其它可移动存储设备;0xF8:硬盘或其它不可移动设备
  10.         1024, //BYTES_PER_SECTOR---扇区的大小,通常512字节
  11.         1,      //SECTORS_PER_TRACK---一个轨道上的扇区数,对SD卡来说设为1
  12.         1,      //NUMBER_OF_HEADS---磁头的数目,对SD卡来说设为1
  13.         32,    //NUMBER_OF_SECTORS---:存储设备上的扇区数(或page数目)
  14.         0,      //HIDDEN_SECTORS---隐藏扇区数,对软盘和SD卡设为0,对于硬盘指的是从硬盘开始位置到分区起始位置之间的扇区数
  15.         0       //RESERVED_SECTORS---保留扇区数
  16.     };
  17.     format_struct.FORMAT_PTR = &MFS_format;
  18.     format_struct.COUNT_PTR = &bad_cluster_count;
  19.     error_code = ioctl(mfs_fd_ptr, IO_IOCTL_FORMAT, (uint32_t *)&format_struct);
  20.     if(!error_code)
  21.     {
  22.         printf("the count of bad clusters is:%d\n", bad_cluster_count);
  23.     }
  24. }
复制代码


我只是使用了DFlash,所以没有做分区管理功能,如果要将空余的PFlash与DFlash一起做的话,就要做分区管理,呵呵,以后有空再研究了!

可以结贴了,但楼主位已经不能编辑了!

出0入0汤圆

发表于 2014-7-23 16:23:12 | 显示全部楼层
请问PFlash与DFlash各指的是什么类型的FLASH?
PFlash是并行FLASH?
DFlash是norflash?

出0入0汤圆

 楼主| 发表于 2014-7-23 22:02:54 | 显示全部楼层
qchwu 发表于 2014-7-23 16:23
请问PFlash与DFlash各指的是什么类型的FLASH?
PFlash是并行FLASH?
DFlash是norflash?

读写方式都是一样的,只是起始地址不一样!都是内部flash!

出0入0汤圆

发表于 2014-8-21 11:19:55 | 显示全部楼层
我在使用K60,将片内FLASH,0x60000-0x7ffff挂载了,然后用MFS进行格式化,出错,用带参数格式他,也出错,返回错误代码为0x301d,
根据手册上看,他的“Sector size of 2 Kbytes”,我的参数设置如下:
                   MFS_FORMAT_DATA         MFS_format =
    {
        0x80,        //PHYSICAL_DRIVE—0x00:软盘;0x80:硬盘,对于SD卡或CF卡等设备可以选择0x80
        0xF8, //MEDIA_DESCRIPTOR---0xFD:5.25寸360K磁盘;0xF9:5.25寸1200K磁盘或3.5寸720K磁盘;0xF0:3.5寸1.44M磁盘或其它可移动存储设备;0xF8:硬盘或其它不可移动设备
        2048, //BYTES_PER_SECTOR---扇区的大小,通常512字节
        1,      //SECTORS_PER_TRACK---一个轨道上的扇区数,对SD卡来说设为1
        1,      //NUMBER_OF_HEADS---磁头的数目,对SD卡来说设为1
       64,    //NUMBER_OF_SECTORS---:存储设备上的扇区数(或page数目)
        0,      //HIDDEN_SECTORS---隐藏扇区数,对软盘和SD卡设为0,对于硬盘指的是从硬盘开始位置到分区起始位置之间的扇区数
        0       //RESERVED_SECTORS---保留扇区数
    };

这种设置,错误在哪?
wangpengcheng 给点指点吧,谢谢!

出0入0汤圆

 楼主| 发表于 2014-8-22 10:39:06 | 显示全部楼层
qchwu 发表于 2014-8-21 11:19
我在使用K60,将片内FLASH,0x60000-0x7ffff挂载了,然后用MFS进行格式化,出错,用带参数格式他,也出错, ...

在你的MQX工程里查找MFS_SECTOR_SIZE常量,它默认定义的是512,把它改成你的Flash sector size 试试!

出0入0汤圆

发表于 2014-8-26 09:23:59 | 显示全部楼层
还是不行,格式化错误,0x301d,下面链接的问题和我这一样,也没有解决。
https://community.freescale.com/thread/63310

出0入0汤圆

 楼主| 发表于 2014-8-26 09:44:19 | 显示全部楼层
看一下flashx驱动中的ioctrl函数中有个get flash sector的参数是否正确!

出0入0汤圆

 楼主| 发表于 2014-8-26 09:44:34 | 显示全部楼层
qchwu 发表于 2014-8-26 09:23
还是不行,格式化错误,0x301d,下面链接的问题和我这一样,也没有解决。
https://community.freescale.com ...

看一下flashx驱动中的ioctrl函数中有个get flash sector的参数是否正确!

出0入0汤圆

发表于 2014-8-26 11:24:23 | 显示全部楼层
开始读取时正确,但是最终返回到sector_size和num_sectors时就是一很大的值,好像IOCTL传递数据地址错误一下,但是函数是正确的。
带参数格式化,基本的赋值也不对,




难道是编译器设置不对?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-8-26 15:04:51 | 显示全部楼层
qchwu 发表于 2014-8-26 11:24
开始读取时正确,但是最终返回到sector_size和num_sectors时就是一很大的值,好像IOCTL传递数据地址错误一 ...

跟编译器没关系,他那两个参数来自于 ioctrl函数,你得查一下你 ioctrl函数中的获取那两个值的地方到底正不正确!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 17:58

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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