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

发表在 文件系统2019-1-8 11:49 [复制链接] 26 166

板子 原子f103战舰v3  flash w25q128  扇区4k参考资料:* R  T% b: ?% `+ B
     官网(spi设备应用笔记) 官网(文件系统应用笔记)
7 }" Z0 A6 [+ x- ^rtconfig.h关于elm的配置:
) o- z, m" b/ [6 _& X7 C/* elm-chan's FatFs, Generic FAT Filesystem Module */. ?/ C3 V! T5 A5 ~& [+ c

4 t' B( i, f$ E+ ]#define RT_DFS_ELM_CODE_PAGE 437; h6 S+ S3 W6 h" X* w9 t
#define RT_DFS_ELM_WORD_ACCESS
$ P* n% H; I) v1 t1 h. `5 V0 V6 \- B#define RT_DFS_ELM_USE_LFN_3% N* ]0 Q( g5 t2 `3 f
#define RT_DFS_ELM_USE_LFN 3
) M1 @9 s/ E; _# Z$ {. [4 K+ t; ]#define RT_DFS_ELM_MAX_LFN 255! ]+ W% s* c/ t" k& I5 v
#define RT_DFS_ELM_DRIVES 1
* x, E6 b, m6 G  x$ Z# M#define RT_DFS_ELM_MAX_SECTOR_SIZE 5121 T% A+ d, h7 v- l  F& o
#define RT_DFS_ELM_REENTRANT( g; f  K  p) b7 f0 f( j- \: ^+ g
#define RT_USING_DFS_DEVFS
4 B3 w6 u" e& A/ y1 j' G( i2 `- S4 q
6 C0 O2 R- U) E7 M
" @7 e, P  f  Q  \1 I7 espi成功操作:: q, x) z( @8 B2 E3 O* K/ U
msh />sf erase 200 9* u, _4 H* k/ ?0 h& S
Erase the sf_cmd flash data success. Start from 0x000000C8, size is 9.
% w; a" H! i  f/ g& g" p! {' {& M0 S: L% K
msh />sf write 200 1 2 3 8 8 9 a
3 g. e2 S/ Z# _Write the sf_cmd flash data success. Start from 0x000000C8, size is 7.% u7 w4 T' D7 i# n: p
Write data: 1 2 3 8 8 9 0 .
9 f* L8 a8 V6 u% L5 L; J- l
, _$ y' t* K& Q1 n- P: P6 Hmsh />sf read 200 8
! W/ U- g) n# N* x' ~- pRead the sf_cmd flash data success. Start from 0x000000C8, size is 8. The data is:0 b$ E- g& U/ W9 m4 I1 t+ Z) T
Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
4 D  d) n+ E3 [. _0 V/ y: }: B[000000C8] 01 02 03 08 08 09 00 FF / D5 j4 C7 B, h! E3 M+ @8 J

