Keil Flash的下载算法

更进一步的了解Keil Flash的下载算法

前面提到了通用算法的选择,那么问题来了,这个算法文件如何来的呢?如果你所用的MCU不是默认支持的品牌,如何编写属于自己的算法呢?

更进一步的了解Keil Flash的下载算法

工具/原料

Keil uVision

ULINK2仿真器

方法/步骤

打开Keil安装所在文件夹,如图示路径,你可以看到算法存储位置,也就是说你通过ADD按钮所选择的程序来自于这里,但是这个文件是如何来的呢?

更进一步的了解Keil Flash的下载算法

拖动滚动条,可以找到这样一个文件夹,如图示,打开它发现一个Keil工程,这就是flash算法的源码。

更进一步的了解Keil Flash的下载算法

更进一步的了解Keil Flash的下载算法

打开这个工程,工程里面主要是两个C file,注意图中标示。其中FlashDev.c文件顾名思义是设备Flash的接口定义,我们可以看到里面有STM32F0xx系列的接口。

更进一步的了解Keil Flash的下载算法

任意截图一例如下图,这是一个结构体,右边有相应的注释。从注释上看,Device Name是可以更改,这个也就是你点击ADD按钮时所呈现的名字。接下来有Device start address和Device size。继续定义programming page size,初始化内容填充值,一个page下载的timeout,擦除一个sector的timeout。 sector size等,看起来应该很清晰明白。

更进一步的了解Keil Flash的下载算法

有了这些接口定义就对flash本身有了很清楚的了解,我们在看FlashPrg.c文件。这是算法主文件。文件的开头是一些结构体和宏的定义。请仔细阅读你所选择的芯片的flash部分寄存器定义,你就可以找到。

更进一步的了解Keil Flash的下载算法

接下来可注意到下面有不同的函数定义,Init()函数很显然是对flash的一个初始化,仔细阅读芯片specification即可知道。对应的是UnInit()。你还可以看到int EraseChip (void) , int EraseSector (unsigned long adr),int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf), 是不是很熟悉的感觉?

更进一步的了解Keil Flash的下载算法

让我们再次回顾下图中蓝色标注部分,你可看到其实在下载之初你已经选择过类似的接口,下载过程中将会调用出现在该文件中的程序,而如果你自己编写,就只要替换其中的代码即可,接口Keil已经为你准备完毕。如何编写,那么清仔细阅读相应flash controller章节的定义。

更进一步的了解Keil Flash的下载算法

到此为止,对于如何编写属于自己的flash算法心里应该很清楚了,如有疑问请留言。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vulnstack----5、ATTCK红队评估实战靶场五

文章目录 一 环境搭建二 外网渗透三 内网信息收集3.1 本机信息收集3.2 域内信息收集 四 横向移动4.1 路由转发和代理通道4.2 抓取域用户密码4.3 使用Psexec登录域控4.4 3389远程登录 五、痕迹清理 一 环境搭建 1、项目地址 http://vulnstack.qiyuanxuetang.net/vuln/detail/7/ …

使用docker部署db2

1.使用docker部署db2 1.1 拉db2镜像 将db2镜像拉起到本地。 docker pull ibmcom/db21.2启动容器 docker run -d -p 50000:50000 --name db2 --privilegedtrue -e DB2INST1_PASSWORDdbPassword DBNAMEjumpdb -e LICENSEaccept -v /usr/local/db2:/database ibmcom/db2实例化…

详解TCP/IP的三次握手和四次挥手

文章目录 前言一、TCP/IP协议的三次握手1.1 三次握手流程 二、TCP/IP的四次挥手2.1 四次挥手流程 三、主要字段3.1、标志位(Flags)3.2、序号(sequence number)3.3、确认号(acknowledgement number) 四、状态…

视频监控/视频汇聚/视频云存储EasyCVR平台HLS流集成在小程序无法播放问题排查

安防视频/视频云存储/视频集中存储EasyCVR视频监控综合管理平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频…

如何快速搭建母婴行业的微信小程序?

如果你想为你的母婴行业打造一个独特的小程序,但没有任何编程经验,别担心!现在有许多小程序制作平台提供了简单易用的工具,让你可以轻松地建立自己的小程序。接下来,我将为你详细介绍搭建母婴行业小程序的步骤。 首先&…

数学建模--三维图像绘制的Python实现

目录 1.绘制三维坐标轴的方法 2.绘制三维函数的样例1 3.绘制三维函数的样例2 4.绘制三维函数的样例3 5.绘制三维函数的样例4 6.绘制三维函数的样例5 1.绘制三维坐标轴的方法 #%% #1.绘制三维坐标轴的方法 from matplotlib import pyplot as plt from mpl_toolkits.mplot3…

【JPC出版】第二届能源与电力系统国际学术会议 (ICEEPS 2023)

第二届能源与电力系统国际学术会议 (ICEEPS 2023) 2023 2nd International Conference on Energy and Electrical Power Systems 第二届能源与电力系统国际学术会议 (ICEEPS 2023)将于2023年10月27日至29日在中国厦门举行。ICEEPS 将汇集能源科学、电气工程和电力系统领域的…

QTableView合并单元格

QtableView的功能 QTableView是Qt框架提供的用于显示表格数据的类。它是基于MVC(模型-视图-控制器)设计模式的一部分,用于将数据模型和界面视图分离。 以下是一些QTableView的主要特点和功能: 1. 显示表格数据: QTa…

淘宝数据库,主键如何设计的?

聊一个实际问题:淘宝的数据库,主键是如何设计的? 某些错的离谱的答案还在网上年复一年的流传着,甚至还成为了所谓的 MySQL 军规。其中,一个最明显的错误就是关于MySQL 的主键设计。 大部分人的回答如此自信&#xff…

关于el-input和el-select宽度不一致问题解决

1. 情景一 单列布局 对于上图这种情况&#xff0c;只需要给el-select加上style"width: 100%"即可&#xff0c;如下&#xff1a; <el-select v-model"fjForm.region" placeholder"请选择阀门类型" style"width: 100%"><el-o…

QT C++ 实现网络聊天室

一、基本原理及流程 1&#xff09;知识回顾&#xff08;C语言中的TCP流程&#xff09; 2&#xff09;QT中的服务器端/客户端的操作流程 二、代码实现 1&#xff09;服务器 .ui .pro 在pro文件中添加network库 .h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>…

喜讯 | 数智经营新典范,体验家XMPlus荣获「年度数智经营服务商」

7月27日&#xff0c;“助力运营知识与创新传播”的内容服务平台——运营研究社举行了「2023数字化运营生态大会」&#xff0c;会上正式揭晓了「2023数字化运营生态大奖」的四大榜单&#xff0c;体验家XMPlus荣获「年度数智经营服务商」&#xff01;现场有800运营伙伴齐聚&#…