0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎么样实现烧写算法FLM文件

单片机匠人 来源:张飞实战电子 作者:黄忠老师 2021-11-01 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

当我们在开发过程中用到MDK下载程序的时候可能都知道,在下载程序之前需要都在Debug设置的Flash Download子选项卡选择编程算法。大多数时候,我们只要安装了芯片包之后,就可以直接得到对应的编程算法,并不需要我们去修改它。但是,当我们是一个芯片包的开发者,或者我们有独特的下载需求(比如在程序里加入一些校验信息),这个时候我们就需要去了解它了!

编程算法其实就是一段程序,主要功能就是擦除相应的内存块,并将我们的程序写入到相应的内存区域上去。在点击下载按钮的时候,这段程序会被先下载到RAM上(RAM for Algorithm上的设置),然后才会通过它,将用户写的程序写入到指定的内存区域内。

怎么去实现一个自己的编程算法?首先我们找到自己的MDK的安装路径,进入到ARMFlash文件夹下。这里有个编程算法的工程模板,复制这个工程到你的工程文件夹下,重命名你自己的想要的名字。

打开工程,里面主要有两个文件 FlashPrg.c 和 FlashDev.c:

FlashDev.c主要实现了一个设备相关的结构体(根据自己的Flash情况去实现)

5d793bf2-3a19-11ec-82a9-dac502259ad0.png

比如STM32F103实现如下:

5dd88800-3a19-11ec-82a9-dac502259ad0.png

FlashPrg.c实现了几个Flash编程相关的函数:

5e3d6dc4-3a19-11ec-82a9-dac502259ad0.png

根据自己的需要去实现,从上面我们就可以看出,下载程序的时候就是调用了上面的几个函数,跟我们自己写Flash没有太大的区别。那么程序都编程完成之后,怎么生成FLM文件呢?我们先编译工程,完成之后你去看你的工程输出目录,这个时候你就已经可以找到FLM后缀的文件了,这个就是我们自己的编程算法,把它复制到 ‘ MDK安装路径 ’ARMFlash下面就可以了,在选项卡里选择我们自己的编程算法就可以使用了。但是为什么我们自己的工程就生成不了FLM文件呢?工程中的.axf文件跟.FLM文件是一样的,把.axf后缀改为.FLM即可。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    463

    文章

    54463

    浏览量

    469720
  • FlaSh
    +关注

    关注

    10

    文章

    1761

    浏览量

    155956
  • PLM
    PLM
    +关注

    关注

    2

    文章

    150

    浏览量

    22200

原文标题:烧写算法FLM文件如何实现呢?

