在8051单片机应用系统中使用DiskOnChip

发布者:清新生活最新更新时间:2013-09-11 来源: dzsc关键字:8051单片机  应用系统  DiskOnChip 手机看文章 扫描二维码
随时随地手机看文章

前言
  随着各种8051兼容单片机的功能和性能越来越强,其应用系统的智能化程度和复杂度也在不断提高。在某些场合下对数据非易失存储的容量要求已远远超过了64KB。为此,通常的解决方法是采用NOR型Flash存储器,并采用分段式存储器访问技术以扩展8051的寻址空间。这种方法增加了软硬件设计的复杂性且可靠性较低,成本也较高。而DiskOnChip(简称DOC)是一种基于NAND型Flash存储器的大容量固态存储系列产品,在单一封装内集成了大容量NAND Flash Memory和对Flash进行操作的微控制器NFDC(Nand Flash Disk Controller),其存储容量从8MB直到1GB。各种容量均采用统一的DIP32封装,并且管脚排列完全兼容,具有一致的外部硬件接口。如果能够将其直接应用于8051单片机系统,则不仅扩展了DiskOnChip的应用范围,而且对于这类系统来说将是一种非常理想的大容量、非易失数据存储解决方案。为此本文探讨了在8051单片机应用系统中使用DiskOnChip的可行性及软、硬件实现方案。

硬件连接
  由于DOC的外部硬件接口非常简单,以DOC 2000为例,它类似于一个标准的SRAM,在系统中只占用8KB的地址空间,未超过8051单片机64KB的寻址范围。因此,8051单片机可以很方便地与各种容量的DOC 2000直接连接,而无需扩展其寻址范围。

  在实际系统中,所选用的8051单片机的型号和生产厂商不限,但必须具有外部数据总线、地址总线及读、写信号线,以便与DOC 2000连接。图1是Atmel公司的8051兼容单片机AT89C55与一片DOC 2000连接实例的示意图,其中DOC 2000在AT89C55的数据存储空间中占用8000H~9FFFH的地址范围。

软件移植
  这是本文讨论的重点。M-Systems公司将DOC内部Flash存储介质以“分区”的形式加以组织。有两种类型的分区:二进制分区和文件分区。二进制分区又称为BDK(Boot Developers Kit)分区,可用于存储嵌入式操作系统的二进制映像(Image)和其他二进制数据,但不支持坏块管理和损耗平衡(Wear-Leveling)技术。应用程序不能以文件形式访问BDK分区中的数据,只能通过M-Systems公司提供的BDK API读/写BDK分区。BDK API以C语言源代码形式提供,可由嵌入式系统的引导程序使用;文件分区又称为TrueFFS(True Flash File System)分区,它使应用程序可以通过操作系统的文件系统象访问磁盘文件一样来读/写DOC,并采用坏块管理、损耗平衡等手段,实现了更高的存储可靠性和更长的Flash寿命。TrueFFS是纯软件技术,通过驱动程序实现。M-Systems公司为Windows、WinCE、Linux、VxWorks等常见操作系统都提供了TrueFFS驱动程序,并以C语言源代码形式提供了TrueFFS SDK,供开发者将TrueFFS移植到新的操作系统下或无操作系统的环境。

  8051单片机对DOC中数据的存储和访问类似地也有两种情形,一种是以二进制形式,另一种是以文件形式。M-Systems公司提供的TrueFFS SDK实现了一个简化的文件系统FAT-Lite,可移植到无操作系统的环境。但8051单片机的程序存储器和数据存储器最大都只有64KB,而TrueFFS SDK比较复杂,不易移植到8051上。因此对于8051系统来说,比较适合直接以二进制形式来访问DOC 2000。为了在8051单片机上编程实现对DOC 2000的访问,必须了解DOC 2000的软件接口的技术细节。如前文所述,DOC 2000在系统中占用8KB的地址空间,微处理器通过这8KB的窗口访问DOC内部的控制寄存器并进行数据的传输,但M-Systems公司未公开寄存器的定义和操作流程的技术细节,所以只能从M-Systems公司提供给应用开发者的BDK API源代码入手进行移植。由于BDK API的较新版本采用了比较复杂的软件架构,致使移植到8051难度较大,因此本文采用较早期的版本BDK 1.25,这个版本虽然只能支持128MB以下的DOC 2000和DOC Millennium(8MB),但已可满足绝大多数情况下8051应用系统对非易失存储器的容量要求。

  BDK 1.25向开发者提供了读/写BDK分区的一系列API函数,其源代码采用ANSI C编写,并采用条件编译以适应各种硬件平台和操作系统,具有很好的可移植性。本文参考这些源代码自行设计了一个适用于8051单片机的API函数库,采用Keil C51编写,提供了对DOC 2000或DOC Millennium的基本存储单元(块、页)进行读、写、擦除操作的功能,实现了8051单片机以二进制形式读写DOC 2000或DOC Millennium。

  由于篇幅所限,本文不详述具体的移植过程,在此只说明移植时主要考虑的几个问题:

  * BDK API的源代码缺省适用于X86处理器和DOS环境。为此需修改有关的条件编译选项以使之适用于8051系统;

  * 对源代码进行最大程度的简化和定制。为此修改了某些数据类型以减小RAM占用量,简化了某些数据结构,重写了部分代码,并去掉不必要的条件编译和多余的代码;[page]

  * 针对8051系统使用DOC的特点增加了若干条件编译选项,以方便开发者根据不同的应用需求对本API库源代码进行“量身定制”,实现最小的代码尺寸和最高的性能。例如可配置为自动识别DOC 2000的容量等参数,以便在不修改软件的情况下可直接更换不同容量的DOC 2000,也可配置成只适用于特定容量的DOC 2000以获得较小的代码尺寸。

  这一API库向应用开发者提供如下4个API函数:
