W25Q128spi flash操作成功,elm挂载失败

发表在 Filesystem2019-1-8 11:49 [复制链接] 26 844

板子 原子f103战舰v3  flash w25q128  扇区4k参考资料:7 S+ k/ q9 c! G
     官网(spi设备应用笔记) 官网(文件系统应用笔记)/ R0 T! t! O& f' y, ~
rtconfig.h关于elm的配置:5 ]9 p7 x1 T* e* c
/* elm-chan's FatFs, Generic FAT Filesystem Module */7 Q& M# K8 X$ R. U* G6 a% ~  I5 k9 s

* ]# i5 V2 f7 n# |7 J#define RT_DFS_ELM_CODE_PAGE 437# l1 x. G+ z+ B& N
#define RT_DFS_ELM_WORD_ACCESS
& V6 ~% k+ Y" i#define RT_DFS_ELM_USE_LFN_3
, y- W) }+ F; x! O& ~% P#define RT_DFS_ELM_USE_LFN 3
% h1 g7 X; X1 A* O9 n. v0 ^#define RT_DFS_ELM_MAX_LFN 255" ]/ @' r* G$ L, }3 i, K
#define RT_DFS_ELM_DRIVES 11 |( c9 i9 n; C4 z& Z1 d
#define RT_DFS_ELM_MAX_SECTOR_SIZE 512' z) {& F3 P4 J' ~+ X/ K9 ]- J# P
#define RT_DFS_ELM_REENTRANT
+ q8 e7 v; Q6 c) N#define RT_USING_DFS_DEVFS7 r) w  H7 A; A* @