文章出处:【微信号:gh_e7f294a514ca,微信公众号:单片机匠人】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    聊聊MCU下载算法在Keil MDK里的那些事儿

    角色——Flash 编程算法FLM 文件),就像个“幕后大佬”,帮调试器搞定 Flash 的擦除、编程和验证。可不少人(尤其是刚入门的小白)对 FLM 有点懵:这东西存哪儿?为啥非得
    的头像 发表于 12-16 09:30 4632次阅读
    聊聊MCU下载<b class='flag-5'>算法</b>在Keil MDK里的那些事儿

    迅为RK3588开发板Android系统及注意事项

    迅为RK3588开发板Android系统及注意事项
    的头像 发表于 12-03 15:17 7455次阅读
    迅为RK3588开发板Android系统<b class='flag-5'>烧</b><b class='flag-5'>写</b>及注意事项

    往flash里面的是.elf文件还是.hex文件?裸机应该没办法识别.elf文件

    往flash里面的是.elf文件还是.hex文件?裸机应该没办法识别.elf文件吧?
    发表于 11-05 07:02

    在Nuclei IDE中程序无法成功的原因及部分解决办法

    烧录的情况,这时候可以尝试按IDE上的红色按钮暂停工程,或者重启板子、插拔调试器也都能解决。而我们在团队三台电脑的IDE上都尝试程序,但是出现相同报错,说明也不是软件的问题。 3.调试器
    发表于 10-31 06:24

    SM4算法实现分享(一)算法原理

    ,Xi、Yi、rki为字,i=0,1,2,…,31。则本算法的加密实现为: 本算法的解密实现与加密实现结构是相同的,不同的只是提供的轮
    发表于 10-30 08:10

    复杂的软件算法硬件IP核的实现

    具体方法与步骤 通过 C 语言实现软件算法,并验证了算法的有效性以后,就可以进行算法的 HDL 转化工作了。通过使用 Altium Designer 的 CHC 编译器(C to H
    发表于 10-30 07:02

    Windows系统下用vivado将电路写到MCU200T板载FLASH的方法

    文件自动完成FPGA硬件电路的。这样就不必每次调试软件之前都需要重新打开vivado工程下载bitstream,可以更加方便地进行嵌入式软件开发。 首先打开vivado工程,综合,实现
    发表于 10-29 08:21

    浅谈PY32离线烧录器的滚码功能

    PY32离线烧录器可以开启滚码功能,默认该功能不开启。添加滚码时用户应注意填写滚码地址应在所选芯片型号 flash 大小之内,滚码长度固定为 32bits。
    的头像 发表于 10-13 10:31 1204次阅读
    浅谈PY32离线烧录器的<b class='flag-5'>烧</b><b class='flag-5'>写</b>滚码功能

    CW32L012实现外部flash下载算法

    外部flash或者内置的片上flash,都是编译器通过调用写好的FLM文件实现下载,单片机内部的安装pack包就会有(官方实现),外部flash的情况比较复杂,例如用的哪种flash
    的头像 发表于 10-09 17:38 1830次阅读
    CW32L012<b class='flag-5'>实现</b>外部flash下载<b class='flag-5'>算法</b>

    FLASH/编程白皮书

    白皮书:如何Flash——不同场景不同需求下的选择认识Flash NAND vs. NOR如何/编程不同方案比较
    发表于 07-28 16:05 0次下载

    【HZ-RK3568开发板免费体验】系统

    镜像合并为一个统一固件。可以说,单个统一固件和多个分区镜像本质是一的。 笔者这里使用合众官方提供的固件。 2 USB OTG固件 使用USB OTG
    发表于 07-25 09:40

    关于cyusb3014I2C EEPROM的问题求解

    你好,我最终要实现每次上电只从EEPROM引导img,并且能够识别到设备,不过现在遇到了一些问题。在使用cyusb3014芯片通过I2CEEPROM(型号为AT24C1024BN-SH25-T
    发表于 07-16 07:38

    基于FPGA的压缩算法加速实现

    本设计中,计划实现文件的压缩及解压,同时优化压缩中所涉及的信号处理和计算密集型功能,实现对其的加速处理。本设计的最终目标是证明在充分并行化的硬件体系结构 FPGA 上实现
    的头像 发表于 07-10 11:09 2619次阅读
    基于FPGA的压缩<b class='flag-5'>算法</b>加速<b class='flag-5'>实现</b>

    FPGA远程bit文件和调试ILA指南

    在 FPGA 开发过程中,bit文件和使用ILA进行调试是再常见不过的操作。但如果 FPGA 板卡被放在机房,或者通过PCIe插在服务器上,那么每次调试时我们都不得不带着笔记本电脑跑去机房或服务器旁,接上 JTAG 线后才能
    的头像 发表于 06-05 16:41 2816次阅读
    FPGA远程<b class='flag-5'>烧</b><b class='flag-5'>写</b>bit<b class='flag-5'>文件</b>和调试ILA指南

    使用libusb可以打开libusb设备,但是无法固件,为什么?

    我使用libusb可以打开libusb设备,但是无法固件,我需要在执行烧录固件之前,还需要做什么步骤
    发表于 05-23 07:34