《ARM嵌入式C编程标准教程》.ppt

上传人:小飞机 文档编号:5896027 上传时间:2023-08-31 格式:PPT 页数:146 大小:2.27MB
返回 下载 相关 举报
《ARM嵌入式C编程标准教程》.ppt_第1页
第1页 / 共146页
《ARM嵌入式C编程标准教程》.ppt_第2页
第2页 / 共146页
《ARM嵌入式C编程标准教程》.ppt_第3页
第3页 / 共146页
《ARM嵌入式C编程标准教程》.ppt_第4页
第4页 / 共146页
《ARM嵌入式C编程标准教程》.ppt_第5页
第5页 / 共146页
点击查看更多>>
资源描述

《《ARM嵌入式C编程标准教程》.ppt》由会员分享,可在线阅读,更多相关《《ARM嵌入式C编程标准教程》.ppt(146页珍藏版)》请在三一办公上搜索。

1、第一章习题与练习1,嵌入式控制系统按操作系统分,大致可分哪几类,每类的设计方法有什么不同?2,嵌入式控制不加嵌入式操作系统支持,遇到多线程或局域网问题如何解决?3,ARM体系中的字,半字和字节各占多少位(bit)?4,什么是大端存储(Big Enddian)格式和小端存储(Little Enddian)格式,ARM920T内核的嵌入式系统中,常用哪种存储格式来存储字数据?5,什么是Thumb指令集?它和32位ARM指令集的区别?,第二章ADS 1.2开发环境创建与简介,2.1 ADS1.2开发环境创建2.1.1 ADS1.2概述 ADS是个集成开发环境,主要包括编译器、链接器、调试器、C和C+

2、库等,是ARM公司推出的新一代ARM集成开发工具。最新版本是ADS1.2,该版本支持包括Windows和Linux在内的多种操作环境。ADS1.2的组成如下所述。1.编译器ADS提供多种编译器,以支持ARM和Thumb指令的编译,主要有:armcc:是ARM C编译器。tcc:是Thumb C编译器。armcpp:是ARM C+编译器。tcpp:是Thumb C+编译器。armasm:是ARM和Thumb的汇编语言编译器。,2.链接器armlink是ARM链接器。该命令既可以将编译得到的一个或多个目标文件和相关的一个或多个库文件进行链接,生成一个可执行文件,也可以将多个目标文件部分链接成一个目

3、标文件,以供进一步的链接。3 符号调试器armsd是ARM和Thumb的符号调试器,能进行源码级程序调试。用户可以在用C或汇编语言写的代码中进行单步调试、设置断点、查看变量值和内存单元的内容。,4 fromELF将ELF格式的文件转换为各种格式的输出文件,包括BIN格式映像文件、Motorola32位S格式映像文件、Intel32位格式映像文件和Verilog十六进制文件。FromELF命令也能够为输入映像文件产生文本信息,例如代码和数据长度。5 armararmar是ARM库函数生成器,它将一系列ELF格式的目标文件以库函数的形式集合在一起。用户可以把一个库传递给一个链接器以代替几个ELF文

4、件。,6 CodeWarriorCodeWarrior集成开发环境(IDE)为管理和开发项目提供了简单多样化的图形用户界面,用户可以使用ADS的CodeWarriorIDE为ARM和Thumb处理开发用C、C+或者ARM汇编语言编写的程序代码。7 调试器ADS中含有3个调试器,即AXD、Armsd和ADW/ADU。在ARM体系中,可以选择多种调试方式,如Multi-ICE(Multi-processor In-Circuit Emulator)、ARMulator或Angel。Multi-ICE是一个独立的产品,是ARM公司自己的JTAG在线仿真器,不是由ADS提供的。,ARMulator是一

5、个ARM指令集仿真器,集成在ARM的调试器AXD中,提供对ARM处理器的指令集的仿真,为ARM和Thumb提供精确的模拟。用户可以在硬件尚未做好的情况下开发程序代码,利用模拟器方式调试。Angel是ARM公司常驻在目标机Flash中的监控程序,只需通过RS-232C串口与PC主机相连,就可以对基于ARM架构处理器的目标机进行监控器方式的调试。C和C+库,ADS提供ANSI C库函数和C+库函数,支持被编译的C和C+代码。用户可以把C库中的与目标相关的函数作为自己应用程序中的一部分,重新进行代码的实现。这就为用户带来了极大的方便,针对自己的应用程序的要求,对与目标无关的库函数进行适当的裁剪。在C

