片上flash使用fal写和擦除卡死

发表在 FAL2020-1-24 11:40 [复制链接] 9 165

本帖最后由 921742079 于 2020-1-24 12:03 编辑 9 H1 D! u- D4 u/ T0 E$ D

. \/ A& |7 I. R) V# g8 x# C0 |测试的是片上flash,用的mcu是stm32f401ccu6,rom 256k,ram 64k/ H& ]) p" z7 F2 G
5 G' f, n! `) ]  z% }; D
libraries/HAL_Drivers/drv_flash/drv_flash_f4.c里面大概修改的这些
2 ]5 }' N5 r6 z) n5 W drv_flash_f4_1.png
1 U0 \) A' [1 @* N手工添加的
$ @. s1 C) G1 A drv_flash_f4_2.png 6 `  D. {4 |7 ]+ O" z: P+ q4 w

$ [( J5 W0 U" @5 i; P9 u4 E1 k因为FLASH_SECTOR_6开始一直编译错误,然后看了下401的宏定义里面,只有到5的,所以把6开始的都删了
  }0 I" a1 T9 ~2 r drv_flash_f4_4.png
7 f5 R* D5 c- T$ Z- q) _
/ [6 v3 }. c. G, }2 @0 `. @3 f2 X5 c- _) F- B5 q  c! U2 V
drv_flash_f4_5.png * @& J0 q7 u0 q- r7 X! b7 W
( ^& \) l1 I2 v& T& D- P9 S* W
fal_cfg
% \3 [9 v- {- b4 Q' h fal_cfg.png
0 K. X; l7 Q9 h
2 T7 D% n9 B! o
0 `7 y3 f$ f( x2 Z- z. u8 G1 A. `' i/ F, O, {- x$ Z: C

( f, x9 R' j7 V, C/ Sfal_demo( ?) T6 W' _/ G
fal_demo.png
9 H' \0 z8 Y" q
) z+ Z. o9 i6 O4 ~8 ?; @' h/ |' V串口的结果
; t- Q, e# c/ s* E0 P shell_1.png 0 b* ?- z8 H1 h* @  Z
半天不动
( h: l4 p5 T9 m2 g4 z4 `
! ~* M6 z3 c8 w2 G- z, h5 \7 f2 \# m" a
测试代码换一个
3 J  f( [/ O* P4 J4 f: G! g fal_write.png 2 T" ?0 S4 N1 v3 Y1 F1 u3 }: J/ w
' F9 z4 V7 Q$ Z/ l) E, g/ r, D2 ~
' \! h/ G9 e3 t
shell_2.png
9 R2 }3 ^7 K. p/ _) V( u# x+ D( G0 {% t" i# D/ B9 e& C
! K. l) s; |8 M# M% ~+ c
手动erase以后,reboot,会看不到shell& n% {4 X, u, c: C7 n$ M& K( [8 V
boot_fail.png
5 k: R9 Q8 I+ X1 q% E& R6 F感觉是擦掉了固件的数据,感觉是配置的大小和地址有问题,想问下,应该怎么改?
% |- a; g" V0 x- q- G, }% O编译出来的固件185k左右,想想64k的剩余空间应该够,不知道为什么会这样* g9 @$ O% H' Y. |' f9 S1 I. `# Q: s- p

# ?- x) `! W7 B$ \7 E% @1 A
7 m# X1 G* m. m9 I3 L7 `, s8 x5 F$ L$ j) M* e
使用道具 举报 显示全部楼层 回复
最新评论 | 正序浏览
显示全部楼层 |楼层直达:
发表于 2020-1-24 15:18:13 | 显示全部楼层
现在我把STM32_FLASH_START_ADRESS_64K改成下面这个,避开固件区域- M0 I' M# F) Q2 O: a4 _1 e* F; }- P

$ m; N3 ^  J) s! e: m#define STM32_FLASH_START_ADRESS_64K (0x08000000 + 192*1024)
7 J- H7 o% o# k, d
( p5 m  g7 _3 C# z; I5 w用测试命令写的时候,有时候成功,有时候失败,做benchmark,还是卡着不动,不知道啥原因 bench.png 5 p2 X* f* O8 Z- w* k5 f+ u2 \
下面bench为100的时候,为什么大小也是32768
4 z! u% ^0 E. M( X8 v5 k% d6 d- ?* a
使用道具 举报 回复
发表于 2020-1-24 21:10:21 | 显示全部楼层
本帖最后由 921742079 于 2020-1-24 22:09 编辑 ; H0 }; g; }/ p( [' D! v
921742079 发表于 2020-1-24 15:18
3 t4 [3 F9 P$ f. X" v' G现在我把STM32_FLASH_START_ADRESS_64K改成下面这个,避开固件区域
% N1 k0 z. Y' f7 v# v$ T) ?( G+ B  h- x; T
#define STM32_FLASH_START_ADRESS_64K ...
: ~, Q/ c/ {" j- G% |) r" t
--------------------------------------------------------------------------------------------------------
, n& j  r* g# `write需要先erase) k9 \3 H# X/ X. e" [' D
erase的时候,会卡死,貌似和线程调度器有关系1 s: G0 m- e8 X% e5 v
使用道具 举报 回复
发表于 2020-1-24 22:54:41 | 显示全部楼层
解决不了,只能贴个卡死的时候的调用栈了! n1 ?* C6 C: \5 A- P: @
crash.png
  j2 g0 c8 }0 A4 U! l1 v( G3 n
使用道具 举报 回复
发表于 2020-1-25 09:49:29 | 显示全部楼层
大年初一没人回,自己回答吧,313版本没问题,402不行
使用道具 举报 回复
发表于 2020-1-25 13:15:00 | 显示全部楼层
新年好,初一就开始挖坑了,赞一个!
使用道具 举报 回复
发表于 2020-1-26 10:51:00 | 显示全部楼层
换了个512k的板,313和402都没问题,现在重新做原来256k板的bsp,结果313和402都不行了
使用道具 举报 回复
发表于 2020-1-26 12:36:28 | 显示全部楼层
某些板子上,fal和lfs不兼容,411ceu6没问题,401ccu6,不行,只要lfs和fal都开,fal的erase会导致硬件错误。反复测试n次都是这样,不启用lfs,光fal,完全没问题,和rtt版本没啥关系,313和402都一样
使用道具 举报 回复
发表于 2020-1-29 12:36:30 | 显示全部楼层
问一个问题,你是用Visual Studio Code 做代码编辑器,然后切到MDK或者RTT Studio中来编译调试吗?
使用道具 举报 回复
发表于 2020-1-29 13:35:06 | 显示全部楼层
本帖最后由 921742079 于 2020-1-29 13:37 编辑
  M5 ?3 l; ]& P& B2 u  f) y
xw19185 发表于 2020-1-29 12:36
  T0 k3 a' h3 i问一个问题,你是用Visual Studio Code 做代码编辑器,然后切到MDK或者RTT Studio中来编译调试吗? ...
% A, e' s, ?& n  e& |* {
不是,我的是debian linux,复制bsp的模板,自己做的修改,然后用的vscode做编辑器,openocd做调试器,代码补全,单步调试都是没有问题的,当然,windows下,也一样可以  H  I8 L. O/ O$ G* m3 ^
openocd是调试器,硬件接的是jlink ob,vscode需要装一个插件/ N5 ]3 G8 q) m, O
  1. ext install marus25.cortex-debug
复制代码
这样vscode可以连接上openocd调试了
6 ^7 S; W: Z& F5 z8 b' i# p
使用道具 举报 回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RT-Thread开发者社区 ( 沪ICP备13014002号-1

有害信息举报电话:021-31165890 手机:18930558079

© 2006-2019 上海睿赛德电子科技有限公司

Powered by RT-Thread

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