STMCU小助手
发布时间:2022-4-7 18:23
|
emcraft的STM32F7 BSP默认是加载并行NOR Flash分区的,不加载QSPI Flash。老实说这个配置比较老了,现在用并行NOR的越来越少了,QSPI Flash越来越多。 为了加载我板子上的QSPI Flash,需要做以下工作: 1. 在编译kernel时加上mtd,qspi驱动,jffs2文件系统(当然也可以是其他filesystem); 2. 在设备树里面添加qspi设备,指定硬件引脚,指定地址范围并分区; 3. 在linux启动脚本里挂载qspi flash分区。 通过搜索源码,在linux源码包里有STM32 QUADSPI驱动,第一项条件满足。接下来修改设备树(设置QSPI CLK=54MHz,32MB的空间我分了两个区,一个放内核10M,另一个放用户数据22M): /* * QSPI */ &qspi {undefined status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&pinctrl_qspi>; freq = <54000000>; flash = "w25q256jv"; partition@0x00000000 {undefined label = "spi_flash_part0"; reg = <0x00000000 0xa00000>; }; partition@0x000a0000 {undefined label = "spi_flash_part1"; reg = <0x00a00000 0x1600000>; }; }; 指定QUADSPI引脚 qspi {undefined pinctrl_qspi: qspi-0 {undefined st,pins {undefined cs_n = <&gpiob 6 ALT10 NO_PULL PUSH_PULL FAST_SPEED>; sck = <&gpiob 2 ALT9 NO_PULL PUSH_PULL FAST_SPEED>; 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>; }; }; }; 编译linux,下载到板子,上电启动。可以看到在log出现了qspi分区信息,说明加载成功:
启动后在系统里查看mtd分区:
手动挂载用户分区到linux系统目录: mount -t jffs2 /dev/mtdblock3 /mnt/qspi 拷贝几个文件进去,断电再上电文件还在没有丢失。证明qspi flash挂载成功!
|
STM32F745 USART1 Bootloader启动失败排查与解决的流程分析
STM32芯片命名规则
STM32 引脚到底有多少?为什么一个引脚能当好几个用?
入门嵌入式,为什么STM32是“优选起步”?
嵌入式-单片机-STM32 EXTI中断
STM32单片机进行除零运算,为何程序不崩溃?
STM32 LL为什么比HAL高效?
STM32时钟详解
2025国庆中秋活动体验报告2——TouchGFX的UI设计
2025国庆中秋活动体验报告1——TouchGFX环境配置
微信公众号
手机版