MDK编程算法用过MDK下载程序的小伙伴可能都知道,在下载程序之前需要都在Debug设置的Flash Download子选项卡选择编程算法。大多数时候, 我们只要安装了芯片包之后,就可以直接得到对应的编程算法,并不需要我们去修改它。但是,当你是一个芯片包的开发者,或者你有独特 的下载需求(比如在你的程序里加入一些校验信息),这个时候你就需要去了解它了!
编程算法呢,说白就其实也就是一段程序,主要功能就是擦除相应的内存块,并将我们的程序写入到相应的内存区域上去。 在你点击下载按钮的时候,这段程序会被先下载到RAM上(RAM for Algorithm上的设置),然后才会通过它,将你的程序写入到 指定的内存区域内。
实现一个自己的编程算法怎么去实现一个自己的编程算法?首先我们找到自己的MDK的安装路径,进入到ARM\Flash文件夹下(例如:D:\Keil_v5\ARM\Flash)。 这里有个编程算法的工程模板,复制这个工程到你的工程文件夹下,重命名你自己的想要的名字。
打开工程,里面主要有两个文件 FlashPrg.c 和 FlashDev.c:
FlashDev.c主要实现了一个设备相关的结构体(根据自己的Flash情况去实现)
比如STM32L051实现如下:
FlashPrg.c实现了几个Flash编程相关的函数:
根据自己的需要去实现,STM32L051实现如下: ![]()
从上面我们就可以看出了,下载程序的时候就是调用了上面的几个函数,跟我们自己写Flash没有太大的区别。那么程序都编程完成之后, 怎么生成FLM文件呢?我们先编译工程,完成之后你去看你的工程输出目录,这个时候你就已经可以找到FLM后缀的文件了,这个就是你自己 的编程算法,把它复制到 ' MDK安装路径 '\ARM\Flash下面就可以了,在选项卡里选择你自己的编程算法就可以使用了。
结束到这里,你已经可以自己实现一个编程算法了。但是细心的小伙伴可能会发现,这个过程下来其实和我们自己的项目工程没有什么区别, 但是为什么我们自己的工程就生成不了FLM文件呢?哈哈,小伙伴可以自己看一看编译的日志,有没有类似下面的日志
原来.FLM文件跟.axf文件是一样的,就是改了一下文件后缀。具体.axf文件又是什么呢?哈哈, 我就不说了,感兴趣的小伙伴们可以自己去了解一下!
|
|