- F* @( k; ^; a, i0 q! ?( C
( p7 q/ d* T1 d, O: jspi成功操作:
1 |- P  G0 ]6 h2 Y! Gmsh />sf erase 200 9
+ c  l5 F* ^0 K9 Y' yErase the sf_cmd flash data success. Start from 0x000000C8, size is 9.$ _: W& ^1 i# l# h- f0 C
7 P! l) E( Y. q- c( t6 u
msh />sf write 200 1 2 3 8 8 9 a8 i, M2 ?# }$ _7 Y
Write the sf_cmd flash data success. Start from 0x000000C8, size is 7.
9 R2 m! D6 M6 f; qWrite data: 1 2 3 8 8 9 0 .. f, q$ c* `9 R3 b) D

  Q& I& }5 G* B, @! Vmsh />sf read 200 81 S$ z, G6 u0 `9 W
Read the sf_cmd flash data success. Start from 0x000000C8, size is 8. The data is:
$ e1 W% T) S( d7 ^& }8 POffset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F) E8 X9 g) M4 O3 R: T% t. R
[000000C8] 01 02 03 08 08 09 00 FF
. M& N2 ^6 ?8 m5 q  {
* d" ?) N; e7 V7 Z" ?8 u. ~, b! S7 r" R

. j8 J2 u) i0 ?; ~, S$ o2 }2 J2 H* d( J' d. w- e& F9 d) G% X. U
设备驱动:
( ?- }/ J) ~6 o* G/ n! bmsh />list_device
4 k) d  W5 C! s% tdevice          type         ref count
% D3 m4 E" d. y. q8 o------- -------------------- ----------
1 T) ~; G, U; k7 t7 rW25Q128 Block Device         0       $ b4 j/ ]0 c' ?5 v/ e( ^
spi20   SPI Device           0      
8 B4 n/ b, _3 h% aspi2    SPI Bus              0      
8 c6 H" t2 O3 Z* _- juart1   Character Device     2       5 ~3 n/ _- x! q8 g) H2 r! E) O
pin     Miscellaneous Device 0      
& @. N- ~' [  C9 }: F4 Dmsh />
/ ^/ k3 I8 C( i! |6 I# b8 s! b& o( k, n% A5 P1 K5 K( Z

5 a6 U  B* a" s  k* I) J# b# L- T& I' ]/ i9 F5 m
我按照资料和板子,把#define RT_DFS_ELM_MAX_SECTOR_SIZE  4096
. U( `4 d  P3 ^打印信息:! P/ a1 Q4 ]( B: J
\ | /7 J0 L" k+ j# |& Z
- RT -     Thread Operating System3 i6 n) M& }( y! D
/ | \     4.0.0 build Jan  8 20193 o# g! y, q( f8 B: @( k& n
2006 - 2018 Copyright by rt-thread team$ ~5 Q/ O8 o* h6 S! W$ }. c. _$ C+ [
[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.. x3 t5 U! P3 w( F/ X9 A) R) ?
[SFUD] W25Q128 flash device is initialize success.
+ ~) R/ M4 e$ Vspi flash mount to /spi failed !
% _4 @3 b  X, t" S3 h4 x6 q然后mkfs:
- J; `4 k+ k/ lmsh />mkfs -t elm W25Q128
9 F$ H$ q2 {" |+ A8 I9 L' [
' P  B# j7 B- [; u错误代码:mkfs failed, result=-12
8 A* F( ]* G! ^% F. v1 u$ L6 D8 |6 c* D

; v4 W6 `( K9 V! o7 M如果我把:把#define RT_DFS_ELM_MAX_SECTOR_SIZE  512
+ m# B- C) O$ u- }貌似这个没有错误提示:3 c% x8 k! b8 M0 u6 d- F. Q- U
msh />mkfs -t elm W25Q128) g4 \0 Y5 I7 q
msh />list_device' d; `- ?: z: y0 W( K/ K: X8 @! t0 P
device          type         ref count
5 M+ S" `5 ]. R. C0 d, K------- -------------------- ----------- Z2 N8 F* G1 N+ q
W25Q128 Block Device         0      
# p/ }1 C- N& ~. j1 g8 C7 E; h; Xspi20        SPI Device             0       ( I  w3 c8 I5 Y, l! u4 Z& {
spi2          SPI Bus                   0      
6 }2 Z; A7 y: ~3 ^1 Vuart1        Character Device      2      
, w8 x( ^+ W* ?5 upin            Miscellaneous Device 0      
3 r+ k8 p5 A* U4 |msh />6 B; L0 ?4 [; |% }
" N1 X7 K/ x% K) F
但并没有挂载成功,也不能用文件系统。
' a1 v; _+ I" p: M# {7 o; w8 c# U1 S8 I
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-1-8 11:52:24 | 显示全部楼层
嗯,这个东西我弄了两三天了,按照教程和我的理解一步步操作的。都是配置,按理说应该直接可以用的。但是结果并不是这样的。
使用道具 举报 回复
发表于 2019-1-8 12:55:15 | 显示全部楼层
这个问题正在帮你看下。
使用道具 举报 回复
发表于 2019-1-8 14:04:44 | 显示全部楼层
yqiu 发表于 2019-1-8 12:55
. y3 n  N2 ^  m  v9 }3 R这个问题正在帮你看下。

/ q% y: d* L" [# [: X! r% m好的,多谢,如果需要我提供更多的调试信息可以告诉我
使用道具 举报 回复
发表于 2019-1-8 14:05:10 | 显示全部楼层
没看出来有啥问题,建议调试下,从 dfs_fs.c 中的 dfs_mkfs 开始跟
使用道具 举报 回复
发表于 2019-1-8 14:59:53 | 显示全部楼层
先用 sf bench 测试 spi 驱动没有问题,确定底层没有问题之后,再一步步向上层检查
使用道具 举报 回复
发表于 2019-1-8 15:00:21 | 显示全部楼层
使用最新重构的 stm32 BSP 试下吧,https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32
使用道具 举报 回复
发表于 2019-1-8 15:07:54 | 显示全部楼层
Summer_gift 发表于 2019-1-8 14:591 @. a" X5 R& W! f8 X2 _7 m
先用 sf bench 测试 spi 驱动没有问题,确定底层没有问题之后,再一步步向上层检查 ...

5 N( f( M8 m9 O0 t' W' |你看我上文发的,有关于spi的读写
使用道具 举报 回复
发表于 2019-1-8 15:08:34 | 显示全部楼层
yqiu 发表于 2019-1-8 15:00
5 j$ ]! U8 R' Z: q* B) j使用最新重构的 stm32 BSP 试下吧,https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32 ...

: E8 i9 K. @* u$ s8 V3 b% M我一周前下载的最新的,我的spi测试没问题,最起码说明spi硬件和驱动没问题吧。
使用道具 举报 回复
发表于 2019-1-8 15:11:27 | 显示全部楼层
你根目录下有 /spi 这个目录吗?
使用道具 举报 回复
发表于 2019-1-8 15:12:17 | 显示全部楼层
yqiu 发表于 2019-1-8 15:11
' I  x5 P- x2 f- v* \你根目录下有 /spi 这个目录吗?

# T, v- r7 y  J5 h( d" F6 t2 q' ?static int rt_hw_spi_flash_init(void)+ O9 ?. T4 T* g5 o
{* f9 v/ V7 ?. {4 {
    __HAL_RCC_GPIOB_CLK_ENABLE();; e  P) Y4 y! K% e4 v% `
    rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12);  e" z3 z- t! {: M
. |+ b- i% Y! L7 G
    if (RT_NULL == rt_sfud_flash_probe("W25Q128", "spi20"))  c2 k% M" s( J, }" }. f$ u% \) ?
    {
+ n9 p4 |6 c8 L; t2 C6 M        return -RT_ERROR;! n, \9 x! N/ L/ U3 E' s
    };
& W! A' I& c' @. P! A1 ^2 M                                if( dfs_mount("W25Q128", "/", "elm", 0, 0) == 0)% V0 t" E# d6 C) W+ p. }4 G
                                {# A/ F5 H5 M6 P' C" e2 k5 Y
                                                 rt_kprintf("spi flash mount to /spi !\n");2 D- y- G7 n" `
                                }5 P" a; ?" Q. p- E+ j- T
                                else) q& Z; c$ ?5 J3 _4 e; [2 y) O
                                {
0 d( N( k0 R6 }! J3 w                                                rt_kprintf("spi flash mount to /spi failed !\n");3 @" `1 a& D8 E$ Z1 }
                                }
9 C) a' N7 R* e3 z8 M& [4 }    return RT_EOK;" Z) H5 O- m0 u% F
}
使用道具 举报 回复
发表于 2019-1-8 16:01:32 | 显示全部楼层
不是读写 是 sf bench yes 测试
使用道具 举报 回复
发表于 2019-1-8 16:12:49 | 显示全部楼层
你用的哪个 BSP?
使用道具 举报 回复
发表于 2019-1-8 16:18:38 | 显示全部楼层
Summer_gift 发表于 2019-1-8 16:122 G  f/ s' P. p1 L
你用的哪个 BSP?
4 C# g7 U( d( O& _3 s! a
rt-thread-master\bsp\stm32\stm32f103-atk-nano
使用道具 举报 回复
发表于 2019-1-8 16:31:17 | 显示全部楼层
Summer_gift 发表于 2019-1-8 16:01
+ |  k) i. g( U( I9 H不是读写 是 sf bench yes 测试

" L) z5 F% `6 T刚才去测试了一下;
8 r4 w/ A6 m6 ]% I% e3 ?- c. j  ~9 d- V6 ]$ \: k' c
msh />sf probe spi20
$ ~: K8 @- N  g3 x
# F5 _+ l0 D7 i( u[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.
/ J) b8 V' |& r; w6 p& p! _4 E[SFUD] sf_cmd flash device is initialize success./ F- T5 ~( X4 ^+ K
16 MB sf_cmd is current selected device.
0 u4 {% V) Y6 g" Y) k7 g! b* l* ~2 C; W# Q0 J. R/ M/ A* O" @# ]

7 y* A7 L$ D' C; L; umsh />sf bench yes7 b  e) i# p# @( a4 g5 ?  X" X

8 A+ t5 u8 w# ^/ xErasing the sf_cmd 16777216 bytes data, waiting...5 M/ m6 j( {5 Q, n, C4 t
Erase benchmark success, total time: 29.041S.+ Z8 V# T/ q/ I+ D( Z4 d8 V
Writing the sf_cmd 16777216 bytes data, waiting...7 k: K  k9 `4 l2 X4 v3 m
Write benchmark success, total time: 65.537S.
( W8 J' ~  i4 J) x7 NReading the sf_cmd 16777216 bytes data, waiting...
! k0 Z% F+ j& F% Z1 j2 M# z3 \Read benchmark success, total time: 29.777S.
使用道具 举报 回复
发表于 2019-1-8 18:12:13 | 显示全部楼层
yqiu 发表于 2019-1-8 15:11. W+ Q' h: g; R" F$ b9 t( b% H
你根目录下有 /spi 这个目录吗?
' s4 W$ q( r! z1 h3 J
微信图片_20190108181057.jpg - D6 M$ t* z; z  H, k
/ b6 s4 z$ u/ k
使用道具 举报 回复
发表于 2019-1-8 18:37:25 | 显示全部楼层
bench 测试成功,说明 spi 设备没有问题,那么现在首先要确定存储器中是否有文件系统,然后检查文件系统组件的配置项。
使用道具 举报 回复
发表于 2019-1-8 18:40:57 | 显示全部楼层
nano 的 BSP 适合你的这个板子吗?芯片型号之类的改了吗?
7 R8 N0 n( @8 ^/ e* }要不按照说明做一个新的 BSP 吧~
使用道具 举报 回复
发表于 2019-1-8 20:50:45 | 显示全部楼层
本帖最后由 yaomo718 于 2019-1-8 20:52 编辑
! P- v" P. ]6 J& R! e. d( b
1 S" f9 q$ ^0 N你这个是挂载失败,你不要把W25Q128挂载为根目录,而是按照例程先把ROM挂载为根目录,然后把 /spi 挂载到根目录下试试看?
' u9 D+ _+ l" I. A2 Q$ S0 g7 P8 @, a
" [# @1 I! D6 ]7 n3 d

  1. - F0 g! t4 t  S: i
  2.         static const struct romfs_dirent romfs_root = {# i' }$ {( \7 y1 T
  3.             ROMFS_DIRENT_DIR, "/", (rt_uint8_t *)_romfs_root, sizeof(_romfs_root)/sizeof(_romfs_root[0])
    , E# ]5 k, }3 T' o) z+ T! S
  4.         };
    ! Q* T4 R8 H) A

  5. # U2 T% Q, \! }# t, x; L
  6.         if (dfs_mount(RT_NULL, "/", "rom", 0, &(romfs_root)) == 0)" n  j+ `1 a, k, K; {6 w2 Z3 `$ i
  7.         {
    3 V% T: R1 Q) y  f
  8.             rt_kprintf("ROM file system initializated!\n");  `- O! j9 M- |# w0 Q
  9.         }
复制代码
5 O0 J7 w, Q# G- J
  Y1 v# K, v7 H1 o( H, K# w& ~& \& W
我之前在野火429的板子上挂载成功过的,暂时因为手边没有开发板,不太好帮你验证猜想。" @: o3 n/ L; N  T3 S9 j8 m) o) D$ i
另外,#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096        //flash的最小擦除页,4096才是正确的
  _; |: v- F$ e$ P) {
使用道具 举报 回复
发表于 2019-1-11 23:16:16 | 显示全部楼层
兄die, 我也是刚提了这个问题,我用F103挑战者也是这种情况,sf操作可以,文件系统挂载也不行,一点反应都没有。
使用道具 举报 回复
发表于 2019-1-11 23:17:00 | 显示全部楼层
Summer_gift 发表于 2019-1-8 18:40$ }' b# W9 p4 t  ]( F. f# x
nano 的 BSP 适合你的这个板子吗?芯片型号之类的改了吗?/ C) b2 s% i$ a) s
要不按照说明做一个新的 BSP 吧~ ...
! ?8 C- r6 I0 x
新的BSP问题依旧
使用道具 举报 回复
发表于 2019-1-11 23:18:38 | 显示全部楼层

