找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5005|回复: 1
打印 上一主题 下一主题
收起左侧

在Realview MDK中添加自己的FLASH编程算法

[复制链接]
跳转到指定楼层
楼主
ID:60266 发表于 2014-8-18 02:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                        【其实我们可以参考 KEIL Realview MDK安装目录如K:\Keil_arm_for_tkstudio\ARM\Flash\AT91SAM7_128,这里面就有各种各样的FLASH的烧写算法程序,我们可以参考着写,这些目录里面有.c等源文件可供参考】
在RealviewMDK中,Flash烧写算法不是通用的,都是针对具体的Flash存储芯片的。由于市面上的Flash种类比较多,所以RealviewMDK不可能包含所有的Flash芯片烧写程序。但是在具体的应用中,开发者在RealviewMDK中可能会找不到自己所需要的Flash烧写程序,这时,用户就必须自己添加Flash烧写程序。本文将详细的探讨这种方法。RealviewMDK已经定义好了添加到其中的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 longadr);
extern int ProgramPage (unsigned long adr, unsigned long sz,unsigned char *buf);
extern unsigned long Verify (unsigned long adr, unsigned longsz, unsigned char *buf);
在RealviewMDK中,添加Flash烧写算法的实质就是填充上面的那个结构体以及实现那6个函数。至于几个函数是如何被RealviewMDK调用的,用户不必关心,这些是由Realview MDK自动管理的,只要正确的实现了上面的那些内容,开发者就可以将RealviewMDK编译链接后的程序下载到自己的Flash芯片中去。下面是添加一个Flash烧写的详细步骤:
1. 在C:\Keil\ARM\Flash下新建一个空的子文件夹;
2. 在Flash文件夹中选择一个已存在的,且和欲添加的Flash算法相近的内容(如..\ARM\Flash\LPC_IAP_256) 拷贝到这个新文件中,并将此算法作为新算法的模板;
3. 重命名工程文件LPC_IAP_256.UV2以表示新的FlashROM设备名,如29F400.UV2并用μVision IDE将其打开;
4. 在对话框Project - Options for Target - Output 中将所有的输出文件名(如LPC_IAP_256)替换为新的设备名;
5. 编辑FlashPrg.C文件并为EraseChip,EraseBlock及ProgramBlock定义函数代码。在函数Init和UnInit中编写算法所需的初始化以及卸载代码;
6. 在文件FlashDev.C中的struct FlashDevice结构体中定义设备参数;
7. 重新编译工程,将在C:\Keil\ARM\Flash文件夹下生成*.FLX格式的Flash编程算法。此文件即为所添加的Flash编程算法;
8. 使用Configure Flash Download中的Add按钮可将此编程算法文件添加到目标应用工程中。



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:44262 发表于 2014-8-21 22:43 来自手机 | 只看该作者
好资料,,值得收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表