通过 KEIL 制作 QSPI 接口的外部 Flash 下载算法

1. 引言

随着用户的应用越来越复杂以及 GUI 等需要大存储空间的需求越来越多,很多时候我们需要将代码或数据放在外扩的 Flash 存储空间。但是这样存在一个外部 Flash 烧写的问题,尤其是在应用调试时,需要将代码或数据烧录到外部 Flash。如果调试工具不能够一键烧录,势必会给调试带来诸多的麻烦。本文以 STM32H750 芯片为例,介绍通过 KEIL制作 QSPI 接口的外部 Flash 下载算法的方法。

2. MDK 下载算法基础知识

FLASH 编程算法是一种用于擦除应用程序或将应用程序下载到 Flash 的程序代码。MDK 本身支持的各种器件都自带下载算法,存放在 MDK 各种器件的软件包里面,以STM32H7 为例,算法存在于 Keil\STM32H7xx_DFP\2.6.0\CMSIS\Flash(软件包版本不同,数字 2.6.0 会不同)。

但是,只有 STM32 官方部分开发板提供了算法工程,大多数用户开发板都需要自己编写下载算法。不同的 QSPI-FLASH 的驱动略有差别,因此下载算法也不同。所以,掌握通用的下载算法制作步骤很重要。

MDK 通过创建一批与地址信息无关的函数,实现的功能主要有初始化,擦除,编程,读取,校验等,然后在 MDK 调试下载阶段,会将算法文件加载到芯片的内部 RAM 里面(加载地址可以通过 MDK 设置),然后 MDK 通过与这个算法文件的交互,实现程序下载,调试阶段数据读取等操作。

3. 程序擦除操作执行流程

如图 1(Algorithm Functions (keil.com))所示,可以看出 Flash 的擦除过程包括以下几个步骤:

  1. a) 加载算法到 RAM(一般指片内 SRAM)
  2. b) 执行初始化函数 Init
  3. c) 执行擦除操作,根据用户的 MDK 配置,这里可以选择整个芯片擦除或者扇区擦除。
  4. d) 擦除操作结束后执行 Uninit 函数

图1.程序擦除操作执行流程
图1.程序擦除操作执行流程

4. 程序烧录操作执行流程

如图 2(Algorithm Functions (keil.com))所示,程序烧录执行流程包括以下步骤:

a)对所有的 AXF 文件做 init 初始化(AXF 是 MDK 生成的可执行文件,也就是需要烧录和调试的代码)
b)查看烧写算法 FLM 文件是否存在,如果不存在,则操作结束;如果存在,则继续
c)加载算法文件到 RAM 中
d)执行初始化函数 Init
e)加载用户程序代码至 RAM 中
f)执行写入编程函数 Program Page
g)执行 Uninit 函数
f)操作结束

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/534272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ELFK (Filebeat+ELK)日志分析系统

一. 相关介绍 Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进或是直接发给 Elasticsearch 存储,性能上相…

(vue)el-radio鼠标移入可提示图片

(vue)el-radio鼠标移入可提示图片 效果&#xff1a; <el-form-item label"图表选择"><el-radio-group v-model"formInline.echartType"><el-tooltip v-for"(item, index) of echartTypeOptions" :key"index" placement…

Vue前端框架

1.vue基本使用1 1.vue环境搭建 一般创建vue项目是在cmd命令中用&#xff1a;vue ui 命令&#xff0c;采用ui图形界面的方式直观创建项目。 2.vue基本使用方式&#xff1a;vue组件 3.文本插值 4.属性绑定 5.事件绑定 6.双向绑定 7.条件渲染 2.vue基本使用2 1.axios 安装axios命令…

视频号小店遇到差评怎么办?怎么规避差评问题?有三种解决思路

大家好&#xff0c;我是电商花花。 我们做视频号小店的商家应该都会遇到品退、中差评这些问题&#xff0c;一个差评就可能影响到我们店铺的体验分&#xff0c;尤其是在订单不多的时候&#xff0c;一条差评很有可能让你的店铺的流量、转化率发生骤降&#xff0c;如果体验分太低…

用优先编码器①实现键盘编码电路

描述 请使用优先编码器①实现键盘编码电路&#xff0c;可添加并例化题目中已给出的优先编码器代码。 10个按键分别对应十进制数0-9&#xff0c;按键9的优先级别最高&#xff1b;按键悬空时&#xff0c;按键输出高电平&#xff0c;按键按下时&#xff0c;按键输出低电平&#xf…

计算机网络----第八天

真是交换机怎么操作使用 H3C路由交换产品连接方法&#xff1a; ①SSH |Telnet |console ②直连和间接连接方式 ③上手操作建议&#xff1a; 命令行使用基础&#xff1a; ① system-view #进入系统视图 user-interface vty 0 4 #vty就是用telnet/ssh远程进入交换机的界面(虚…

第十四讲:C语言字符函数和字符串函数

目录 1. 字符分类函数 2、字符转换函数 3. strlen的使⽤和模拟实现 4. strcpy 的使⽤和模拟实现 5. strcat 的使⽤和模拟实现 6. strcmp 的使⽤和模拟实现 7. strncpy 函数的使⽤ 8. strncat 函数的使⽤ 9. strncmp函数的使⽤ 10. strstr 的使⽤和模拟实现 11. strt…