7 T9 W! b1 A4 C& C+ }; |  uSF指令操作均OK, R8 Q% f7 R: ]) Z, L# _+ E
333.png
使用道具 举报 回复
发表于 2019-1-12 08:58:08 | 显示全部楼层
bevis 发表于 2019-1-11 23:18
" A; T" s% o% H; k* y- T' ~0 \SF指令操作均OK

0 o4 _) I5 y- W4 m6 Xmkfs 了吗?
使用道具 举报 回复
发表于 2019-1-12 09:56:32 | 显示全部楼层
Summer_gift 发表于 2019-1-12 08:58
% C0 O6 I3 D- @! r$ m' d  Z8 umkfs 了吗?
! @9 R0 T* [+ j: U
mk 了,没有报错,也没有其他提示。
使用道具 举报 回复
发表于 2019-1-15 17:04:50 | 显示全部楼层
bevis 发表于 2019-1-11 23:173 C$ t) c  F9 y
新的BSP问题依旧

' W- g  p1 D6 z5 s) {大兄弟,难兄难弟呀
使用道具 举报 回复
发表于 2019-1-15 17:34:52 | 显示全部楼层
hann 发表于 2019-1-15 17:04
( t. }! C9 g5 f$ G. i* p2 Z/ \6 U; H大兄弟,难兄难弟呀
  X: X( \2 |1 l# Z. [& m! J& Z
估计你们都是同样问题压根就没有挂载代码,或者挂载代码写错了。: u& F) ~: A; F  h* s

0 a6 e& i1 o, s( K看下我之前的回帖 https://www.rt-thread.org/qa/thread-10119-1-1.html
使用道具 举报 回复
发表于 2019-1-16 15:52:30 | 显示全部楼层
刚才挂载成功了,应该就是就是那个挂载目录的问题,main函数里面挂到根目录,执行一次mkfs命令后,重启
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区  

© 2013-2017 上海睿赛德电子科技有限公司 沪ICP备13014002号-1

Powered by RT-Thread

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