更进一步的了解Keil Flash的下载算法
来源:互联网 发布:淘宝海报设计技巧 编辑:程序博客网 时间:2024/06/13 23:51
http://www.wuji8.com/meta/248802081.html
前面提到了通用算法的选择,那么问题来了,这个算法文件如何来的呢?如果你所用的MCU不是默认支持的品牌,如何编写属于自己的算法呢?
工具/原料
Keil uVision
ULINK2**器
方法/步骤
打开Keil安装所在文件夹,如图示路径,你可以看到算法存储位置,也就是说你通过ADD按钮所选择的程序来自于这里,但是这个文件是如何来的呢?
拖动滚动条,可以找到这样一个文件夹,如图示,打开它发现一个Keil工程,这就是flash算法的源码。
打开这个工程,工程里面主要是两个C file,注意图中标示。其中FlashDev.c文件顾名思义是设备Flash的接口定义,我们可以看到里面有STM32F0xx系列的接口。
任意截图一例如下图,这是一个结构体,右边有相应的注释。从注释上看,Device Name是可以更改,这个也就是你点击ADD按钮时所呈现的名字。接下来有Device start address和Device size。继续定义programming page size,初始化内容填充值,一个page下载的timeout,擦除一个sector的timeout。 sector size等,看起来应该很清晰明白。
有了这些接口定义就对flash本身有了很清楚的了解,我们在看FlashPrg.c文件。这是算法主文件。文件的开头是一些结构体和宏的定义。请仔细阅读你所选择的芯片的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 controller章节的定义。
到此为止,对于如何编写属于自己的flash算法心里应该很清楚了,如有疑问请留言。
- 更进一步的了解Keil Flash的下载算法
- Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
- Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
- [原创] Keil uVision5 下载程序 add flash programming algorithm选项缺少需要的算法解决办法
- STM32F1在KEIL下的FLASH的烧写算法
- 更进一步的思考
- 几道小小的题目一起和大家更进一步的了解 Java(1)
- 几道小小的题目一起和大家更进一步的了解 Java (2)
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 关于IOCP的更进一步理解
- 线段树更进一步的运用
- 如何让自己的CS水平更进一步?(二)了解武器
- 如何让自己的CS水平更进一步?(三)了解武器
- 几道小小的题目一起和大家更进一步地了解Java (3)
- 数据结构实验之链表二:逆序建立链表
- angularjs 权限控制显示办法
- gulp-angular-templatecache缓存templateURL
- angular 设置select默认option选择值
- 剑指offer--面试题32:整数中1出现的次数(从1到n整数中1出现的次数)
- 更进一步的了解Keil Flash的下载算法
- 在ionic中用 ajaxfileupload.js 插件上传文件
- angular 拦截器每个请求传递用户的token
- ionic 顶/底部按钮宽度“平均分”
- Android开发面试者的几个建议
- 弹出遮罩层,阻止背景滚动
- hive优化
- cordova 环境搭建
- 深入理解javascript(14):自由变量到作用域链