Qwen-WisdomVast (千问-智瀚)

介绍 Qwen-WisdomVast是以Qwen1.5-7B为底座&#xff0c;使用 DORA LORA 的训练方法&#xff0c;在100w高质量中文多轮SFT数据 20w英文多轮SFT数据 2000单轮自我认知数据训练而来的大模型&#xff0c;数学能力相比Qwen1.5-7B-Chat提升了5.16%&#xff0c;在HumanEval数据集上…

12 nacos 一系列 403 的构造

前言 最近 生产环境环境出现了 一系列的 nacos 403, 然后 这里来大致看一下 各种可能得情况 首先 nacos 服务器需要开启认证配置 这里 nacos 调试版本为 2.0.4 case1 用户无角色关联导致 403 报错的信息如下 2023-06-28 13:05:11.448 ERROR 10279 --- [ mai…

JR-D401 UHD 4K超高清音视频解码器

详细介绍&#xff1a; JR-D401 UHD 4K超高清解码器,AVS2.0/AVS/H.265HEVC/H.264/MPEG2解码&#xff0c;支持RF/ASI/IP输入&#xff0c;支持4K/1080P/1080I/720P/576I/480I多种分辨率&#xff0c;支持DRA/AC3/EAC3/AAC/MPEG等音频,支持4x3G SDI 4K输出。 产品特点 支持多种输入…

图解WebGLThree.js工作原理

一、WebGL背后的工作原理是什么&#xff1f; 以Three.js为例&#xff0c;讲述框架在背后扮演什么样的角色&#xff1f; 二、我们为什么要了解原理&#xff1f; 我们假定你对WebGL已经有一定了解&#xff0c;或者用Three.js做过了一些东西&#xff0c;这个时候&#xff0c;你可…

Conductor 项目的编译启动

本节主要是将Conductor进行启动&#xff0c;观察基本项目的基本能力。 Conductor 后端的编译启动 Conductor是基于17开发的&#xff08;代码中展示11可运行&#xff09;&#xff0c;依赖管理是通过Gradle完成的&#xff0c;要对项目进行编译通过&#xff0c;至少要满足环境如…

Ant Design 组件中文名称大全

整理Ant Design 中主要组件的中英文名称&#xff0c;加深对组件的印象,为后续使用时更容易想起和查找、与团队成员或其他开发者交流时,使用中文名称能够更加清晰地表达自己的意图,有助于沟通交流、可以更好地理解每个组件的功能和适用场景,有助于加深对 Ant Design 组件库的理解…

数据库提权_攻防(1),2024年最新缓存架构技术

第二个组件显示成功&#xff0c;但是没有回显&#xff0c;我们使用dnslog看一下。命令执行成功。 第三个也成功提权&#xff0c;第四个经过测试&#xff0c;提权失败。 三&#xff1a;mysql提权_UDF提权 MOF提权的条件为小于win2008的机型&#xff0c;所以不作研究。 条件&am…

查询category的id存在于项目表中category_id_list的json array字段中

表category 表project 查询category的id存在于项目表中category_id_list的json array字段中。

使用tomcat里的API - Servlet

Servlet 是一组api&#xff0c;操作http协议的&#xff0c;tomcat提供的。 写网站&#xff0c;接收前端传来的http请求&#xff0c;根据请求计算出一个http响应&#xff0c;并把http响应返回到浏览器这边 一、创建一个新的Maven空项目 首次创建maven项目的时候&#xff0c;…

【上海大学计算机组成原理实验报告】三、微指令系统实验

一、实验目的 了解译码器、微指令结构的基本工作原理。学习设计微指令的方法。 二、实验原理 根据实验指导书的相关内容&#xff0c;本实验所用的实验箱的微指令系统控制总线宽度为24位&#xff0c;每个地址单元宽度也为24位&#xff0c;其中微指令存储器由3片8位存储器按照…

PlantUML 实战示例(使用 PlantUML 画用例图、类图、活动图、时序图)

目录 前言 需求场景 用例图 类图 活动图 时序图 前言 在软件开发的生命周期中&#xff0c;需要先进行设计&#xff0c;最后才是进行具体的编码和测试。设计时就需要画各种 UML 图&#xff0c;有专业的 UML 画图软件&#xff0c;也有很多在线的 UML 画图网站可以来画图&a…

k8s部署nacos集群

部署环境&#xff1a; ubuntu20.04docker version 20.10.12k8s version 1.23.1kubeadm 一主两从 本篇主要参考nacos官方k8s配置文档的配置顺序&#xff0c;配置文件。 废话不多说直接开肝。 虚拟机上需要nfs 安装nfs #本篇所有执行的命令都是在root用户下操作 #安装命令&am…

用 ElementPlus 的日历组件 Calendar 自定义渲染

文章目录 需求分析1. 英文改为中文2. 修改样式3. 自定义头部4. 增删改功能接入 需求 使用 ElementPlus中的 Calendar 组件完成自定义渲染 分析 1. 英文改为中文 转为中文的方式&#xff1a;用 ElementPlus的日历组件如何改为中文 2. 修改样式 附源码 <template><…