一直好奇Keil里面MCU的Flash编程算法*.FLM到底是个啥。
个人能力有限,如果有理解错误的地方,还请不吝指正,谢谢!
1.*.FLM的本质其实就是*.axf,它也是一段可执行代码。
2.它是ARM工具链的一部分,
/***********************************************************************/
/* This file is part of the ARM Toolchain package */
/* Copyright (c) 2010 Keil - An ARM Company. All rights reserved. */
/***********************************************************************/
3.它包括了Flash(无论是MCU内部的Flash还是外部的Flash)的一些基础操作和描述结构
例如:读、写、保护、擦除之类的,这些指令都可以在一般的Flash datasheet里面看到
4.它有一套标准的操作结构,以方便对接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);
5.剩下的就是一些Flash的底层驱动实现。
6.对于一些MCU厂商可能会加入一些加密动作。
版权声明:本文为CSDN博主「jiangfutao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangfutao/article/details/121923850
一直好奇Keil里面MCU的Flash编程算法*.FLM到底是个啥。
个人能力有限,如果有理解错误的地方,还请不吝指正,谢谢!
1.*.FLM的本质其实就是*.axf,它也是一段可执行代码。
2.它是ARM工具链的一部分,
/***********************************************************************/
/* This file is part of the ARM Toolchain package */
/* Copyright (c) 2010 Keil - An ARM Company. All rights reserved. */
/***********************************************************************/
3.它包括了Flash(无论是MCU内部的Flash还是外部的Flash)的一些基础操作和描述结构
例如:读、写、保护、擦除之类的,这些指令都可以在一般的Flash datasheet里面看到
4.它有一套标准的操作结构,以方便对接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);
5.剩下的就是一些Flash的底层驱动实现。
6.对于一些MCU厂商可能会加入一些加密动作。
版权声明:本文为CSDN博主「jiangfutao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangfutao/article/details/121923850
暂无评论