
emcraft的STM32F7 BSP默认是加载并行NOR Flash分区的,不加载QSPI Flash。老实说这个配置比较老了,现在用并行NOR的越来越少了,QSPI Flash越来越多。 为了加载我板子上的QSPI Flash,需要做以下工作:7 M. q' k8 {# Y3 n/ K ' H: Z9 Q( {0 g* Y0 [ 1. 在编译kernel时加上mtd,qspi驱动,jffs2文件系统(当然也可以是其他filesystem); - {7 n2 Q% Y0 `% n* R& _! U( _& L 2. 在设备树里面添加qspi设备,指定硬件引脚,指定地址范围并分区; 3. 在linux启动脚本里挂载qspi flash分区。 ) y! x& ? M4 F7 \. Z$ l7 H. X/ _; T . R' B& C- H. g! ` 通过搜索源码,在linux源码包里有STM32 QUADSPI驱动,第一项条件满足。接下来修改设备树(设置QSPI CLK=54MHz,32MB的空间我分了两个区,一个放内核10M,另一个放用户数据22M): . T- I0 s! Q$ @ /* * QSPI */ &qspi {undefined }6 |! Y2 v8 u. F6 i8 U status = "okay"; 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"; partition@0x00000000 {undefined* F3 [2 e8 p; z6 @ label = "spi_flash_part0"; reg = <0x00000000 0xa00000>; };2 F" b7 W9 @! E5 O/ z9 { partition@0x000a0000 {undefined* ~6 }/ e8 {+ m8 { label = "spi_flash_part1";+ C; r; V, D4 \4 W3 Q; k reg = <0x00a00000 0x1600000>; }; }; d, ~6 W0 ]0 y& s 指定QUADSPI引脚 ) 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>; 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>; io1 = <&gpiof 9 ALT10 NO_PULL PUSH_PULL FAST_SPEED>; io2 = <&gpiof 7 ALT9 NO_PULL PUSH_PULL FAST_SPEED>; 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 ( @; _+ z5 O# N p3 C2 ?* S" e 编译linux,下载到板子,上电启动。可以看到在log出现了qspi分区信息,说明加载成功: ![]() 8 e6 `$ m/ P! o9 k/ g 启动后在系统里查看mtd分区:% q9 a$ S8 z |0 Q$ Y3 s ( o# X1 p# N. g1 E \ ![]() % 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 拷贝几个文件进去,断电再上电文件还在没有丢失。证明qspi flash挂载成功!2 N/ |0 _2 Y! j. {! W9 x ![]() 2 S& n1 h% Q* B2 V& o- ~ |
【实战经验】基于STM32F7的网络时间同步例程
STM32硬件结构学习
STM32中BOOT的作用
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
刘氓兔的杂谈【001】-片上USB 高速PHY