在Realview MDK中添加自己的FLASH编程算法
来源:互联网 发布:精通qt4编程 第2版 编辑:程序博客网 时间:2024/06/05 20:39
出自:Realview MDK 应用系列文章
在Realview MDK中, Flash烧写算法不是通用的,都是针对具体的Flash存储芯片的。由于市面上的Flash种类比较多, 所以Realview MDK不可能包含所有的Flash芯片烧写程序。 但是在具体的应用中,开发者在Realview MDK中可能会找不到自己所需要的Flash烧写程序,这时,用户就必须自己添加Flash烧写程序。本文将详细的探讨这种方法。Realview MDK已经定义好了添加到其中的Flash烧写算法的接口,包括1个描述Flash芯片的结构体和6个对Flash芯片操作的函数定义。详细的内容可以参考下面的代码。
struct FlashDevice
{
unsigned short Vers; // 体系结构及版本号;char DevName[128]; //设备的名称及描述;
unsigned short DevType; //设备的类型,例如: ONCHIP, EXT8BIT, EXT16BIT等等;
unsigned long DevAdr; //默认设备的起始地址;
unsigned long szDev; //设备的总容量;
unsigned long szPage; //页面的大小;
unsigned long Res; //保留,以便将来扩展之用;
unsigned char valEmpty; // Flash擦除后储存单元的值;
unsigned long toProg; //页写函数超时的时间;
unsigned long toErase; //扇区擦除函数超时的时间;
struct FlashSectors sectors[SECTOR_NUM]; //扇区的起始地址及容量设置数组。
};
extern int Init (unsigned long adr, unsigned long clk, unsigned long fnc);
extern int UnInit (unsigned long fnc);
extern int BlankCheck (unsigned long adr, unsigned long sz, unsigned char pat);
extern int EraseChip (void);
extern int EraseSector (unsigned long adr);
extern int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf);
extern unsigned long Verify (unsigned long adr, unsigned long sz, unsigned char
*buf);
在Realview MDK中,添加Flash烧写算法的实质就是填充上面的那个结构体以及实现那6个函数。 至于几个函数是如何被
Realview MDK调用的,用户不必关心,这些是由Realview MDK自动管理的,只要正确的实现了上面的那些内容,开发者就可以将Realview MDK编译链接后的程序下载到自己的Flash芯片中去。下面是添加一个Flash烧写的详细步骤:
1.在 D:\Keil\ARM\Flash下新建一个空的子文件夹;
2. 在 Flash 文件夹中选择一个已存在的,且和欲添加的 Flash算法相近的内容 (如
..\ARM\Flash\LPC_IAP_256)拷贝到这个新文件中,并将此算法作为新算法的模板;
3. 重命名工程文件LPC_IAP_256.UV2以表示新的FlashROM设备名,如29F400.UV2并用μVisionIDE将其打开;
4. 在对话框Project- OptionsforTarget-Output中将所有的输出文件名(如LPC_IAP_256)替换为新的设备名;
5. 编辑FlashPrg.C文件并为EraseChip,EraseBlock及ProgramBlock定义函数代码。 在函数Init和UnInit中编写算法所需的初始化以及卸载代码;
6. 在文件FlashDev.C中的structFlashDevice结构体中定义设备参数;
7. 重新编译工程,将在 C:\Keil\ARM\Flash文件夹下生成*.FLX格式的 Flash编程算法。此文件即为所添加的Flash编程算法;
8. 使用ConfigureFlashDownload中的Add按钮可将此编程算法文件添加到目标应用工程中。
2. 在 Flash 文件夹中选择一个已存在的,且和欲添加的 Flash算法相近的内容 (如
..\ARM\Flash\LPC_IAP_256)拷贝到这个新文件中,并将此算法作为新算法的模板;
3. 重命名工程文件LPC_IAP_256.UV2以表示新的FlashROM设备名,如29F400.UV2并用μVisionIDE将其打开;
4. 在对话框Project- OptionsforTarget-Output中将所有的输出文件名(如LPC_IAP_256)替换为新的设备名;
5. 编辑FlashPrg.C文件并为EraseChip,EraseBlock及ProgramBlock定义函数代码。 在函数Init和UnInit中编写算法所需的初始化以及卸载代码;
6. 在文件FlashDev.C中的structFlashDevice结构体中定义设备参数;
7. 重新编译工程,将在 C:\Keil\ARM\Flash文件夹下生成*.FLX格式的 Flash编程算法。此文件即为所添加的Flash编程算法;
8. 使用ConfigureFlashDownload中的Add按钮可将此编程算法文件添加到目标应用工程中。
- 在Realview MDK中添加自己的FLASH编程算法
- 在Realview MDK 中如何生成*.bin 格式的文件
- STM32在RealView MDK中如何生成.bin格式的文件
- MDK工具包中自带的FLASH编程算法的问题
- Realview MDK 中不用手动开中断的原因
- RealView MDK中(volatitle unsigned *)(0x40005c00)的理解
- Realview MDK 中调试脚本的详细解析
- MDK RealView中设定数组与变量的绝对地址
- MDK RealView中设定数组与变量的绝对地址
- RealView MDK的指定位置
- uVision, MDK, realview的关系
- realview MDK C/C++ 混合编程问题
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- Realview MDK中链接脚本详细解析
- stm32开发笔记一:使用固件库在RealView-MDK中新建工程(上)
- std::sort使用自定义比较函数
- Servlet进阶API--ServletConfig
- 树和二叉树的应用
- [挖坑]未解决的题
- (大数据相关)2016-01-08北京海淀远大路
- 在Realview MDK中添加自己的FLASH编程算法
- Perl 面向对象的真正意思
- Google Analytics自定义异常格式
- unregisterReceiver报错处理 android
- 我在Ubuntu上安装Android Studio的全过程
- Spring拦截器
- lwip中Nagle 算法实现
- C++编程练习
- python项目之 路由器抓取器