* DOC_Init —— 对DOC及有关的数据结构进行初始化,需最先调用;
* DOC_ReadOnePage —— 读DOC的一页;
* DOC_WriteOnePage —— 写DOC的一页,写之前必须先擦除该页所在的块;
* DOC_Erase —— 擦除DOC的一块或多块。

  这些API函数在读写DOC时支持EDC/ECC和写校验等特性(可通过条件编译选项使能或禁止这些特性),从而可保证数据存储具有很高的可靠性。此外本函数库也包含了读写每页的16个“extra”字节的代码,若需要可以调用。由于这些API函数直接读写DOC的块和页,因此DOC在被连接到8051系统中之前无需用DFORMAT等工具进行格式化,如果是已格式化的DOC,则在使用本API库对其访问后原有的分区结构将被破坏。在实际应用中,开发者还可以根据实际需求为DOC定义特定的分区格式及文件系统,在这4个API函数的基础上实现对DOC更灵活的访问形式,例如以文件形式读写DOC中的数据。

  本API库不支持M-Systems公司的坏块管理、损耗平衡等技术,有兴趣的读者可参考TrueFFS SDK源代码在本API库的基础上实现类似的机制。

  如前文所述,一片8051单片机可连接多片DOC,在这种情形下,每次访问不同的DOC之前都需要针对该DOC重新调用一次API函数DOC_Init(参数为该DOC的窗口地址)。

  本API库可用Keil C51 6.0以上版本编译,适用于Keil C51所支持的各种8051兼容单片机。实际上,只要对源代码稍作修改甚至不需修改就可以将本API库移植到除8051之外的其他提供C语言编译器的单片机上(当然该单片机在硬件上必须符合与DOC连接的条件才能真正访问DOC)。

软件实测性能
  本设计从代码尺寸、RAM需求、对DOC的访问速度三方面对本API库的性能进行了实测。测试环境为:单片机选用AT89C55,晶振频率为22.1184MHz,DOC选用DOC 2000 16MB(型号为MD2200-D16)。

  代码尺寸:本API库源代码约一千余行,当使用 Keil C51 6.20c编译并采用缺省代码优化级别时,在不同的条件编译选项下,编译后的库目标代码尺寸最小约为3.3KB,最大约为11.7KB。

  RAM需求:DOC 2000本身占用8KB的数据存储空间,本API占用约400B的RAM。此外由于DOC的最小擦除单元为8KB,因此在实际应用中如果需要随机写DOC,还需要至少8KB的外部RAM用于数据缓存。

  根据M-Systems公司提供的规格,对DOC 2000的持续读、写速度分别可达1.4MB/s和500KB/s,但当DOC 2000应用于8051系统时,由于8051本身速度慢所造成的瓶颈,使对DOC 2000的实际访问速度有所降低,实测速度为:读一页约需8ms、写一页约需9ms、擦除一块约需4ms。当本API库采用不同的条件编译选项时,对DOC的访问速度略有差异。另外,对不同型号的DOC的访问速度也略有差异。通过提高8051的晶振频率或采用增强型的高速8051(如DS80C320)可在一定程度上提高对DOC的访问速度。

结语
  在以8051为代表的8位单片机应用系统中使用M-Systems公司的DiskOnChip作为大容量非易失数据存储器,具有硬件连接简单、成本低、可靠性高等诸多优点,是一种值得推广的方案,同时也扩展了DiskOnChip的应用范围。

关键字:8051单片机  应用系统  DiskOnChip 引用地址:在8051单片机应用系统中使用DiskOnChip

上一篇:基于CY7C68013A的USB通信程序开发设计
下一篇:基于AT89C51的无线病房呼叫系统设计

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

