Keil Flash的下载算法

news2024/10/6 5:54:53

更进一步的了解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.coloradmin.cn/o/974894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

连接云-边-端,构建火山引擎边缘云网技术体系

近日,火山引擎边缘云网络产品研发负责人韩伟在LiveVideoStack Con 2023上海站围绕边缘云海量分布式节点和上百T的网络规模,结合边缘云快速发展期间遇到的各种问题和挑战,分享了火山引擎边缘云网的全球基础设施,融合开放的云网技术…

69、配置AWS服务,接收来自RTSP流的推送

基本思想:在上一篇的基础和视频教程之后,进行简单的aws服务,进行RTSP流的接收 第一步: 第二步:配置video_stream,记得选择香港节点 同时记录这个信息,后面的策略需要填充 第三步:进行策略设置 第四步:策略设置,选中右上角的创建策略 第五步、进行json填充 第六步:填…

程序产生自我意识,创造人工生命

偶然发现一个大佬研究了一个很有意思的项目,研究了好几年,让程序产生自我意识诞生人工生命,感觉10年后肯定是继Chart GPT之后的又一个风口,在这里记录一下分享给大家,这个项目在git上有开源,开源地址&#…

CC-TDOB01 CC-TDIL01 有效地监控和管理热工设备

CC-TDOB01 CC-TDIL01 有效地监控和管理热工设备 新兴的互联工厂技术是霍尼韦尔启动其43的亮点注册营养师霍尼韦尔用户组(HUG)美洲研讨会,重点是向制造商展示数字化转型如何帮助他们实现更高水平的高性能。 来自石油和天然气、化工、纸浆和造纸以及金属和采矿行业的…

亚马逊重大更新,底层卖家的机会来了(干货)

最近,亚马逊对产品详细页面进行了又一次的改版。在这次改版中,亚马逊调整了产品详细页面的五点描述显示,无论是在电脑端还是移动端,大部分产品的五点描述都被折叠。 亚马逊的这一举动可能会改变传统的流量分配方式,进一…

Wasm软件生态系统安全分析

本文转载自 OpenHarmony TSC 官方微信公众号《峰会回顾第12期 | Wasm软件生态系统安全分析》 演讲嘉宾 | 王浩宇 回顾整理 | 廖 涛 排版校对 | 李萍萍 嘉宾简介 王浩宇,华中科技大学教授,博士生导师,华中科技大学OpenHarmony技术俱乐部主任…

vmware设置桥接模式后ip设置

网络连接方式设置 找到虚拟机里机器的网络设置 左边是宿主机,右边是虚拟机,按照这个设置就可以上网了(IP指定一个没有占用的值,子网掩码和网关设置成一样的)就可以联网了。 over~~

leetcode1288. 删除被覆盖区间(java)

删除被覆盖区间 题目描述贪心法代码演示 题目描述 难度 - 中等 leetcode1288. 删除被覆盖区间 给你一个区间列表&#xff0c;请你删除列表中被其他区间所覆盖的区间。 只有当 c < a 且 b < d 时&#xff0c;我们才认为区间 [a,b) 被区间 [c,d) 覆盖。 在完成所有删除操作…

Error: Cannot find module ‘timers/promises‘

这个错误很要命 他会导致你本机所有的npm 命令全部报错 首先 这个错误是因为 npm 与 node版本不匹配导致的 最简单的办法就是 查一下你安装的这个npm 的版本适配那个版本的 node 然后将本地的node删除 控制面板写在node 然后去官方文档现在与本地npm 匹配的node.js 这样 你执行…

健康舒适的超满意照明体验!SUKER书客SKY护眼台灯测评

健康舒适的超满意照明体验&#xff01;SUKER书客SKY护眼台灯测评 2022年全国儿童青少年总体近视率为53.6%&#xff0c;其中6岁儿童为14.5%&#xff0c;小学生为36%&#xff0c;初中生为71.6%&#xff0c;高中生为81%&#xff0c;近视已成为当下人们遇到的比较普遍的眼健康问题…

