Keil的FLM文件解析

软件开发大郭
0 评论
/
53 阅读
/
2174 字
10 2022-05

最近由于Flash芯片升级,从16MB换成32MB的,但是厂商只有16MB的FLM下载算法文件
所以要自己做一个32MB的FLM,需要研究下FLM到底是个啥。

FLM文件具体位置:C:\Keil_v5\ARM\Flash\xxx.FLM

具体路径根据你自己的实际安装路径来,
其中XXX.FLM是就是MCU厂商给的Flash下载算法文件。

  1. *.FLM的本质其实就是*.axf,它也是一段可执行代码。

在keil中,编译完成之后有一个 .axf 文件,这个文件也是elf格式;

FLM格式文件是KEIL里的FLASH下载算法文件,他其实就是.axf文件的拷贝,换了个后缀名称而已。

ELF格式:详细的可以看这个文档 http://flint.cs.yale.edu/cs422/doc/ELF_Format.pdf

  1. 它是ARM工具链的一部分,

    /***********************************************************************/
    /*  This file is part of the ARM Toolchain package                     */
    /*  Copyright (c) 2010 Keil - An ARM Company. All rights reserved.     */
    /***********************************************************************/
  2. 它包括了Flash(无论是MCU内部的Flash还是外部的Flash)的一些基础操作和描述结构

例如:读、写、保护、擦除之类的,这些指令都可以在一般的Flash datasheet里面看到

  1. 它有一套标准的操作结构,以方便对接keil的API

    // Flash Programming Functions (Called by FlashOS)
    extern          int  Init        (unsigned long adr,   // Initialize Flash
                                   unsigned long clk,
                                   unsigned long fnc);
    extern          int  UnInit      (unsigned long fnc);  // De-initialize Flash
    extern          int  BlankCheck  (unsigned long adr,   // Blank Check
                                   unsigned long sz,
                                   unsigned char pat);
    extern          int  EraseChip   (void);               // Erase complete Device
    extern          int  EraseSector (unsigned long adr);  // Erase Sector Function
    extern          int  ProgramPage (unsigned long adr,   // Program Page Function
                                   unsigned long sz,
                                   unsigned char *buf);
    extern unsigned long Verify      (unsigned long adr,   // Verify Function
                                   unsigned long sz,
                                   unsigned char *buf);
  2. 剩下的就是一些Flash的底层驱动实现。
  3. 对于一些MCU厂商可能会加入一些加密动作。
    暂无数据