6、库中有很多函数是独立于其他函数的,并且与目标硬件没有任何依赖关系。对于这类函数,用户可以很容易地在汇编代码中使用。有了这些部件,用户就可以为ARM系列的RISC处理器编写和调试自己的开发应用程序了。,2.1.2 ADS1.2的安装,ADS全称为ARM Developer Suite,是ARM公司推出的新的一代ARM集成开发工具。现在ADS的最新版本是1.2,它取代了早期的ADS1.1和ADS1.0,该版本支持包Windows和Linux在内的多种操作系统。安装步骤如下:在ADS1.2的安装盘中运行setup.exe,安装ARM Developer Suite v1.2。出现图2-1对话框和图2

7、-2对话框,同意产权协义,选省缺安装路径(C:Program FilesARMvADS1.2)和典型安装模式(Typiflcation),按Next进入下一步,出现选文件夹、编程语言和当前设定对话框,均按Next,开始安装,如图2-3示。安装结束,安装许可文件(Install License),这一步可按安装向导进行,单击“下一步”按钮,会出现如图2-4和图2-5所示的对话框。,在图2-5对话框中选浏览(Browser)查许可文件,在Program FilesARMADSV1_2license中选license.dat文件并打开,单击“下一步”按钮,如图2-6,即可完成ADS1.2的安装。最后

8、,程序还要注册,注册文件在Program FilesARMADSV1_2文件夹中,单击注册文件,即完成程序注册,如图2-7所示。,2.2 ADS集成开发环境的使用,建立一个新工程运行ADS1.2集成开发环境(CodeWarrior for ARM Developer Suite),点击File|New,在New对话框中,共有7项,ARM Executable Image是ARM的通用模板。选中它即可生成ARM的执行文件,如图2-8所示。,还要在Project name栏中输入项目的名称,以及在Location中输入其存放的位置,按确定保存项目。,2.2.2 开发环境设置在新建的工程中,选择De

9、bug版本,如图2-9,使用Edit|Debug Settings菜单对Debug版本进行参数设置。,在如图2-10中,点击Debug Setting 按钮,弹出2-11图,选中Target Setting,项,在Post-linker栏中选中ARM fromELF项。按OK确定。这是为生成可执行的代码的初始开关。3.在如图2-12中,点击ARM Assembler,在Architecture or Processer,栏中选ARM920T。这是项目选择的CPU类型。4.在如图2-13中,点击ARM C Compliler,在Architecture or Processer栏中选ARM920

10、T。这是要编译的CPU核。,5.在如图2-14中,点击ARM linker,在outpur栏中设定程序的代码段地址,以及数据使用的地址。图中的RO Base栏中填写程序代码存放的起始地址,RW Base栏中填写程序数据存放的起始地址。该地址是属于SDRAM的地址。,在options栏中,如图2-15,Image entry point要填写程序代码的入口地址,其他保持不变,如果是在SDRAM中运行,则可在0 x300000000 x33ffffff中选值,这是64M SDRAM的地址,但是这里用的是起始地址,所以必须把你的程序空间给留出来,并且还要留出足够的程序使用的数据空间,而且还必须是4字

11、节对齐的地址(ARM状态)。通常入口点Image entry point 为0 x30000000,ro_base也为0 x30000000。在Layout栏中,如图2-16,在Place at beginning of image框内,需要填写项目的入口程序的目标文件名,如,整个工程项目的入口程序是2410init.s,那么应在Object/Symbol处填写其目标文件名2410init.o,在Section处填写程序入口的起始段标号。它的作用是通知编译器,整个项目的开始运行,是从该段开始的。,6.在如图2-17中,即在Debug Setting对话框中点击左栏的ARM fromELF项,在