* x: h) @, i$ F& V, G/ }* q( c7 t& T
& V1 ~0 U3 k; q  g
7 p* {7 C. u# F# M
设备驱动:8 s7 C2 m9 F2 K& C/ r3 ?
msh />list_device! t+ n. ^+ a) w9 \1 Z
device          type         ref count
* m0 k# X8 p) j" Z  \0 h------- -------------------- ----------
' q/ }6 L4 Z! M3 w  U- r, L! nW25Q128 Block Device         0      
5 l7 g  m- W' f' X8 Hspi20   SPI Device           0       6 U& Q0 x' ]1 \( H; H, @9 m
spi2    SPI Bus              0      
$ {+ r7 l9 g, g1 e/ q. o$ }; yuart1   Character Device     2      
9 u, G3 g: E2 ]* F: apin     Miscellaneous Device 0      
9 ]! i: g$ E8 k$ d: B# ~  xmsh />
0 B! q0 k; L7 S, S; ?$ I
* j' i/ e# _. z; }
$ D; r/ o; c' g# M5 Q4 i. R4 g7 \. Q
我按照资料和板子,把#define RT_DFS_ELM_MAX_SECTOR_SIZE  4096: |9 l% f& R' T/ U0 |. h
打印信息:, u' n8 [! @, H) `( u
\ | /+ ~# e4 I. c# J; f
- RT -     Thread Operating System) h5 e' d% G" C; e
/ | \     4.0.0 build Jan  8 2019# X6 E- _2 |0 A. M' D
2006 - 2018 Copyright by rt-thread team
$ |- B* z. t$ F$ ?[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.! H2 ~$ j. t% a* r: O8 i
[SFUD] W25Q128 flash device is initialize success.0 X6 H  ]  i! R; e1 J* I
spi flash mount to /spi failed !
/ ?# H, J; D8 N# B- ~然后mkfs:
! ~. _; I, l% Q' h" rmsh />mkfs -t elm W25Q128
! {8 e: v- j) U6 e) f- l) Z1 U/ l7 \! \7 C: i' [7 N
错误代码:mkfs failed, result=-12
# r. z& P; x- _9 T2 r
0 ~- e4 a& `$ V& x4 V# V9 y5 X# f; ?  ?! S6 B2 Z; d
如果我把:把#define RT_DFS_ELM_MAX_SECTOR_SIZE  512
* p$ W3 n. P; L2 z. Q貌似这个没有错误提示:( X1 {* Y7 j: p1 H5 e1 Q
msh />mkfs -t elm W25Q128
- |+ Y- v/ E! o2 A. `+ qmsh />list_device
5 |- r' I% C/ \" h8 P" g3 k: Edevice          type         ref count3 g; b3 g6 \+ G
------- -------------------- ----------4 O( h/ _" p  n& w
W25Q128 Block Device         0       ; ^7 \0 }) L. Q5 L) |1 \4 i
spi20        SPI Device             0       + T! S+ w- O! {  L
spi2          SPI Bus                   0       % f$ [9 Z0 |2 Q$ @8 u; ^
uart1        Character Device      2      
3 L" o6 O$ W) f& epin            Miscellaneous Device 0      
% D* X! E9 O5 T  f  m3 tmsh />
5 C+ I. W6 `: n- [- ]/ e- M+ k9 R  U& G! c; f- g
但并没有挂载成功,也不能用文件系统。
! L' P  F# t, U3 A& L$ D' \' ]# j5 k& G) Q/ G
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2019-1-8 11:52:24 | 显示全部楼层
嗯,这个东西我弄了两三天了,按照教程和我的理解一步步操作的。都是配置,按理说应该直接可以用的。但是结果并不是这样的。
使用道具 举报 回复
发表于 2019-1-8 12:55:15 | 显示全部楼层
这个问题正在帮你看下。
使用道具 举报 回复
发表于 2019-1-8 14:04:44 | 显示全部楼层
yqiu 发表于 2019-1-8 12:55
7 M* L6 ]% ?5 {这个问题正在帮你看下。
4 y/ l( B# K* g. K
好的,多谢,如果需要我提供更多的调试信息可以告诉我
使用道具 举报 回复
发表于 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:59
! P* r3 y+ q$ h2 p先用 sf bench 测试 spi 驱动没有问题,确定底层没有问题之后,再一步步向上层检查 ...
; ^9 i9 e: q! Q3 H
你看我上文发的,有关于spi的读写
使用道具 举报 回复
发表于 2019-1-8 15:08:34 | 显示全部楼层
yqiu 发表于 2019-1-8 15:006 l* z( m( \) p0 W
使用最新重构的 stm32 BSP 试下吧,https://github.com/RT-Thread/rt-thread/tree/master/bsp/stm32 ...

$ b  ?% m0 Q7 i2 t; d/ q我一周前下载的最新的,我的spi测试没问题,最起码说明spi硬件和驱动没问题吧。
使用道具 举报 回复
发表于 2019-1-8 15:11:27 | 显示全部楼层
你根目录下有 /spi 这个目录吗?
使用道具 举报 回复
发表于 2019-1-8 15:12:17 | 显示全部楼层
yqiu 发表于 2019-1-8 15:115 Q, w" R" |9 t9 P
你根目录下有 /spi 这个目录吗?

: F0 U* d" K/ U4 L! P7 kstatic int rt_hw_spi_flash_init(void)
5 M( ~* `8 r/ v3 Z& k1 C{2 L) u) F! k; E* l% I) Q
    __HAL_RCC_GPIOB_CLK_ENABLE();
  J, y: N' d& Y1 K4 ~( i    rt_hw_spi_device_attach("spi2", "spi20", GPIOB, GPIO_PIN_12);6 R- D% ?5 j) i
