×

STM32F103ZET6------片外flash下载算法

zxjy辉 zxjy辉 发表于2022-12-20 16:46:33 浏览320 评论0

抢沙发发表评论

唯美梦幻的冬日雪景图片.jpeg

终于又开始写笔记了,最近学习了挺多的东西,像是LVGL 、FATFS,使用的是正点原子的开发板,自己尝试这从官网开始移植,移植到代码单独一项都是可以完美运行的时候,打算将两者结合起来,弄个东西出来的时候,发现,flash(512k)不够了,就打算如何扩大这个flash,毕竟开发板上有SRAM和SPI FLASH,都是资源,结果。。。。。

  1. 大致的方法(目的)

    1. 由于是flash是不够用了,最直观的就是将一部分代码放在片外flash,在片外flash上运行

  2. 问题

    1. 基于上面的那个解决方法,冲浪了一下,发现都是stm32f4甚至是更高的型号,相关的片外算法,f103的太少见了,并且在查找资料的时候,只关注了片外flash下载,没注意到QSPI,这个名词,这个是在一些M4 M7内核上才搭载的硬件接口,这个接口的作用就是,可以直接使得MCU可以从总线上直接以地址的方式,访问(读)对应地址上的数据(写不行),就相当于又搭载了一个“内部的flash”,并且需要进行内存映射,将w25qxx的地址(0x00000000)映射到0x90000000上,到时候,就直接从0x90000000这个地址上访问,这个才能使得直接在片外运行程序。

  3. 解决方案(改)

    1. 所以在stm32f103上,的解决方案就是将字库、图片等资源占用大的数据存放到外部的flash上,使用的时候,在将对应的数据读出来

  4. SPI FLASH 下载方法

    1. 一种就是单独下载数据到FLASH上(这个就比较繁琐),需要将需要的数据下载到存储的FLASH上,一个一个的飞线

    2. 一种就是通过MCU将数据下载的对应的FLASH中,在将代码拷入到MCU中的时候,也将对应的数据拷入到需要存储数据的FLASH中,直接就是一步到位,那这个过程就需要一个工具,替你把keil传过来的数据烧录到对应的flash中,这个也就是“算法”,在批量的时候,是非常方便的

  5. 算法

    1. 算法的实质:算法其实就是一段运行在RAM中的代码,通过这个代码,初始化所需要的资源,将keil传输过来的资源传输到芯片中或者是片外的flash中。算法其实在烧录的时候,是一直用到的,只有在第一次安装keil的时候,做第一个工程的时候,才记得有这个东西,这个是安装MDK的时候,自带的st的下载的算法,通过ST-LINK将数据通过SW下载到芯片内部的flash中,当然官方也提供了一些其他的片外的flash算法,如果没有的,只能自己去移植一个。

      图片.png

    2. 注意事项:移植完的算法如果提示如下所示的错误,则是运行内存不够,需要调大一些

      图片.png

  6. 移植算法

      由于是采用的是正点原子的开发板,芯片是stm32f103ZET6的,并且板载了型号为W25Q128的SPI FLASH,所以需要自己移植一个下载算法,

    1. 第一步:去找MDK下的demo,不一定是在这个位置,需要的文件只有框选的这些(两幅图),将这几个文件复制到一个新建的文件夹中,准备接下去的移植工作

      图片.png

      图片.png

    2. 第二步:移植正点原子的关于spi的以及w25qxx的代码部分

      图片.png

      移植用到的硬件资源stm的gpio、spi、rcc、等所需的库

      图片.png

      还有就是串口、延时等

      图片.png


    3. 第三步:关于正点原子移植(第二步)需要修改的部分,添加对应的时钟初始化,设置时钟频率

      图片.png

      其中sys.c和sys.h是正点原子编写的,由于工程刚打开是如下图所示,是缺少很多文件的,并且算法说白了就是运行在RAM中的一段代码,所以之后要做的就是间这个工程完善,使得能在RAM中运行起来,总之是缺啥补啥

      图片.png

    4. 第四步:整合

      1. 首先是对FlashDev.c文件进行设定,包括一些flash相关的东西,更据具体的flash参数去填写

        图片.png

      2. 第二步就是修改FlashPrg.c文件,这个文件的的作用,就是针对具体的flash写的底层驱动,包括了对应的系统时钟初始化(如果有的话),读、写、擦除flash,以及对写入的数据进行校验,要注意对应的spi的初始化的引脚需要根据实际情况进行更改

        图片.png

        图片.png

        图片.png

        图片.png

        图片.png



#好好学习!

群贤毕至

访客