think_a_second 发表于 2011-1-20 11:27:18

文件系统问题求教 25系列SPI-FLASH device_test()已通过

硬件:STM32 25系列SPI-FLASH
软件:RTT 0.3.1, 工程模板是radio中的例程,SPI-FLASH驱动改自ST提供的和正点原子
测试程序:来自0.3.1手册和aozima的device_test()


http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612400Y9K25A.jpg
(原文件名:命令列表.jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612401EYFMTN.jpg
(原文件名:路径和读写测试(1).jpg)

http://cache.amobbs.com/bbs_upload782111/files_35/ourdev_612402YVHYW1.jpg
(原文件名:路径和读写测试(2).jpg)

续《原文件名:路径和读写测试(2)》.
finsh>>read_1st_sec()
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0         32, 0x00000020
finsh>>

把25系列SPI-FLASH驱动也上传了,调通后我会将驱动整理为同一风格的代码及细化,重新上传。
驱动是先擦后写,但会保存当簇没改变的信息,重新写入。用自己的测试程序,已经测试过读写函数,没发现问题。

点击此处下载 ourdev_612403FBA3BR.txt(文件大小:28K) (原文件名:w25x.txt)

think_a_second 发表于 2011-1-20 11:34:38

自己改动过的地方:
1.改动了ff.c中 #define MIN_SECTOR        2000UL改为
#define MIN_SECTOR        512UL

2.ffconf.h中#define        _MAX_SS                512改为
#define        _MAX_SS                4096

3.void fst_readdir(void* parameter)
{
    int result;
    DIR *dirp;
    struct dirent *d;
    /* 打开 /web 目录 */
    dirp = opendir("/web");//0x2f 0x77 0x65 0x62
    if(dirp == RT_NULL)
    {
      rt_kprintf("\n");
    }
    else
    {
      /* 读取目录 */
      //rt_kprintf("open dir sucess\n");
      //原来是while结构
      do
      {
            d = readdir(dirp);
            rt_kprintf("found %s\n",d->d_name);
      }while (d != RT_NULL);
      closedir(dirp);
      //rt_kprintf("close dir \n");
    }
}
4.device_test中读写的大小改为一个sector

问题:
1.为什么要mkfs之后才可以ls("/")

2.路径和读写测试(1)(2)中看出device_test可以通过,但路径是读不出来。
3.读第一个扇区的前32个数据,为什么全是0的?重启之后会重新mount过的

ffxz 发表于 2011-1-20 11:55:47

mkfs就是做一个文件系统的格式化,就类似一个U盘,如果里面是一个未知格式的,那么windows必须要把它先格式化了后才能够正确读出其中的文件、目录。

其他的,是否你的驱动依然还有些问题?可以考虑把它们dump出来看看。基本的测试用finsh shell中提供的命令就可以了。

ljt8015 发表于 2011-1-20 12:59:36

SPI-FLASH 中的文件,比如web页面如何上传到SPI-FLASH中呢?

think_a_second 发表于 2011-1-20 14:11:58

回ffxz,那意味着我mount时,系统的格式已经不对,我再查查驱动。

web页面可以转为C数组存储

think_a_second 发表于 2011-1-20 15:18:56

回复【2楼】ffxz
mkfs就是做一个文件系统的格式化,就类似一个u盘,如果里面是一个未知格式的,那么windows必须要把它先格式化了后才能够正确读出其中的文件、目录。
其他的,是否你的驱动依然还有些问题?可以考虑把它们dump出来看看。基本的测试用finsh shell中提供的命令就可以了。
-----------------------------------------------------------------------

再问问:
我楼上的理解错误了。mount了并不意味着已经格式化了。我打印了第一个扇区的信息,

finsh>>erase_chip()
      4, 0x00000004
finsh>>read_1st_sec()

MBR bootstrap loader code:
ff ff ff ff ff ff ff ff
MBR boot record:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
MBR Disk PartitionTable:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff512, 0x00000200
finsh>>reboot()
\ | /
- RT -   Thread Operating System
/ | \ 0.3.1 build Jan 20 2011
2006 - 2010 Copyright by rt-thread team
SPI File System initialized!
finsh>>read_1st_sec()

MBR bootstrap loader code:
ff ff ff ff ff ff ff ff
MBR boot record:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
MBR Disk PartitionTable:
ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff512, 0x00000200
finsh>>mkfs("spi3")
      0, 0x00000000
finsh>>read_1st_sec()

MBR bootstrap loader code:
0 0 0 0 0 0 0 0
MBR boot record:
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
MBR Disk PartitionTable:
80 1 1 0 4 fe 3f 0 3f 0 0 0 c1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 55 aa   512, 0x00000200
finsh>>


引导代码全为0,好像不对吧?
MBR bootstrap loader code:
0 0 0 0 0 0 0 0

2006lc 发表于 2011-1-20 21:14:11

谢谢分享

gavin_li 发表于 2011-4-25 13:16:34

不错,mark

lyzhangxiang 发表于 2012-2-16 17:55:10

mark能否提供测试程序
页: [1]
查看完整版本: 文件系统问题求教 25系列SPI-FLASH device_test()已通过