! [2 k( G+ f6 Z# \, t% A8 x
    if (RT_NULL == rt_sfud_flash_probe("W25Q128", "spi20"))
) F! m  _& M( b( ~9 F  {! {7 j8 ?* j    {% e2 r2 F  r  R5 ]: K
        return -RT_ERROR;
+ ?0 R/ e; V/ t: o. p: X    };
$ S; Y5 ^+ L& d% M% F2 E                                if( dfs_mount("W25Q128", "/", "elm", 0, 0) == 0)
% ^, c4 H2 z3 R( o; J( @3 r                                {% V5 R( W! }. y( g
                                                 rt_kprintf("spi flash mount to /spi !\n");
1 p& i0 E- ]1 \; i( x% J7 C5 T                                }9 Q6 t8 }% O% S# W6 S$ C) \: F6 n
                                else
# q% g0 g5 d3 ?2 H; A; ~' t                                {
/ ^5 W' `6 K" o  s                                                rt_kprintf("spi flash mount to /spi failed !\n");# I: u6 K/ d. {# q$ P$ e1 o  f
                                }3 m7 D" A5 C( M  j& V  ^6 [/ K& b
    return RT_EOK;1 c8 k5 i; ^5 y* y
}
使用道具 举报 回复
发表于 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:12
% z9 Q% D+ U. ~' Q. ]+ R# Y你用的哪个 BSP?

0 L& Y# Q6 _' F5 I0 art-thread-master\bsp\stm32\stm32f103-atk-nano
使用道具 举报 回复
发表于 2019-1-8 16:31:17 | 显示全部楼层
Summer_gift 发表于 2019-1-8 16:011 j  m9 ~8 R: t; |
不是读写 是 sf bench yes 测试

$ B) e6 k* Z# a( ]/ _刚才去测试了一下;
# H1 [  e3 W2 r, x6 C
+ v) ~/ U2 e; \8 A( D5 @* Umsh />sf probe spi20; D5 M/ n; z0 f2 M
) `8 A6 _6 Y5 V' o# Y' j2 v
[SFUD] Find a Winbond flash chip. Size is 16777216 bytes.* y7 a; o% _+ [) }0 i6 a: ?! D+ M
[SFUD] sf_cmd flash device is initialize success.6 S% l* U9 r4 ]' X! c1 V
16 MB sf_cmd is current selected device.
5 ?5 R7 P9 M" i4 x# E" W
% z. G6 ]/ w/ ~7 t3 ]5 e* X" H8 y2 y( ~9 e- ^2 f
msh />sf bench yes
9 \4 s! B! G4 O9 ?, X" k" {8 x+ c
Erasing the sf_cmd 16777216 bytes data, waiting...6 @" ^) Z/ d! ~: A& ?# R; A
Erase benchmark success, total time: 29.041S.
: R6 W, U" m7 {4 K0 I/ f9 ^9 WWriting the sf_cmd 16777216 bytes data, waiting.../ ?3 o$ s( u) N/ M3 x; l6 [  n7 k
Write benchmark success, total time: 65.537S./ Y" i1 ^0 m, f* ~
Reading the sf_cmd 16777216 bytes data, waiting...# v6 T  K( \) E+ L9 ^5 v+ e
Read benchmark success, total time: 29.777S.
使用道具 举报 回复
发表于 2019-1-8 18:12:13 | 显示全部楼层
yqiu 发表于 2019-1-8 15:11
  X- m  O( ~4 |, L8 T( q你根目录下有 /spi 这个目录吗?

) R3 K: a* s- _ 微信图片_20190108181057.jpg 1 W' ]7 W! x7 N0 A

' ]& `3 V* i# I( B  _) w3 r- J
使用道具 举报 回复
发表于 2019-1-8 18:37:25 | 显示全部楼层
bench 测试成功,说明 spi 设备没有问题,那么现在首先要确定存储器中是否有文件系统,然后检查文件系统组件的配置项。
使用道具 举报 回复
发表于 2019-1-8 18:40:57 | 显示全部楼层
nano 的 BSP 适合你的这个板子吗?芯片型号之类的改了吗?
0 {9 r* b, c) R要不按照说明做一个新的 BSP 吧~
使用道具 举报 回复
发表于 2019-1-8 20:50:45 | 显示全部楼层
本帖最后由 yaomo718 于 2019-1-8 20:52 编辑 3 x' w" N" S* p
4 q4 E3 S, A' d0 F
你这个是挂载失败,你不要把W25Q128挂载为根目录,而是按照例程先把ROM挂载为根目录,然后把 /spi 挂载到根目录下试试看?
4 W5 T$ k) a5 V) h! M9 {
. e/ G0 A  a+ ?4 \+ J

  1. * P! {3 W# l2 n* f+ ?
  2.         static const struct romfs_dirent romfs_root = {
    * ~; K4 x6 F/ A$ x4 W  d- d( E$ _
  3.             ROMFS_DIRENT_DIR, "/", (rt_uint8_t *)_romfs_root, sizeof(_romfs_root)/sizeof(_romfs_root[0])
    . I" d; o$ Z" \1 i
  4.         };
    1 T( b5 h( X: [" T$ w  ]

  5. , Z  N  q1 z+ T# y4 v& |# r
  6.         if (dfs_mount(RT_NULL, "/", "rom", 0, &(romfs_root)) == 0)& U  i- d. @; b4 M6 ?
  7.         {8 S0 ]. N2 F" U& Q8 L/ R
  8.             rt_kprintf("ROM file system initializated!\n");& ~$ b5 ^# @! c9 B% c
  9.         }
复制代码
8 L5 J1 k* E8 q& w
2 r5 _7 L2 d+ G* u6 R) U6 r
我之前在野火429的板子上挂载成功过的,暂时因为手边没有开发板,不太好帮你验证猜想。
5 A+ F* i8 e, f+ J" \/ c另外,#define RT_DFS_ELM_MAX_SECTOR_SIZE 4096        //flash的最小擦除页,4096才是正确的
) h; Q* N( @  g3 `. r* a
使用道具 举报 回复
发表于 7 天前 | 显示全部楼层
兄die, 我也是刚提了这个问题,我用F103挑战者也是这种情况,sf操作可以,文件系统挂载也不行,一点反应都没有。
使用道具 举报 回复
发表于 7 天前 | 显示全部楼层
Summer_gift 发表于 2019-1-8 18:40
" L: d$ k% l/ F( C5 w0 unano 的 BSP 适合你的这个板子吗?芯片型号之类的改了吗?
3 `0 p& ]" a! v8 R  h9 e! v要不按照说明做一个新的 BSP 吧~ ...

9 O  e9 a' w0 n: j0 H新的BSP问题依旧
使用道具 举报 回复
发表于 7 天前 | 显示全部楼层
( m/ Z, u, m( U
SF指令操作均OK
2 d$ H% C1 g. i/ v
333.png
使用道具 举报 回复
发表于 6 天前 | 显示全部楼层
bevis 发表于 2019-1-11 23:18/ p6 t+ L& ?. j7 N5 l# q& O0 G' u
SF指令操作均OK

* e3 \( ?4 a8 K# ^" Rmkfs 了吗?
使用道具 举报 回复
发表于 6 天前 | 显示全部楼层
Summer_gift 发表于 2019-1-12 08:58/ h9 V2 y* s* w1 u0 ^
mkfs 了吗?

6 I# `: l6 J: \mk 了,没有报错,也没有其他提示。
使用道具 举报 回复
发表于 3 天前 | 显示全部楼层
bevis 发表于 2019-1-11 23:17' C- Y; k# z/ d$ x+ }
新的BSP问题依旧
  J7 q, @* V' z! i, U$ S
大兄弟,难兄难弟呀
使用道具 举报 回复
发表于 3 天前 | 显示全部楼层
hann 发表于 2019-1-15 17:04
& @: d; U- x6 P# `大兄弟,难兄难弟呀

: r' Z' Y/ Z( g$ H) ~估计你们都是同样问题压根就没有挂载代码,或者挂载代码写错了。% |/ _8 N" N2 B% ?( o" f

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

本版积分规则

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

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

Powered by RT-Thread

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