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

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

[复制链接]
STMCU小助手 发布时间:2022-4-7 18:23
emcraft的STM32F7 BSP默认是加载并行NOR Flash分区的,不加载QSPI Flash。老实说这个配置比较老了,现在用并行NOR的越来越少了,QSPI Flash越来越多。
$ m. T; J/ i1 f- m1 H8 f9 S
6 a: X, b6 _) G: h* \+ S. Q. J( G为了加载我板子上的QSPI Flash,需要做以下工作:7 M. q' k8 {# Y3 n/ K
' H: Z9 Q( {0 g* Y0 [
1. 在编译kernel时加上mtd,qspi驱动,jffs2文件系统(当然也可以是其他filesystem);
2 K  w0 ?* X; i4 u- {7 n2 Q% Y0 `% n* R& _! U( _& L
2. 在设备树里面添加qspi设备,指定硬件引脚,指定地址范围并分区;
$ T% E& @" a9 y' B
: Y! X* ]+ N4 Y0 g1 @5 {3. 在linux启动脚本里挂载qspi flash分区。
8 c: K( o  F! ^! \, G
: @8 T" C6 h' M: B3 W. ?; @) y! x& ?  M4 F7 \. Z$ l7 H. X/ _; T

: a7 b  [: k* Y! @. R' B& C- H. g! `
通过搜索源码,在linux源码包里有STM32 QUADSPI驱动,第一项条件满足。接下来修改设备树(设置QSPI CLK=54MHz,32MB的空间我分了两个区,一个放内核10M,另一个放用户数据22M):
# Q+ |6 q/ o: Y8 i" k( D6 {( X. T- I0 s! Q$ @
/*
8 [% [! ^5 w0 b  R8 w9 O: ]' _ * QSPI
8 a5 t, k3 I+ ~- a+ Q' Q */
3 D5 S0 V& E# z; B&qspi {undefined  }6 |! Y2 v8 u. F6 i8 U
        status = "okay";      
" J- C6 S- d& X. w* V8 w        pinctrl-names = "default";, c. J: J5 e% c; s& b: k" F
        pinctrl-0 = <&pinctrl_qspi>;! m$ x4 ?' U0 i* _+ y# W: y7 W
        freq = <54000000>;- W+ c. i" {/ a- ^! w% l
        flash = "w25q256jv";
$ v, q1 A  d# U* |
+ I2 i$ p! \1 G$ o6 {8 u4 y$ G1 A        partition@0x00000000 {undefined* F3 [2 e8 p; z6 @
                label = "spi_flash_part0";
' f! P. c! t) X9 `# g' g0 V$ B+ R                reg = <0x00000000 0xa00000>;
5 I! t& W3 d/ Z' t" C( K        };2 F" b7 W9 @! E5 O/ z9 {

: s) D+ s: T- [( m* k        partition@0x000a0000 {undefined* ~6 }/ e8 {+ m8 {
                label = "spi_flash_part1";+ C; r; V, D4 \4 W3 Q; k
                reg = <0x00a00000 0x1600000>;
6 K: p2 N. N: ]4 O/ X        };
3 W: n' v: D! ^6 _};
; X8 S' ?% {4 U4 g! {
- X6 q6 H' g! v  u% _2 A) W# p  d, ~6 W0 ]0 y& s

% U' Y% Z# {/ q8 d1 `指定QUADSPI引脚
  q% v( k1 r0 ?+ \4 }3 _) Q* @, z  y5 y
                qspi {undefined" j1 ^/ ]1 f& O* P$ K. p3 P8 |
                        pinctrl_qspi: qspi-0 {undefined( j- _. u) M# M9 B8 x
                                st,pins {undefined! q- Q1 k; ~: T3 _: k  Q' `
                                        cs_n = <&gpiob 6 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;
2 n) I  Q3 Z- h# Q+ {1 J                                        sck = <&gpiob 2 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;0 g8 a$ E* _/ K' M
                                        io0 = <&gpiof 8 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;
% J( k# j* k/ Y" ^7 C: u& E7 [                                        io1 = <&gpiof 9 ALT10 NO_PULL PUSH_PULL FAST_SPEED>;
$ D: C' A9 A7 M" |" g3 L                                        io2 = <&gpiof 7 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;
! U; t) f% `  H1 j5 U( s$ |                                        io3 = <&gpiof 6 ALT9 NO_PULL PUSH_PULL FAST_SPEED>;! g9 Y6 B3 p$ U2 B0 w
6 O! r, n. y2 ]
                                };7 S% A$ C6 p. `, e( x9 Y; }8 s% i
                        };& M- p+ y+ T7 s6 Q3 H# [
                };# J# H4 j/ T6 K! O1 t( C; s$ m2 N

. f: h+ C  ?3 l7 C8 r. L+ K- V( @; _+ z5 O# N  p3 C2 ?* S" e

) N. o* E1 n( ~编译linux,下载到板子,上电启动。可以看到在log出现了qspi分区信息,说明加载成功:
$ }! p/ y" X0 |; H4 K1 @
, T* ?% A3 f6 Y/ N- J* w. A2 ^
% V, E7 u& U' f4 X% O+ _% D6 F' u8 e6 `$ m/ P! o9 k/ g
启动后在系统里查看mtd分区:% q9 a$ S8 z  |0 Q$ Y3 s
( o# X1 p# N. g1 E  \
~J8FP`UTE$AXSTLI996EGR4.png
! O3 r4 k: M: a% y: m% P8 c2 _! [6 V; `7 R2 U, p! @
手动挂载用户分区到linux系统目录:, c1 f, z+ g% _1 l  M0 y6 s6 m
) D1 Z$ ~5 p3 ~5 e
mount -t jffs2 /dev/mtdblock3 /mnt/qspi
8 E4 L/ B0 n0 r2 u7 t
) X0 g  n4 d# y+ t- c拷贝几个文件进去,断电再上电文件还在没有丢失。证明qspi flash挂载成功!2 N/ |0 _2 Y! j. {! W9 x
RQAPG)~9XM$P2J8J8)FQ5OU.png
! x. e3 Q! i7 [; c0 v( p* I# B2 S& n1 h% Q* B2 V& o- ~

3 d9 ~( ?" g2 B
; F* K6 Z. w1 a5 }( e
  F) {7 |: j* E! ?5 g
收藏 评论0 发布时间:2022-4-7 18:23

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版