发布论文
|
上传资料
|
发布供求
|
发布求职
|
发布项目
|
加入收藏
|
RSS
首页
文章中心
下载中心
电 路 图
进修论坛
电子交友
发布信息
本站商城
精要网址
PDF资料
登陆
|
注册
|
修改资料
|
短信息
|
设置空间
|
管理信息
|
收藏夹
|
我的状态
|
消费记录
|
充值卡充值
|
我的购物车
|
我的订单
|
退出
|
行业资讯
|
电子基础
|
电子应用
|
EDA 设计
|
单 片 机
|
嵌 入 式
|
PCB 设计
|
智能机器
|
|
常用软件
|
视频教程
|
工具软件
|
单 片 机
|
电源相关
|
汽车电子
|
电子制作
|
嵌 入 式
|
EDA设计
|
电子书籍
|
教程课件
|
综合下载
|
|
基础电路图
|
应用电路图
|
产品电路图
|
电源电路图
|
传感器电路图
|
单片机电路图
|
|
|
|
供应信息
|
求购信息
|
项目研发
|
招聘求职
|
|
|
|
您当前的位置:
首页
>
文章中心
>
嵌 入 式
>
ARM 技术
基于一种片外Flash存储器的IAP方案设计
时间:2008-09-16 17:27:01 来源: 作者: 点击:10
Samsung公司的S3C4510B、Philips公司的LPC20XX、LPC21XX、LPC22XX系列等都是ARM7处理器。这些为数繁多的ARM7处理器,因其片内外设不同而各擅所长,但都应用同样的ARM7TDMI核(或ARM7TDMI-S核,这是ARM7TDMI的综合版本,这两种核对处理器应用人员来说没有区别)。可以说,ARM7TDM I是目前使用最为广泛的32位嵌入式RISC处理器。
ARM7TDMI核应用冯 ·诺依曼结构,处理器使用的存储器中数据和程序指令不予区分,PC寄存器指向的存储器单元,无论是ROM区还是RAM区,只要符合ARM指令的格式都可以执行,这就为系统自修改提供了可能。在应用编程IAP(In Application Program)就是这样的自修改程序。它先在RAM存储器中写入数据值,然后使PC指向该存储段,把该段作为程序段来执行。很多ARM7芯片自带IAP处理器,应用其自带的IAP处理器可以方便地对其片内集成的FLASH存储器进行在应用编程,但几乎所有的ARM核芯片均不支持片外IAP处理,因为片外Flash存储器是用户选型的,芯片生产厂家无法先知先觉,而不同Flash存储器其编程时序也不尽相同,导致芯片生产厂家无法提供通用的IAP代码。那么,如何对嵌入式系统的片外Flash存储器进行在应用编程呢?这里分两种情况:一是普通代码存放在片外单独1片Flash中,IAP代码在另一片Flash中完成,此时只要依据Flash的操作时序执行IAP代码,完成擦除或写入操作即可。这种情况虽然简单,但应用了2片Flash;而IAP代码很小,一般完全可以集成到1片中,所以这里对这种情况不予考虑,另一种情况是1片Flash中既要存储普通代码,又要实现IAP。下面以Philips公司的LPC2210和Silicon Storage Technology公司的SST39VF160为例,详细讨论这种情况IAP的解决方案。
1 硬件结构
1.1 LPC2210介绍
Philips公司的LPC2210是一款基于支持实时仿真和嵌入式跟踪的16/32位ARM7TDMI-S CPU的微控制器。芯片采用144脚封装,有16KB片内静态RAM,开放外部总线;通过外部存储器接口可将外部存储器配置成4组,每组的容量高达16Mb,数据宽度8/16/32位均可;具有多个32位定时器、8路10位PWM输出、多个串行接口(包括2个16C550工业标准UART、高速I2C接口和2个SPI接口)以及9个外部中断、多达76个可承受5V电压的通用I/O口,同时内嵌实时时钟和看门狗,片内外设功能丰富强大;片内晶振频率范围1-30MHz,通过片内PLL可实现最大为60MHz的CPU工作频率,具有2种低功耗模式--空闲和掉电,通过外部中断将处理器从掉电模式中唤醒,并可通过个别使能/禁止外部功能来优化功耗。以上特性,使其特别适用于工业控制、医疗系统、访问控制和POS机,同时也非常适合于通信网关协议转换器、嵌入式软Modem,以及其他各种类型的应用。
1.2 SST39VF160介绍
Silicon Storage Technology公司的SST39VF160是一个1M×16b的COMS多功能FLASH器件,单电压的读和写操作,电压范围3.0-3.6V,提供48脚TSOP和48脚TFBGA两种封装形式。
该器件主要操作包括读、写编程、扇区/块擦除和芯片擦除操作。擦除和字编程必须遵循一定的时序,表1列出了扇区擦除和字编程过程及时序。擦除或编程操作过程中读取触发位DQ6将得到"1"和"0"的循环跳变;而操作结束后读DQ6,得到的是不变的固定值。这是器件提供的写操作状态检测软件方法。
1.3 硬件连接
SST39VF160作为系统的程序存储器,以LPC2210的CS0作为Flash的片选信号,处理器配置Boot引脚为16位数据总线宽度后,上电可直接执行SST39VF160中代码。此Flash芯片为16位数据宽度,无字节控制总线,所以应用中不使用LPC2210的BLS引脚。系统结构示意图如图1所示。
点击看原图
2.软件实现
2.1 IAP实现要点分析
在嵌入式应用系统中,通常要求记录一些现场的传感、交互输入数据,通常把数据记录在Flash存储器中,以 便下次上电能获得以前的数据。如果系统程序和数据分开存储。那么只要对存放数据的Flash器件进行编程即可。然而大多数嵌入式系统,程序和需保存的数据都共存于同一Flash存储器中,那么是否也如前所述,可对Flash存储器直接编程呢?理论和实践都表明不可以。
先从理论上计算:LPC2210允许的芯片核工作频率(CCLK)范围是10-60MHz,存储器读访问长度由存储器组配置寄存器BCFG中读访问的长度域控制WST1控制,其最大可用长度为35个CCLK,而SST39VF160的扇区擦除典型时间为18ms。下面是计算算式:
TRDmax=RDLenmax/CCLKmin=35/10×10-6=3.5μs
Tp=18ms>>3.5μs 其中:TRDmax--最大读访问的时间;
RDLenmax--最大读访问可用长度;
CCLKmin--最小核工作时钟频率;
Tp--扇区擦除典型时间。
算式得出扇区擦除典型时间远大于最大读访问时间。这样一来,如果再给某FLASH写数据,同时于其中预取指,那么因Flash执行命令期间,对其他操作不响应,预取出的必定是其数据引脚上的不确定数据,预取指失败。实践也表现,如果在程序执行过程中,对同一Flash进行扇区擦除,必定引起预取指中断。
为了解决在同一Flash芯片存放程序并IAP这一问题,引进代码重映射的思想。所谓重映射就是代码先自复制到制定存储区,然后跳转到制定区的起点开始执行。这里,IAP程序先自复制到LPC2210片内SRAM中,然后跳转到SRAM执行IAP代码。前面过说,ARM7为冯·诺依曼结构,这就为IAP程序重映射提供了可能。
编写可重映射代码的关键是要解决程序中相对偏移的问题,ARM7指令系列中涉及相对偏移的指令主要有LDR/STR以跳转指令。这里的解决方案是:凡涉及偏移值的指令通通采用基址变址寻址方式,以PC寄存器作基址寄存器,以立即数为变址,这样当程序块整块移动时,要加载的数据或跳转的地址与当前PC值的偏 移值固定,解决了相对偏移问题。
1
/
2
1
2
››
›|
下一篇链接:
使用5410对Am29LV200BFlash存储器程序分页烧写与多页并行自举方法
上一篇链接:
ARM的LPC2142数据采集卡设计
来顶一下
返回首页
发表评论
共有
条评论
用户名:
密码:
验证码:
匿名发表
推荐资讯
音乐程序的设计原理之
FPGA的可编程全数字锁
什么是模拟电路?
挪威发明蛇形消防机器
相关文章
高速输入/输出串行接口增强型SPI的大容量Flash扩展的实
PNX1501芯片的NandFlash在线烧录系统介绍
在嵌入式系统应用中存储器类型的选择技巧
NORFLASH存储器的嵌入式文件系统的设计
关于FPGA助力高端存储器接口设计的介绍
关于存储器类型的选择与技巧
GEL语言与C语言的Flash编程新方法介绍
关于AVRFlash微控制器的电动车窗防夹系统介绍
DSPTMS320C64x系列的16-bitFlash加载的可行性设计分析
单片机的IAP技术LED显示屏控制系统02
栏目更新
栏目热门
站内搜索:
论文文章
电子电路
分类信息
下载资源
高级搜索
网站首页
|
关于我们
|
广告服务
|
联系我们
|
网站地图
|
免责声明
|
返回顶部
Copyright © 2005-2008 StudyDz.com, All rights reserved.mail:studydz@163.com
Powered by
电子进修网
, Template designed by
StudyDz.com
.
粤ICP备08023915号