你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32F750 uClinux加载QSPI Flash分区成功

[复制链接]
STMCU小助手 发布时间:2022-4-7 18:23
emcraft的STM32F7 BSP默认是加载并行NOR Flash分区的,不加载QSPI Flash。老实说这个配置比较老了,现在用并行NOR的越来越少了,QSPI Flash越来越多。
1 l5 T8 Y0 s/ ]( ?2 z+ E# ?$ \
. n! l- _2 S5 r3 A' ?为了加载我板子上的QSPI Flash,需要做以下工作:5 Q; q% [+ S7 J# |1 g; v5 j
5 m' q; L) b7 X7 m- W( P
1. 在编译kernel时加上mtd,qspi驱动,jffs2文件系统(当然也可以是其他filesystem);9 }! u- V! d! J3 k

: X; M) `  ~  i: A% ^: r# |3 |2. 在设备树里面添加qspi设备,指定硬件引脚,指定地址范围并分区;
+ n1 V& I1 U1 [- r0 Y) U. @
  Q/ l( g) l. ^3. 在linux启动脚本里挂载qspi flash分区。2 H7 D! E+ u  N
; P2 R$ q4 H, m6 N0 w4 D
- \5 J6 h7 z3 `) M3 _
# i3 R4 i3 \2 R& p+ O$ l, m4 j
" [9 A. m4 ]* x  n8 t
通过搜索源码,在linux源码包里有STM32 QUADSPI驱动,第一项条件满足。接下来修改设备树(设置QSPI CLK=54MHz,32MB的空间我分了两个区,一个放内核10M,另一个放用户数据22M):
( G( l7 O( C8 }8 Z( K: @9 s: U) b* L1 S0 j: @. }1 [& J3 I
/*
% f% u- `* k8 i! g * QSPI  k: Z7 e- X9 v8 ~7 @; {# Z
*/
' T+ p2 e/ W4 x2 O$ o&qspi {undefined
1 U; q2 o3 H4 v: X& y! a        status = "okay";      
* d! `8 E4 D1 [8 _1 s, C4 A5 |3 j        pinctrl-names = "default";
7 s5 w% Q# Y5 s* J4 Z7 j4 T* A        pinctrl-0 = <&pinctrl_qspi>;
, M$ v( d- t! ?        freq = <54000000>;
# K! L3 g+ g% S1 y( e        flash = "w25q256jv";
0 }4 L) {) \: p# Z- u' o' j6 N0 c
, \- ~# m$ a" i% i        partition@0x00000000 {undefined0 C7 l+ f- o" }2 i" U" F
                label = "spi_flash_part0";
0 _, C5 M' w' G9 ]) |                reg = <0x00000000 0xa00000>;
6 x* a) @$ n( h, o# p# @  y        };
8 n( ]! E) p: y/ {+ C% l# E  V8 H  K" r$ F' U3 Q+ K
        partition@0x000a0000 {undefined
- ~* [1 z* P. {% S                label = "spi_flash_part1";8 |' V% D1 l1 N. q1 a' v
                reg = <0x00a00000 0x1600000>;
/ u; |2 l: d/ ^5 J% Y        };% ]* u7 a$ ~( U3 N
};/ Z1 W+ `' y# Q9 _7 e
0 Z9 i  X2 b# f% ^. G. ^& K
5 Y; @9 S' b7 |, E& N. w& K

8 Z+ S5 z% N+ [指定QUADSPI引脚
* u/ F4 V% E0 P/ R  I# @1 q
( b5 t8 T7 K* P" c) ~; K                qspi {undefined
$ X6 g0 q( ^. h& ?7 U                        pinctrl_qspi: qspi-0 {undefined3 M: m2 x: \& |9 B6 y( Q
                                st,pins {undefined. e; C; T, r% t3 I
                                        cs_n = <&gpiob 6 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;: k+ O" b: U7 d" a- {, H5 f5 y4 Q9 S/ j
                                        sck = <&gpiob 2 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;) @& `" ~1 a- J; j, d. c. C
                                        io0 = <&gpiof 8 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;  n9 ?& `5 C! r# `
                                        io1 = <&gpiof 9 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;1 j5 Y' ]* s. Z5 }' l7 I, x
                                        io2 = <&gpiof 7 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;0 `  @( W! K- S- s
                                        io3 = <&gpiof 6 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;7 s1 _8 n8 G! E$ d6 l

+ j2 {. J+ i! K3 `                                };+ d  ?9 p/ p  b7 ]; j
                        };
* z( ^$ K* ]- \' T0 G                };
# M# L) G  d$ d) S9 Q) o1 ]$ f" _5 s  Y3 _: R- y' _
4 S; q/ m; C9 O! z
7 w# |, Q2 l  t# h' B# t( b6 [
编译linux,下载到板子,上电启动。可以看到在log出现了qspi分区信息,说明加载成功:
  D0 l; l/ {8 I) N
  t3 h0 y3 E: a" h: T
! a/ O/ ~* G4 m* C1 h, l3 n$ I: G. R; \# e, f4 l2 f" ]
启动后在系统里查看mtd分区:1 N. y* W! ?% z' x; ~) W% \, _

& v& ^* L4 v3 X0 X4 } ~J8FP`UTE$AXSTLI996EGR4.png
4 d6 m, w$ A, F; e
! B7 |+ \( X" ^( c% [' h- c手动挂载用户分区到linux系统目录:* H3 @* r! ]8 e
& [- c( C# g: j/ Z* `4 b1 |$ l/ ~6 c
mount -t jffs2 /dev/mtdblock3 /mnt/qspi
. a" d3 Y/ ]0 v- e+ `2 j, {! T6 ~7 L. i
拷贝几个文件进去,断电再上电文件还在没有丢失。证明qspi flash挂载成功!
* c: u& @8 @* o5 a# j# J+ M RQAPG)~9XM$P2J8J8)FQ5OU.png - L7 K8 Y$ P; V8 H+ |! V0 B4 k

7 g1 Y& [& z" S4 T1 L8 C4 K# x
! b  q& s8 y1 S( X# x% U0 O7 I. \$ p" k1 {, s& C

8 }! j+ ]  E  t$ p" n' Z/ V1 Q
赞 收藏 评论0 发布时间:2022-4-7 18:23

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版