Flash在线烧写实验教程

发布者:玉树琼花最新更新时间:2015-02-02 来源: laogu关键字:Flash  在线烧写  实验教程 手机看文章 扫描二维码
随时随地手机看文章
实验原理
1. 外部扩展程序存储器
由于C54x内部没有Flash或EEPROM,掉电后程序不能保存下来,脱机使用时需要外接的Boot ROM在上电时将程序加载到内部RAM中运行,因此必须为C54x DSP扩展一个非易失程序存储器,用以存放待执行的指令和执行中所用的系数(常数)。
C54xx有1~8M字的程序地址空间,其中程序地址空间的每16位地址空间的高32k(xx8000H-xxFFFFH)可以映射到外部存贮器。YK5000实验仪的CPU板上集成了一片256k×16bit的Flash。由于外部地址空间有限,在YK5000实验仪的设计中,外部程序存储器的所有页占用的是同一地址空间0x8000~0xFFFF,可寻址范围为32k。当外部存储器容量大于32k时,就将存储器空间以32k为单位分为多个存储页。例如, 256k的Flash以32k为一页,共被分为256/32=8页。
由于外部程序存储器的存储页一般不同时使用,因此可由CPLD来控制切换。控制页面切换的寄存器被映射到IO地址0x8000,上电时默认为0,此时Flash的第0页有效,Flash的其他页无法访问,如需要访问这些空间,在程序中写0x1~0x7到IO端口0x8000就可以把地址空间0x8000~0xFFFF由Flash Page0映射到其他的存储页。
表2.2  YK5000外部存储器映射
页面寄存器   (IO端口地址0x8000) 外部存储器(占用地址空间0x8000~0xFFFF)        说明
0x 0      Flash Page0      Flash程序存储器的第0页
0x 1      Flash Page 1      Flash程序存储器的第1页
0x 2      Flash Page 2      Flash程序存储器的第2页
0x 3      Flash Page 3      Flash程序存储器的第3页
0x 4      Flash Page 4      Flash程序存储器的第4页
0x 5      Flash Page 5      Flash程序存储器的第5页
0x 6      Flash Page 6      Flash程序存储器的第6页
0x 7      Flash Page 7      Flash程序存储器的第7页
上电时页面寄存器的值可以由板上的拨动开关SWX2的状态设定,用来选择上电时默认加载Flash中哪一个32k的存贮页中的程序。

2.Flash芯片—SST39VF400A介绍
Flash是一种体积小,容量大的非易失性存贮器,可以反复烧写十万次。但其写操作比较麻烦:一是先要擦除,后写数据;二是写擦除/写操作之前需要加上一定前导指令码。
YK5000实验仪板载Flash芯片型号为SST39VF400A,此芯片是Silicon Storage Technology生产的4M位(256k×16)FLASH存储器。以下是SST39LF400A写操作指令码:
表9.1 SST39LF400A指令序列
指令序列   1   2   3   4   5   6
                  Addr   D   Addr   D   Addr   D   Addr   D   Addr   D   Addr   D
写数据    5555   AA   2AAA   55   5555   A0   WA   Data
擦除扇区 5555   AA   2AAA   55   5555   80   5555   AA   2AAA   55   SAX   30
擦除区块 5555   AA   2AAA   55   5555   80   5555   AA   2AAA   55   BAX   50
擦除整片 5555   AA   2AAA   55   5555   80   5555   AA   2AAA   55   5555   10
WA表示写数据地址,SAX表示扇区地址,扇区大小是2k Word;BAX表示区块地址,区块大小是32k Word。
需要特别注意的是,Flash指令序列中的Addr格式是A14~A0,默认其高位地址线为0。在YK5000实验仪中,Flash被映射到DSP的高32k地址(0x8000~0xFFFF),因此,在DSP中访问Flash空间的时候,写地址Addr都需要加上基地址0x8000。
详细内容,请阅读SST39LF400A的数据手册。

实验内容
本小节的实验内容是在CCS里编写一个擦除、烧写YK5000实验仪上Flash芯片的程序。
要求:
1. 擦除Flash的存储区;
2. 将Flash切换到第0页;
3. 将数据0x0000~0x8000烧写到第0页存储区内。
在CCS的仿真、调试环境下,读者可以实时的观察到Flash中存储区变化情况,掌握Flash读写操作的知识。