数字信号处理(DSP)应用系统中的低功耗设计
随着电池供电系统应用的日趋广泛,许多系统特别是便携式产品都面临低功耗设计的问题,以DSP为核心的应用系统当然也不例外。本文就TMS320系列定点DSP器件为例,介绍一些行之有效的降低功耗的设计方法。 一、合理选择DSP器件 应根据系统要求来选择合适的DSP器件。在典型的DSP应用系统中,通常其核心是由一片或多片DSP构成数据处理模块,由于系统运算量大且速度要求高,因此DSP内部的部件开关状态转换十分频繁,这使得DSP器件的功耗在应用系统的功耗中占有相当的比例,所以设计人员在进行电路低功耗设计时要熟悉DSP及其相关产品的情况。DSP器件的功耗与该系统的电源电压有关,同一系列的产品,其供电电压也可能不同,如TMS320C2XX系列中
[嵌入式]
51单片机应用系统软件设计经验
  在进行应用系统的总体设计时,软件设计和硬件设计应统一考虑,相结合进行。当系统的 电路 设计定型后,软件的任务也就明确了 ,系统中的软件是根据系统功能要求设计的。   一般地讲,软件的功能可分为两大类。一类是执行软件,它能完成各种实质性的功能,如测量,计算,显示,打印,输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织调度角色。由于应用系统种类繁多,程序编制者风格不一,因此应用软件因系统而异。尽管如此,作为优秀的系统软件还是有其共同特点和其规律的。设计人员在进行程序设计时应从以下几个方面加以考虑:   根据软件功能要求,将系统软件分成若干个相对独立的部分,根据它们之间的联系和时间上的
[单片机]
ARM应用系统开发详解:第1章 ARM微处理器概述
1.1 ARM-Advanced RISC Machines ARM(Advanced RISC Machines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。 1991年ARM公司成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术知识产权(IP)核的微处理器,即我们通常所说的ARM微处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额,ARM技术正在逐步渗入到我们生活的各个方面。 ARM公司是专门从事基于RISC技术芯片设计开发的公司,作为知识产权供应
[单片机]
提高单片机应用系统可靠性的软件技术与方法介绍
1 可靠性设计模型与概述 可靠性设计模型表达了 单片机 应用系统从激励到响应的唯一性过程。可靠性设计模型如图1所示,按照可靠性设计模型,软件设计的主要任务是保证在过程空间中,应用系统程序按照给定顺序有序地运行。软件设计的可靠性保障是软件设计中的本质可靠性与可靠性控制。它保障了最少的软件错误以及在软件出错后仍保证系统能正常运行或安全运行。 2 本质可靠性的软件设计 2.1 最大限度地减少错误及缺陷 在应用软件中,唯一的有序性(编程指定的)与无限的激励因素,导致了软件测试仿真的不完全性,其结果是软件的缺陷与软件并存。软件的缺陷与错误通常可分为显性与隐性两大类。显性缺陷与错误发生在程序正常运行中。这些缺陷和错误大
[单片机]
ARM微处理器的指令集概述二——ARM应用系统开发详解笔记
一 跳转指令 跳转指令用于实现程序流程的跳转,在 ARM 程序中有两种方法可以实现程序流程的跳转: 使用专门的跳转指令。 直接向程序计数器 PC 写入跳转地址值。 ARM 指令集中的跳转指令可以完成从当前指令向前或向后的 32MB 的地址空间的跳转,包括以下 4 条指令: B 跳转指令 BL 带返回的跳转指令 BLX 带返回和状态切换的跳转指令 BX 带状态切换的跳转指令 B B{条件} 目标地址 B指令是最简单的跳转指令。注意存储在跳转指令中的实际值是相对当前PC值的一个偏移量,而不是一个绝对
[单片机]
单片机在嵌入式系统应用中的抗干扰措施
  单片机在嵌入式系统应用中,抗干扰性能是系统可靠性的重要指标,抗干扰设计是单片机系统研制中不可忽视的一个重要内容。本文根据笔者在实际工作中的体会,就单片机在嵌入式系统应用中的抗干扰问题进行探讨,并给出了排错设计、容错设计的一些方法和措施。   随着科学技术的迅速发展,单片机在各个领域中的应用越来越广泛。在众多的应用系统中共同面临的一个问题,就是它在应用系统中的可靠性,这就要求我们在设计时应根据现场具体情况,在硬件设计、线路板设计、软件设计等方面来采取相应的抗干扰措施。    一、抗电源干扰的措施   大部分单片机嵌入式系统都采用市电电源供电,在应用系统中一个很重要的干扰就来自电源。市电的各种干扰,如雷电、大容量感性负载的起
[单片机]
源程序C代码:篮球比赛应用系统
  /*****************************************************************   题目:篮球比赛计时记分系统   硬件:STC89C52RC、1602LCM液晶屏、六个按键   软件:Keil C   *****************************************************************/   #include //头文件   #define uchar unsigned char //宏定义   #define uint unsigned int   sbit S1=P3^2; //中断0(比赛倒计时开始/暂停)   sbit
[单片机]
CAN总线的通信应用系统设计
一 CAN总线简介   CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。CAN是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率,高抗电磁干扰性,而且能够检测出产生的任何错误。当信号传输距离达到10Km时,CAN 仍可提供高达50Kbit/s的数据传输速率。 由于CAN总线具有很高的实时性能,因此,CAN已经在汽车工业、航空工业、工业控制、安全防护等领域中得到了广泛应用。   CAN具有十分优越的特点,包括: 低成本,极高的总线利用率, 很远的数据传输距离(长达10Km), 高速的数据传输速率(高达1Mbit/s), 可根据报文的ID决定接收或屏蔽该报文,
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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