一加真我OPPO手机ROOT后怎么2个手机登录1个微信-微信平板模式

因为工作或者某些原因&#xff0c;很多用户希望在2个手机上登录同1个微信&#xff0c;协同使用达到更方便的 效果。自从微信更新到新版以后&#xff0c;新增了个平板模式&#xff0c;这就给我们的思路提供了玩法。通过 刷机实测&#xff0c;大部分安卓手机都能实现2个手机登录1…

Dual Adaptive Representation Alignment for Cross-domain Few-shot Learning

小样本学习的目的是通过学习基础知识&#xff0c;在有限的支持样本下识别新的查询。在此设置中&#xff0c;最近的进展假设基础知识和新查询样本分布在相同的域中&#xff0c;这对于实际应用通常是不可行的。

02-系统篇-内存分布

一.进程中的内存分布 进程是应用程序运行的单位&#xff0c;进程在内存中运行时&#xff0c;各个部分分布的情况如图。 1.栈内存(statck) 特点:后进先出 系统一般会对栈的大小进行限制&#xff0c;可以用命令进行查看&#xff0c;如下&#xff0c;700是进程号&#xff0c;栈被…

【python基础知识】4.列表和字典

文章目录 前言列表什么是列表从列表提取单个元素从列表提取多个元素给列表增加/删除元素 数据类型&#xff1a;字典什么是字典从字典中提取元素给字典增加/删除元素 列表和字典的异同列表和字典的不同点列表和字典的相同点 前言 截至目前&#xff0c;我们已经掌握了3种数据类型…

【NLP的python库(02/4) 】:Spacy

一、说明 借助 Spacy&#xff0c;一个复杂的 NLP 库&#xff0c;可以使用用于各种 NLP 任务的不同训练模型。从标记化到词性标记再到实体识别&#xff0c;Spacy 还生成了精心设计的 Python 数据结构和强大的可视化效果。最重要的是&#xff0c;可以加载和微调不同的语言模型以适…

宇凡微Y62R射频433接收芯片(功能强大的合封解决方案)

在现代科技领域&#xff0c;芯片技术的不断进步推动着无数创新应用的诞生。今天&#xff0c;我们将介绍一款功能强大的芯片——Y62R&#xff0c;这款芯片由宇凡微精心开发&#xff0c;融合了433接收功能和主控功能&#xff0c;为各种无线通信和控制应用提供了强大的解决方案。 …

nmp ERR! code ERR SOCKET TIMEOUT nmp ERR!network npmSocket timeout(已解决)

当安装vue-cli时&#xff0c;出现超时错误 npm ERR! code ECONNRESET npm ERR! network This is a problem related to network connectivity npm ERR! code ECONNRESET npm ERR! network aborted npm ERR! network This is a problem related to network connectivity. npm E…

GPT引领前沿与应用突破之GPT-4科研实践技术与AI绘图

查看原文>>>GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图 目录 专题一、AIGC概述 专题二、人工智能算法介绍 专题三、大语言模型Prompt提示词使用技巧 专题四、让GPT成为你的生活助理&#xff08;动手练习&#xff09; 专题五、让GPT成为你的工作秘书&…

Java入门基础知识

文章目录 关于JDK什么是JDK什么是JRE 关键字字面量,变量标识符 关于JDK 什么是JDK JDK是Java工具开发包,包含了JVM(程序运行环境),核心类库(直接应用即可),开发工具(Javac,java,jdb,jhat…) 什么是JRE JRE是Java运行环境,包含了JVM,核心类库,运行工具 JDK包含了JRE,JRE包含…

什么是50ETF期权开户条件,怎么开期权交易权限?

50ETF期权是指上证50ETF期权&#xff0c;标的物是上证50ETF&#xff0c;代码是&#xff08;510500&#xff09;&#xff0c;期权是一种在上证50ETF基础上进行衍生品交易的金融工具&#xff0c;下文科普什么是50ETF期权开户条件&#xff0c;怎么开期权交易权限&#xff1f;本文来…