(1)整块Flash的擦除
只要在相应地址写入表9.1所示的指令序列,就能对SST39LF400A进行各种擦除操作,下面是擦除整片Flash所用的函数形式:

//定义指向地址0x8000的IO端口变量,用来控制Flash页面切换
ioport unsigned port8000h;
//擦除整块Flash
void EraseChip()
{
unsigned int i;

*(volatile unsigned int *)(0x8000+0x5555) = 0xAA;
delay(10);
*(volatile unsigned int *)(0x8000+0x2AAA) = 0x55;
delay(10);
*(volatile unsigned int *)(0x8000+0x5555)= 0x80;
delay(10);
*(volatile unsigned int *)(0x8000+0x5555)= 0xAA;
delay(10);
*(volatile unsigned int *)(0x8000+0x2AAA)= 0x55;
delay(10);
*(volatile unsigned int *)(0x8000+0x5555)= 0x10;
delay(10);

//验证
for( i=0x0; i<07FFF; i++ ) //在此仅验证页0擦除操作是否正确完成
while( *(volatile unsigned int *)(0x8000+i) != 0xffff );
}

(2)为Flash写入特定的数据
为了方便观察起见,将数据0x0000~0x8000烧写到Flash的第0页存储区内。函数形式如下:

//向Flash中写数据,依次为0x0000--0xFFFF
void WriteChip()
{
unsigned int i;

for( i=0; i<=0x7FFF; i++ )
{
    *(volatile unsigned int *)(0x8000+0x5555) = 0xAA;
delay(PERIOD);
*(volatile unsigned int *)(0x8000+0x2AAA) = 0x55;
delay(PERIOD);
*(volatile unsigned int *)(0x8000+0x5555)= 0xA0;
delay(PERIOD);

    *(volatile unsigned int *)(0x8000+i) = i;
delay(PERIOD);

//在此仅验证当前字写入操作是否正确完成
while( *(volatile unsigned int *)(0x8000+i) != i );

关键字:Flash  在线烧写  实验教程 引用地址:Flash在线烧写实验教程

上一篇:单片机系统中红外通信接口的设计
下一篇:MCU应用系统调试方法

推荐阅读最新更新时间:2024-03-16 13:52

STM32 IAP(对flash进行读写)
/************************************************************ **实验名称: **功能: **注意事项: **作者: *************************************************************/ #include STM32Lib\\\\\\\\\\\\\\\\stm32f10x.h #include hal.h #define FLASH_ADR 0x08008000 //要写入数据的地址 #define FLASH_DATA 0x5a5a5a5a //要写入的数据 int main(void) { u32 tmp;
[单片机]
J-Flash ARM的配置
一般说来file-- open project里面会找到一些*.jflash的配置文件,加载他们就行了,但是没找到适合S3C2440的。所以自己建了一个MINI2440.jflash,手动进行配置: j-link设置 1. 打开J-Flash ARM,并进入菜单:Options-- Project settings 2.主要设置CPU选项和Flash选项 CPU : Core -- ARM9, Little endian Use target RAM(faster)-- Addr:40000000 4KB(不选很慢;从Nor flash启动时内部Boot SRAM的地址和大小,参考S3C2440A的芯片手册) 初始化序列(Init
[单片机]
Atmel推出SAM3N系列微控制器,扩展Cortex-M3 Flash阵容
微控制器 及触摸解决方案的领导厂商爱特梅尔公司(Atmel Corporation)在德国慕尼黑Electronica 2010展会上宣布推出全新SAM3N系列微控制器,扩展其ARM Cortex-M3 Flash系列。新推出的SAM3N系列是瞄准消费、工业控制、计量、玩具、医疗、测试和测量、802.15.4无线网络,以及PC、手机与游戏外设等应用的通用型微控制器,具有高性能、低功耗、可扩展 存储器 、低引脚数目、封装可选及支持电容式触摸优势。SAM3N系列产品拥有开发工具、软件,系统内编程功能,以及来自ARM第三方生态系统网络的支持,兼具高性能和使用简便的优势。 爱特梅尔SAM3N和SAM3S系列是首款可提供按键、
[工业控制]
TMS320C6000系列DSP的Flash启动设计
引 言 随着近年来数字信号处理器(DSP)技术的迅猛发展,其越来越广泛地应用于国民经济的各个领域中。其中,TI公司推出的TMS320C6000系列DSP器件更是在许多需要进行大量数字信号处理运算并兼顾高实时性要求的场合得以应用。TMS320C6000系列DSP的系统设计过程中,DSP器件的启动加载设计是较难解决的问题之一。 C6000系列DSP的启动加载方式包括不加载、主机加载和EMIF加载3种。 3种加载方式的比较:不加载方式仅限于存储器0地址不是必须映射到RAM空间的器件,否则在RAM空间初始化之前CPU会读取无效的代码而导致错误;主机加载方式则要求必须有一外部主机控制DSP的初始化,这将增加系统的成本和复杂度,在很多实
[嵌入式]
STM32CubeMX | 28 - STM32片内Flash的使用
本篇文章主要介绍如何使用STM32中的片内FLash。 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi): 软件准备 需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码; 2.生成MDK工程 如果使用的是STM32F1系列,请先看这篇文章!!!( STM32CubeMX生成F1的工程中造成 下载器无法下载 问题的解决方案 ) 选择芯片型号 打开STM32CubeMX,打开MCU选择器: 搜索并选中芯片STM32L431RCT6: 配置时钟源 如果选择使用外部高速时钟(HSE),则需要在System Core中配置
[单片机]
STM32CubeMX | 28 - STM32片内<font color='red'>Flash</font>的使用
预测:供需失衡,DRAM与NAND Flash第四季至明年价格双双走跌
        根据集邦咨询半导体研究中心最新调查,虽然下半年是产业旺季,但市场持续供过于求,DRAM第三季合约价格季涨幅缩小到仅1~2%,第四季可能反转下跌5%,也不排除跌幅持续扩大的可能性,终结价格连九季上涨的超级周期(super cycle)。而NAND Flash均价在第三季下跌约10%之后,第四季因受中美贸易摩擦波及,预估跌幅将大于第三季,扩大至约10~15%,渠道市场主流3D TLC颗粒合约价跌幅甚至将超过15%。         服务器内存价格走弱拖累,2019年DRAM年均价恐下滑15~20%         DRAMeXchange指出,下半年削弱DRAM需求的主要原因,包括智能手机硬件规格已难以吸引换机
[手机便携]
提高 MSP430G 系列单片机的 Flash 擦写寿命的方法
摘要 在嵌入式设计中,许多应用设计都需要使用EEPROM 存储非易失性数据,由于成本原因,某些单片机在芯片内部并没有集成EEPROM。MSP430G 系列处理器是TI 推出的低成本16 位处理器,在MSP430G 系列单片机中并不具备EEPROM。为了存储非易失性数据,MSP430G 系列处理器在芯片内部划分出了256 字节的Flash 空间作为信息Flash,可用于存储非易失性数据,但是由于Flash 与EEPROM 在擦写寿命上存在一定差距,所以在实际应用中,这种应用方式并不能够满足所有客户的需求。本应用笔记介绍了使用代码区域Flash 来模拟EEPROM,通过一定的软件处理算法,可以大大增加数据存储周期的一种方法。本文给
[单片机]
提高 MSP430G 系列单片机的 <font color='red'>Flash</font> 擦写寿命的方法
SPI串行Flash在数据
    摘要: 介绍单片机的低功耗设计技术特点及单片机应用系统中的低功耗设计要注意的几个问题,并列举了充分利用片内资源实现低功耗及C语言源程序。     关键词: 单片机 低功耗 设计 随着集成电路技术和工艺的飞速发展,真正单片化的单片机已经成为主流产品。它的绝在部分资源都在单片机芯片内部;过去需要用外部扩展器件才能实现的功能,如ROM、RAM、A/D、D/A、数字量I/O、显示驱动等功能,现在在单片机内部就可以完成。单片机真正单片化,省去了大量的硬件开发调试工作,大大地提高了工作效率;系统先天的可靠性、抗干扰能力得到了显著的改善。经实验测试,实现同样功能的系统,采用单片方式比总线扩展方式具有更多的优点。系统
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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