12、Output file name栏中设置输出文件名*.bin,前缀名可以自己取,在Output format 栏中选择Plain binary,这是设置要下载到flash中的二进制文件。图2-17中使用的是test.bin。,7.到此,在ADS1.2中的基本设置已经完成,可以将该新建的空的项目文件作为模板保存起来。首先,要将该项目工程文件改一个合适的名字,如S3C2410 ARM.mcp等,然后,在ADS1.2软件安装的目录下新建一个合适的模板目录名,如,S3C2410 ARM Executable Image,再将刚刚设置完的S3c2410 ARM.mcp项目文件存放到该目录下即可。8.新建

13、项目工程后,就可以执行菜单Project|Add Files把和工程所有相关的文件加入,ADS1.2不能自动进行文件分类,用户必须通过Project|Create Group来创建文件夹,然后把加入的文件选中,移入文件夹。或者鼠标放在文件填加区,右键点击,如图2-18所示。,先选Add Files,加入文件,再选Create Group,创建文件夹,然后把文件移入文件夹内。读者可根据自己习惯,更改Edit|Preference窗口内关于文本编辑的颜色、字体大小,形状,变量、函数的颜色等等设置。如图2-19。,2.2.3 ADS1.2下仿真、调试,在ADS1.2下进行仿真调试,首先需要一根仿真调

14、试电缆和JTAG仿真器,用调试电缆把 JTAG仿真器和上位机并口相连,JTAG仿真器的驱动程序为两个动态链接库,也要事先安装。打开调试软件AXD Debugger。点击File|load image 加载可执行文件xx.axf,打开超级终端,设置其参数为:波特率为115200,数据位数8,奇偶校验无,停止位无1,数据流控无。点击全速运行,在我们的例子程序中,出现图2-20的界面:,最后介绍调试按钮,调试按钮在程序进入AXD Debugge状态时会出现在主菜单项,主要几个调试按钮如图2-21所示。,图2-21,左起第一个是全速运行,第二个是停止运行,第三个跳入函数内部单步执行,第四个把一个函数做

15、为一个语句单步执行,第五个跳出函数。关于在ADS1.2下进行仿真调试,下面还要祥细介绍。,2.2.4 其他开发环境介绍,IAR(瑞典爱亚软件技术咨询公司)Embedded Workbench for ARM 是IAR Systems 公司为ARM 微处理器开发的一个集成开发环境,下面简称IAR EWARM。比较其他的ARM 开发环境,IAR EWARM 具有入门容易、使用方便和代码紧凑等特点。故在这里做简单介绍。IAR Systems 公司目前推出的最新版本是IAR Embedded Workbench for ARM version 4.42,并提供一个32k 代码限制学习版或30 天时间限

16、制的免费评估版,可以到IAR 公司的网站 下载。IAR EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。,IAR EWARM 中包含一个全软件的模拟程序(simulator)。用户不需要任何硬件支持就可以模拟各种ARM内核、外部设备甚至中断的软件运行环境。从中可以了解和评估IAR EWARM 的功能和使用方法。IAR Embedded Workbench for ARM version 4.42 是一个针对ARM 处理器的集成开发环境,包含项目管

17、理器、编辑器、编译连接工具和支持RTOS(嵌入式实时控制系统)的调试工具,在该环境下可以使用C/C+和汇编语言方便地开发嵌入式应用程序。IAR EWARM 的主要模块如下:项目管理器功能强大的编辑器高度优化的IAR ARM C/C+Compiler IAR ARM Assembler1 个通用的IAR XLINK LinkerIAR XAR 和XLIB 建库程序和IAR DLIB C/C+运行库 IAR C-SPY 调试器(先进的高级语言调试器)命令行实用程序,以下介绍一下EWARM 4.42 版本及其相关配套硬件的一些特点:1 IAR EWAM 软件的特点 EWARM 4.42 版基本特点

18、完善的ARM 内核支持最新支持到ARM11 及Cortex M3 内核支持的其他ARM 内核ARM7(ARM7TDMI,ARM7TDMI-S,ARM720T)ARM9(ARM9TDMI,ARM920T,ARM922T,ARM940T,ARM9E,ARM9E-S,ARM926EJ-S,ARM946E-S,ARM966E-S,ARM968E-S)ARM10(ARM10E,ARM1020E,ARM1022E,ARM1026EJ-S)XScale(XScale,XScale-IR7),更加客户化地提供芯片级的支持完备的各厂商ARM 处理器的C/C+和汇编语言外设寄存器定义文件支持的芯片厂商有Analo

19、g Devices、ARM、Atmel、Cirrus Logic、Freescale、Intel、NetSilicon、OKI、Philips、Samsung、Sharp、ST 和TI 等支持Analog Devices、Atmel、Freescale、OKI、Philips、ST 和TI 等厂商的ARM 处理器的Flash Loader 程序 软件集成了400 余个代码例程,对应于各种不同的芯片,位于.armsrcexamples 目录下进一步改进了编译器速度优化,重写了的浮点运算库对更多嵌入式操作系统的支持新增支持OSEK 类操作系统的OSEK Run-Time Interface(ORT

20、I),新增支持OSE Epsilon RTOS 的Kernel Awareness 调试新增支持embOS、SMX、NORTi 等的支持调试器的增强功能对堆栈运行的监测功能配合IAR J-Link 仿真器的新增功能J-Link TCP/IP 服务器调试器和IAR J-Link 仿真器协同配合,实现对ARM 处理器的多核调试对IAR J-Trace 仿真器提供全面的支持在C-SPY 模拟器中可执行Trace 的模拟支持同一芯片上多颗Flash 的Flash Loader 程序,以及通用的Flash Loader 开发指南,EWARM 软件在芯片级支持方面的特色完备的各厂商ARM 处理器的C/C+

21、和汇编语言外设寄存器定义文件大量适合于嵌入式代码的编程语言扩展特性,包括存储器关键字,函数,中断函数,存储器映射I/O 等针对评估板的例程,包含IAR、Analog Devices、Aiji System、ARM、Atmel、Cirrus Logic、Freescale、Keil、OKI、Olimex、Pasat、Philips、Phytec、ST 和TI 等厂家的开发支持ARM 或Thumb 模式下大至4G 字节的应用程序每个函数都能选择在ARM 或Thumb 模式下编译可生成VFP 向量浮点协处理器代码支持Analog Devices、Atmel、Freescale、OKI、Philips

22、、ST 和TI 等厂商的ARM 处器的Flash Loader 程序 支持ARM Angel Debug monitor,EWARM 编译器的软件特色先进的通用编译器优化和针对特定处理器的速度优化及存储器优化功能轻量运行库,用户可以根据需要自行配置,提供全部源代码灵活的存储器控制,允许详细地为代码和数据分配地址去除不需要的函数和变量C/C+变量和函数连接时全局类型检查可选的校验和生成功能,用于运行时映象校验自动将代码和数据放置到非连续的存储器区域强大的可重定位宏汇编器,支持丰富的命令集和操作符,EWARM 调试器的软件特色.完全集成的源代码和反汇编程序调试器.非常细化的执行控制(函数调用级步进

23、).复杂的代码和数据断点.丰富的数据监视功能.Locals,Watch,Auto,Live Watch 和Quick Watch 等变量查看窗口.寄存器和存储器查看窗口.支持STL 容器,.C/C+调用栈窗口,同时还可以显示将要进入的函数.双击调用链上的任何函数将更新编辑器、局部变量、寄存器、变量查看和反汇编窗口,以显示在该函数调用时的状态.跟踪功能,可以检查执行的历史记录。在跟踪窗口中移动时将更新编辑器和反汇编窗口以显示合适的位置。.控制台I/O 仿真.中断和I/O 模拟仿真.类似C 语言的宏系统,可扩充调试器的功能.由主机执行的应用程序系统调用仿真.代码覆盖率和执行时间分析工具.通用的Fl

24、ash Loader 程序及开发指南.同时支持多颗Flash 的Flash Loader 程序.支持OSEK Run-Time Interface(ORTI).提供为调试器扩充第三方功能的软件开发包,如RTOS 调试扩充和仿真器驱动扩充.命令行调试工具,IAR C-SPY 支持的调试方法.IAR J-Link JTAG 接口(支持所有ARM7 和ARM9 核,通过USB 或TCP/IP 连接).RDI 接口类的第三方仿真器(Abatron BDI1000&BDI2000,EPI Majic,Ashling Opella,AijiOpenICE,Signum JTAGjet,ARM Multi-

25、ICE 等).Macraigor Wiggler,Raven,mpDemon 和USBdemon 等调试接口.EPI Jeeni 仿真器支持.IAR 的 ROM-Monitor.ARM 公司的Angel ROM-Monitor(用于Atmel 和Cirrus Logic 的评估板)EWARM 图形化的集成开发环境的界面特色.分层次的工程组织.同一工作空间中允许存放多个工程.可停靠的窗口和多视图.源代码浏览.创建和维护库的工具.可以和源代码控制系统相集成,.文本编辑器.支持多字节字符(汉字).上下文相关的帮助系统.根据句法着色.无限制的undo/redo.搜寻、替换和增量搜寻.Go to.书签.

26、错误标签:查阅前一个/下一个.自动括号配对.智能缩排.类似网页浏览器的前向/后向源码查阅.代码断点的设置/清除/使能/禁止.命令行编译连接工具,EWARM 的编程语言和标准.遵循ISO/ANSI C94(带有一些从C99 标准中挑选的特性)标准的C 编程语言.嵌入式C+扩展,支持模板、多重继承和虚拟继承、名字空间以及其它不增加执行时间或存储器开销的C+特性。完整的嵌入式C+库还包含字符串、流等特性。.IEEE-754 浮点运算规则.MISRA C 检查器.支持大量工业标准的调试和映象文件格式(如ELF/DWARF),与大多数常见的调试器和仿真器兼容 用户帮助.完备的例程和工程模板。.上下文相关

27、的联机帮助系统,带有库函数查阅功能.印刷好的用户指南,带有详细的step-by-step 教程.友好、详尽和精确的错误信息和警告信息,2.3 用AXD进行代码仿真、调试,2.3.1 AXD简介ADX(ARM extended Debugger)是ADS软件中独立于Code Warrior IDE的图形软件,可从Code Warrior for ARM Developer Suite中进入ADX进行调试,或在Windows下选择“程序”ARM Developer Suite v1.2AXD Debugger进入调试。要使用AXD必须首先有生成包含调试信息的程序,即由Code Warrior fo

28、r ARM Developer Suite编译生成含有调试信息的可执行ELF格式的映像文件(*.axf)。,1 在AXD中打开调试文件在Code Warrior for ARM Developer Suite界面中,点击Debugger进入AXD调试界面。选择FileLoad image命令,打开Load image对话框,找到要装入的.axf映像文件,单击“打开”按钮,就可以把映像文件装载到目标内存中,如图2-22所示。利用Exeute菜单中的子菜单项对可执行映像文件进行调试,各选项的含义如下:.选择Go子菜单或按F5键,将全速运行代码。.选择Stop子菜单或按Shift+F5键,将停止运行

29、代码。.选择Step In子菜单或按F8键,以单步执行代码,若遇到函数,则进入函数内执行。.选择Step子菜单或按F10键,以单步执行代码,若遇到函数,则把函数看成一条语句单步执行。,.选择Step Out子菜单或按Shift+F8键,在Step In单步执行代码进入函数内后,若选该子菜单,则可以从函数中跳出返回到上一级程序执行。.选择Run To cursor子菜单或按F7键,以全速运行到光标处停下。.选择Show Execution Context子菜单,可显示执行的内容。.选择Delete All Breakpoint子菜单,清除所有的断点。2查看存储器、寄存器、变量内容,利用AXD菜单

30、选项Processor Views和System Views中的子菜单选项可查看寄存器、变量值,还可以查看某个内存单元的数值等。各子菜单的含义如下:,选择Registers子菜单或按Ctrl+R键,可查看或修改目标板处理器中寄存器中的值.选择Watch子菜单或按Ctrl+E键,可对处理器设置观察点,观察点可以是寄存器、地址等,但不能修改。特别注意:Processor Views菜单下的Watch只能观察处理器,而System Views菜单下的Watch或按Alt+E键时可对目标板上的任何资源建立观察,可增加或删除观察点。.选择Variables菜单或按Ctrl+E键,可查看或修改当前可执行的

31、映像文件(程序)中的变量值,这些变量可以是局部变量、全局变量、类属变量。可增加或删除查看或修改的变量。.选择Memory子菜单或按Ctrl+M键,可查看或修改存储器中的值。如在程序执行前,可以先查看两个宏变量IOPMOD和IOPDATA的当前值。方法是:.选择AXD的Processor ViewsMemory命令或按Ctrl+M键后,查看或修改存储器中的值,如图2-23所示。,3.在Memory Start address文本框图上,用户可以根据要查看或修改的存储器地址输入起始地址,在下面的表格中会列出连续的64个地址。因为I/O模式控制寄存器和I/O数据控制寄存器都是32位的控制寄存器,所以

32、从0 x00000000开始的连续4个地址空间存放的是I/O模式控制寄存器的值,从图中可以读出该控制寄存器的值,数据控制寄存器的内容,注意因为用的是小端模式,所以读数据时注意高地址中存放的高字节,低地址存放的是低字节。,4.断点设置、查看在程序调试时经常设置断点,即在程序的某处设置断点,当程序执行到断点处即可停下,这时开发人员可通过前面的方法查看寄存器、存储器或变量的值,以判定程序是否正常。设置断点的方法是将光标移到需设置断点处,使用快捷键F9在此处设置断点。查看断点的方法是:选择System Viewsbreakpoint view命令或按Alt+K键,在断点状态对话框中右击,利用快捷菜单可

33、增加或删除断点。按F5键,程序将运行到断点,如果要进入函数内查看如何运行的,可以选择ExecteStep Inw命令或按下F8键,进入到子函数内部进行单步程序的调试。,2.3.2 JTAG概述,JTAG是Joint Test Action Group(联合测试行动小组)的简称,由于IEEE 1149.1标准是由JTAG这个组织最初提出的,最终由IEEE批准并且标准化的。所以IEEE 1149.1这个标准一般也俗称JTAG调试标准。JTAG标准主要用于芯片内部测试及对系统进行仿真、调试。JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port测试

34、访问口),通过专用的JTAG测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对多个器件分别测试。JTAG接口还常用于实现ISP(In-System Programmable在线系统可编程)功能,如对FLASH器件进行编程等。,在JTAG调试中,边界扫描(Boundary-Scan)是一个很重要的概念。边界扫描技术的基本思想是在靠近芯片的输入输出管

35、脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上,所以被称为边界扫描寄存器(Boundary-Scan Register Cell)。芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。如果需要捕获芯片某个管脚上的输出,首先需要把该管脚上的输出装载到边界扫描链的寄存器单元中去,然后通过TDO输出,这样,我们就可以从TDO上得到相应管脚上的输出信号。如果要在芯片的某个管脚上加载一个特定的信号,则首先需要通过TDI把期望的信号移位到与相应管脚相连的边界扫描链的寄存器单元里去,然后将该

36、寄存器单元的值加载到相应的芯片管脚。,由于在正常的运行状态下,这些边界扫描寄存器对芯片来说是透明的,所以正常的运行不会受到任何影响。这样,边界扫描寄存器就提供了一个便捷的方式,用以观测和控制所需要调试的芯片。另外,芯片输入输出管脚上的边界扫描(移位)寄存器单元可以相互连接起来,在芯片的周围形成一个边界扫描链(Boundary-Scan Chain)。一般的芯片都会提供几条独立的边界扫描链,用来实现完整的测试功能。边界扫描链可以串行地输入和输出,通过相应的时钟信号和控制信号,可以方便地观察和控制处在调试状态下的芯片。JTAG仿真器需要设备驱动程序驱动,在我们使用的教学实验系统(EDUKIT-),

37、JTAG仿真器的驱动程序为两个动态链接库(EasyICEArm9Plus.dll,EasyICEArm7Plus.dll),把这两个文件拷贝到C:EmbestIDEBinDevice路径下,即可正常使用。,2.3.3 Nor和Nand Flash的区别和使用,Nor和Nand是现在市场上两种主要的非易失闪存技术。Intel公司于1988年首先开发出Nor Flash技术。这项技术的开发和投放市场彻底改变了原先由EPROM和EEPROM一统天下的局面。紧接着,1989年东芝公司发表了Nand Flash结构,强调降低每比特的成本,提供更高的性能,并且像磁盘一样可以通过接口轻松升级。在具有Nand

38、 Flash接口的系统中,Nand Flash存储器可以替代Nor Flash存储器使用。许多业内人士也搞不清楚Nand闪存技术相对于Nor技术的优越之处,因为大多数情况下闪存只是用来存储少量的代码,这时Nor闪存更适合一些。而Nand则是高数据存储密度的理想解决方案。,Nor的特点是XIP(eXecute In Place芯片内执行)特性,这样,应用程序可以直接在Flash闪存内运行,不必再把代码读到系统RAM中。Nor的传输效率很高,在14MB的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影响了它的性能。Nand结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的速度

39、也很快。应用Nand的困难在于Flash的管理和需要特殊的系统接口。,1.性能比较 Flash闪存是非易失存储器,可以对称作块的存储器单元块进行擦写和再编程。由于任何Flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。Nand器件执行擦除操作是十分简单的,而Nor则要求在进行写入前先要将目标块内所有的位都写为0。由于擦除Nor器件时是以64KB128KB的块进行的,执行一个写入/擦除操作的时间为5s,与此相反,擦除Nand器件是以8KB32KB的块进行的,执行相同的操作最多只需要4ms。执行擦除时块尺寸的不同进一步拉大了Nor和Nand之间

40、的性能差距,统计表明,对于给定的一套写入操作,尤其是更新小文件时,在基于Nor的单元中进行需要更多的擦除操作。这样,当选择存储解决方案时,设计师必须权衡以下的各项因素:,.Nor的读速度比Nand稍快一些。.Nand的写入速度比Nor快很多,Nand的4ms擦除速度远比Nor的5s快。.大多数写入操作需要先进行擦除操作。.Nand的擦除单元更小,相应的擦除电路更少。2.容量和成本。Nand Flash的单元尺寸几乎是Nor器件的一半,由于生产过程更为简单,Nand结构可以在给定的模具尺寸内提供更高的容量,也就相应地降低了价格。在Nand闪存中每个块的最大擦写次数是一百万次,而Nor的擦写次数是

41、十万次。Nor Flash占据了容量为1MB16MB闪存市场的大部分,而Nand Flash只是用在8MB128MB的产品当中,这也说明Nor主要应用在代码存储介质中,Nand适合于数据存储。Nand在Compact Flash、Secure Digital、PC Cards和MMC存储卡市场上所占份额最大。,3.接口差别。Nor Flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。基于Nor的闪存使用非常方便,可以像其他存储器那样连接,并可以在上面直接运行代码。Nand器件使用复杂的I/O口来串行存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送

42、控制、地址和数据信息。Nand的读写操作采用512字节的块,这一点与硬盘管理操作类似,显然基于Nand的存储器就可以取代硬盘或其他块设备。,在使用Nand器件时,必须先写入驱动程序,才能继续执行其他操作。向Nand器件写入信息需要相当的技巧,因为设计师决不能向坏块写入,这就意味着在Nand器件上自始至终都必须进行虚拟映射。幸运的是,S3C2410微处理器支持Nand Flash接口,大大方便了在嵌入式系统设计中的应用。鉴于两种存储器各自的优缺点,在S3C2410嵌入式系统中,对Nor Flash和Nand Flash电路都进行了设计,以方便使用。,2.3.4 烧写Flash,程序调试结束,要将

43、其可执行文件烧写(或称固化)到目标机中Flash运行,这个过程要通过一个转门的下载软件来进行,以Embest OnLine Flash Programmer for ARM为例,来说明该软件的安装和使用。1.安装Flash ProgrammerFlash Programmer安装过程比较简单,运行Flash Programmer安装包中的Setup.exe,按照提示一步步执行即可。Flash Programmer安装程序将自动区分电脑是否已安装Embest IDE软件的情况:电脑已安装Embest IDE软件,安装程序将会把Flash Programmer缺省安装到“Embest IDE安装目

44、录ToolsFlashProgrammer”目录,见图2-24。同时安装程序将自动探测是否安装与IDE软件共享的设备模块和驱动程序,安装完毕后电脑无需重新启动。如果IDE已注册,软件可直接运行。,电脑未安装Embest IDE软件,安装程序将会把Flash Programmer缺省安装到“Program Files EmbestFlashProgrammer”目录,安装完毕后需要重新启动。软件正常运行时需要注册。软件安装完成后将缺省建立 Embest Tools 程序文件夹,包含执行程序和帮助的快捷方式。,2.Flash Programmer的功能,点击Flash Programmer图标,出

