mdk中添加flash算法

发布者:数字奇迹最新更新时间:2016-01-21 来源: eefocus关键字:mdk  flash算法 手机看文章 扫描二维码
随时随地手机看文章
在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. 在C:KeilARMFlash下新建一个空的子文件夹;

2. 在Flash文件夹中选择一个已存在的,且和欲添加的Flash算法相近的内容(如 ..ARMFlashLPC_IAP_256) 拷贝到这个新文件中,并将此算法作为新算法的模板;

3. 重命名工程文件LPC_IAP_256.UV2以表示新的Flash ROM设备名,如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:KeilARMFlash文件夹下生成*.FLX 格式的Flash编程算法。此文件即为所添加的Flash编程算法;

8. 使用Configure Flash Download 中的Add按钮可将此编程算法文件添加到目标应用工程中。

关键字:mdk  flash算法 引用地址:mdk中添加flash算法

上一篇:s3c2440存储控制器和地址以及启动的理解
下一篇:arm与flash连接错位的原因

推荐阅读最新更新时间:2024-03-16 14:45

STM32学习之路-MDK4.7(JLINk问题)+VIM
主机环境:win7 开发板:STM32F103VE 问题一:MDK4.7a对部分用户的JLINK(当然是山寨版的)存在问题.. 问题描述: 当setting的时候会出现问题,它会叫你升级你的JLINK,这对于我们用山寨版的JLINK用户来说是不可能的,一旦升级就玩完了 所以不能升级。不过有些用户就没有出现这样的问题,不知道是什么回事,连软件都会鄙视人,没法活了.. 解决方案: (1)购买正版的JLINK,然后升级(貌似是废话) (2)下载JLinkARM_V440(我以前的是V410版本的),将改安装目录下的JLinkARM.dll 文件 替换掉keil安装目录下的ARMSegger下的JLin
[单片机]
STM32学习之路-<font color='red'>MDK</font>4.7(JLINk问题)+VIM
STM32F446VE 在MDK下编译测试大小端模式
源程序如下: i = 0x12345678; printf( rni = 0x%X, ,i); printf( addri = 0x%X, ,&i); printf( rnaddru8i = 0x%X, ,(u8*)(&i)); printf( u8i = 0x%X, ,*((u8*)(&i))); printf( rnaddru8i+1 = 0x%X, ,(u8*)(&i)+1); printf( u8i+1 = 0x%X, ,*((u8*)(&i)+1)); printf( rnaddru8i+2 = 0x%X, ,(u8*)(&i)+2); printf( u8i+
[单片机]
STM32F446VE 在<font color='red'>MDK</font>下编译测试大小端模式
MDK-ARM输出HEX文件重命名设置
输出的可执行文件和库的名称就是在这里定义。比如我们常见输出Hex文件,其名称就是这里定义的。
[单片机]
<font color='red'>MDK</font>-ARM输出HEX文件重命名设置
MDK4.70A创建一个新工程
新建一个文件夹,新建一个工程保存到这个文件夹内。 我们不用自动生成头文件,自动添加头文件好了。 (原因是默认的头文件有个小问题,会提示错误,我们添加的版本是原子修改过的,可以直接使用的。见这个链接http://www.openedv.com/posts/list/3010.htm) copy头文件到工程所在的文件夹。 存放在USER下面 添加启动文件到GROUP。 将SYSTEM用到的文件,copy到system文件夹下: 新建三个组,将文件添加进来,分组。 添加用到的.h文件的路径,不然会提示找不到相应的文件。 注明用到的头文件名称 更改目标文件存放位置 就
[单片机]
关于STM32 MDK中USE_STDPERIPH_DRIVER问题的解释
初学STM32,在RealView MDK 环境中使用STM32固件库建立工程时,初学者可能会遇到编译不通过的问题。出现如下警告或错误提示: warning: #223-D: function assert_param declared implicitly;assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); 这时候我们需要在“Target Options” 中的“C/C++”选项卡中如图-2所示红框中添加USE_STDPERIPH_DRIVER、STM32F10X_HD。这样才能使编顺利通过。 图-2 知其然了,我们还得知其所以然。下面就听Herison给大家一一道来。我们知道,程序的执行是
[单片机]
关于STM32 <font color='red'>MDK</font>中USE_STDPERIPH_DRIVER问题的解释
MDK S3C2440启动代码简单分析
ARM启动代码相当于我们电脑的BIOS,也就是ARM启动时对处理器的一些初始化及嵌入式系统硬件的一些初始化。由于它直接面对处理器内核和硬件控制器进行编程,一般都是用汇编语言。 一般包括:中断向量表,初始化存储器系统,初始化堆栈,初始化有特殊要求的断口,设备初始化,变量初始化等。 ;/*****************************************************************************/ ;/*S3C2440A.S: Startup file for Samsung S3C440A */ ;/********************************
[单片机]
Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出
摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的。printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使之完成串口单字符发送工作即可。 注: 本文方法性内容主要来自《Keil MDK环境下使用printf函数的解决方法》与《STM32串口使用Printf()函数问题》。除使用c标准库外,还可以使用keil mdk提供的microLib,在STM32串口使用Printf()函数问题》一文有介绍,另外,该文同时也提到如果使用c标准库函数,则要避免链接使用半主机模式的函数,retarge.c文件中的#pragma import(__use
[单片机]
使用RealView MDK进行SW调试和实时跟踪
一、目标调试阶段的配置 1. 调试器的选择 选择μVision- Debug - Options for Target – Debug,并选择ULINK Cortex Debugger调试器。 screen.width-333)this.width=screen.width-333" border=0> 2. 调试目标初始化文件 按照路径KeilARMStartupST,将文件STM32DBG.ini拷贝到工程文件夹中。选择μVision- Debug - Options for Target – Debug,同时在Initi
[单片机]
使用RealView <font color='red'>MDK</font>进行SW调试和实时跟踪
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved