dmjkun 发表于 2013-3-7 23:51:16

rtt格式化spi flash

使用mkfs("elm","spi1")
格式化spi flash,没有成功,提示can not find device driver:spi1
但使用list_deive()命令
device    type      
-------- ----------
e0       Network Interface
rtc      RTC      
sd0      Character Device
spi1   Block Device
uart3    Character Device
uart2    Character Device
uart1    Character Device
有设备的驱动,

是什么原因,谢谢

aozima 发表于 2013-3-8 01:49:25

应该属于早期,mkfs时,仅从mount table里面find,而不是从系统里面find。
需要先mount(此时mount并不做文件系统的检查),然后再mkfs。

现已修改为:不管是否mount,都可以mkfs,建议先mkfs再mount,或已经mount的先unmount再mkfs再mount回。
同时,mount时会做格式,如果没有系统,或已完全损坏,则mount不成功。
相关修改见:elm fatfs support mkfs with no need torun dfs_mount elm first; and can mount/umount/mkfs without reset any more

dmjkun 发表于 2013-3-10 15:36:52

早期是什么意思,我的系统 是最新的1.1

aozima 发表于 2013-5-30 10:07:27

本帖最后由 aozima 于 2013-5-30 10:14 编辑

dmjkun 发表于 2013-3-10 15:36 static/image/common/back.gif
早期是什么意思,我的系统 是最新的1.1

即: 需要使用上面给出的补丁之后的版本

可以在github上面clone一份出来,或直接按上面链接的diff对比 components/dfs/filesystems/elmfat/dfs_elm.c

aozima 发表于 2013-5-30 10:12:38

应该属于早期,mkfs时,仅从mount table里面find,而不是从系统里面find。
需要先mount(此时mount并不做文件系统的检查),然后再mkfs。

现已修改为:不管是否mount,都可以mkfs,建议先mkfs再mount,或已经mount的先unmount再mkfs再mount回。
同时,mount时会做文件系统检查,如果没有文件系统,或已完全损坏,则mount不成功。

此时可以根据mount的返回值和实际需求,做自动格式化(危险操作,可能会误删数据,建议非必要的情况下不要让程序自动格式化)。
相关修改见:elm fatfs support mkfs with no need torun dfs_mount elm first; and can mount/umount/mkfs without reset any more

参考代码:    /* Filesystem Initialization */
#ifdef RT_USING_DFS
    {
      rt_bool_t mount_flag = RT_FALSE;

      if (dfs_mount("flash0", "/", "elm", 0, 0) == 0)
      {
            mount_flag = RT_TRUE;
      }
      else
      {
            rt_kprintf("flash0 mount to / failed!, fatmat and try again!\n");

            /* fatmat filesystem. */
            dfs_mkfs("elm", "flash0");

            /* re-try mount. */
            if (dfs_mount("flash0", "/", "elm", 0, 0) == 0)
            {
                mount_flag = RT_TRUE;
            }
      }

      if(mount_flag == RT_TRUE)
      {
            rt_kprintf("flash0 mount to / \n");
      }
    }
#endif /* RT_USING_DFS */

dmjkun 发表于 2013-5-31 13:18:18

本帖最后由 dmjkun 于 2013-5-31 15:41 编辑

现在可以格式 化了,但在mount过程中卡死在f_opendir函数的 LEAVE_FF(dj->fs, res);
后跟踪到res = follow_path(dj, path);返回 FR_INT_ERR错误,

dmjkun 发表于 2013-6-4 22:01:18


格式化后把第一扇区读回来,应该是格式 化成功了,但为什么dfs_mount不成功呢
页: [1]
查看完整版本: rtt格式化spi flash