45、现图2-25对话框,在第一行有四个一级菜单,下面分别介绍。文件菜单文件菜单用于保存、打开用户设置的编程配置数据文件,该文件一般以*.cfg形式存在。通过文件菜单,用户还可以将已打开的编程配置数据文件里另存为其他文件,以及打开最近打开过的四个编程配置文件。文件菜单各子菜单命令如表2-1所示。表2-1 文件菜单,图2-25 Flash Programmer对话框 设置菜单设置菜单仅包含Configure子菜单。功能见表2-2表2-2 设置菜单,选择Setting Configure子菜单,将弹出编程设备配置对话框,如图2-26所示:,连接设备(Remote Device),该下拉框中显示所有本软件

46、支持的编程设备,用户可以选择其中一种,下拉框下方将显示对应该设备的说明和版本。通讯类型(Communication type),设置该设备与主机使用的连接方式和连接到的主机通讯口。通讯口(Parallel Port),按实际连接设置。Tools 菜单Tools 菜单设置菜单仅包含Option子菜单,功能见2-3。表2-3 Tools 菜单,选择Tools Option子菜单,将弹出应用选项对话框,见图2-27,输出信息记录文件(Output information to log file),选择该检查框则应用程序将所有输出的提示信息和错误信息记录到安装目录下的 Info.log文件。编程时载入

47、扇区所有数据(Loading all sector data when programming),部分Flash芯片编程时需要一次性载入扇区全部数据,则用户可以选择本选项完成编程操作。超时(Time Out),设置超时时间,单位为秒。测试RAM区大小(Test Ram Size),设置目标测试(Target Test)时测试的RAM存储区大小,单位为Kbyte;根据本软件运行时需要,一般情况下应设置为4K,对于必须一次性载入一个扇区数据的Flash芯片,应该设置为 4K+扇区大小。,执行FLASH操作前复位次数(Reset Count Before Flash Command),设置执行编程、

48、擦除、保护等命令前复位芯片的次数。Help 菜单Help 菜单该菜单最重要的是Contents子菜单,内部有我们需要的许多资料,特别是用户手册,对我们正确使用Flash Programmer有很大帮助。帮助菜单项见表2-4:,3.Flash Programmer的使用Net Start评估板是一款基于SAMSUNG公司ARM7芯片S3C4510的评估电路板,板上包含2M字节的Flash芯片,型号是AMD公司AM29LV160DB,以及16M字节的SDRAM,板上应用程序为ucLinux,是目前比较流行的一款评估板。我们以Net Start为例来说明Flash Programmer的使用。Net

49、 Start评估板使用FLASH前64K存储空间,即1到4号扇区保存BootLoader软件,该软件用于启动固化在5到35号扇区的ucLinux,以及烧写5到35号扇区内容。本节讲述如何使用Flash Programmer对Net Start评估板Flash进行编程,用户可以参照本实例对其他电路板进行编程配置。,选择合适的编程设备并设置通讯类型和通讯通道。处理器设置选择处理器CPU子对话框,如图2-29所示:,编程设备设置选择Setting Configure子菜单,弹出编程设备配置对话框,如图2-28所示:,选择SAMSUNG公司S3C4510处理器,选择小端模式,按表2-5设置以下寄存器:

50、,FLASH芯片设置选择FLASH子对话框,如图2-30所示:,图2-30 FLASH对话框,选择AMD公司AM29LV160B/DB芯片,选择访问宽度为16位,选择芯片数目为1片,设置Flash起始地址为为0 x180000,如果要烧写BootLoader程序,选择扇区范围为1到4,如果要烧写ucLinux,选择扇区范围为5到35。编程数据设置选择编程子对话框,如图2-31所示:设置RAM起始地址为0,选择需要编程的BIN格式文件,如果需要上载,选择上载文件。,图2-31 编程数据设置,5 目标板测试选择处理器CPU子对话框,点击目标板测试Target Test按钮,开始目标测试,测试时弹出

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号