STMCU小助手
发布时间:2022-4-7 18:23
|
emcraft的STM32F7 BSP默认是加载并行NOR Flash分区的,不加载QSPI Flash。老实说这个配置比较老了,现在用并行NOR的越来越少了,QSPI Flash越来越多。 为了加载我板子上的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 2. 在设备树里面添加qspi设备,指定硬件引脚,指定地址范围并分区; 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): ( K: @9 s: U) b* L1 S0 j: @. }1 [& J3 I /* * QSPI k: Z7 e- X9 v8 ~7 @; {# Z */ &qspi {undefined status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_qspi>; freq = <54000000>; flash = "w25q256jv"; partition@0x00000000 {undefined0 C7 l+ f- o" }2 i" U" F label = "spi_flash_part0"; reg = <0x00000000 0xa00000>; }; % l# E V8 H K" r$ F' U3 Q+ K partition@0x000a0000 {undefined label = "spi_flash_part1";8 |' V% D1 l1 N. q1 a' v reg = <0x00a00000 0x1600000>; };% ]* 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 指定QUADSPI引脚 qspi {undefined 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 };+ d ?9 p/ p b7 ]; j }; }; $ 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分区信息,说明加载成功:
; \# e, f4 l2 f" ] 启动后在系统里查看mtd分区:1 N. y* W! ?% z' x; ~) W% \, _
手动挂载用户分区到linux系统目录:* H3 @* r! ]8 e & [- c( C# g: j/ Z* `4 b1 |$ l/ ~6 c mount -t jffs2 /dev/mtdblock3 /mnt/qspi 2 j, {! T6 ~7 L. i 拷贝几个文件进去,断电再上电文件还在没有丢失。证明qspi flash挂载成功!
7 I. \$ p" k1 {, s& C |
基于STM32F767通过cube配置:QSPI接口读写64M PSRAM+flash参考资料...
STM32F746G-DISCO移植lvgl9.0性能基准测试
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
微信公众号
手机版