摘要:本文简要描述了ATMEL AT91系列ARM芯片的嵌入式系统开发模型及开发流程,介绍ARM开发工具Embest IDE开发工具套件的基本使用。 关键字:ATMEL,ARM,AT91,EMBEST, Embest IDE for ARM,嵌入式系统开发 前言 ATMEL AT91系列ARM芯片是目前国内应用最为广泛的ARM处理器芯片之一,AT91微控制器的目标是针对低功耗和实时控制的应用。 AT91系列微控制器己成功地设计于工业自动系统,MP3/WMA产品,数据识别系统, POS系统,医疗设备,GPS纲络系统,电脑系统等等。因此,基于该系列芯片的嵌入式系统开发技术成为目前国内广大应用工程师最为关心的技术之一。下面就基于该系列芯片的嵌入式系统开发技术跟大家共同探讨。 1基于ATMEL AT91系列ARM芯片的嵌入式系统开发模型 嵌入式系统开发的完整流程包括系统调研、总体设计、开发实现、系统测试、系统维护等过程,本文在这里要讲的是其中开发实现(以下统称为系统开发)的具体过程。 一般的基于ARM嵌入式系统开发的开发模型可以用图1表示:
图1:嵌入式系统开发模型 相应地,在开发的各阶段,对应的开发工具如图2所示:
图2
在图2中可以看到,虚线以内的部分不是必需的,但在大多数开发项目中,却是不可缺少的组成部分。 这里主要探讨的是整个系统的开发,对于具体的硬件电路设计和软件编程细节不予讨论。一般地,开发工具提供商将编辑软件、编译软件、汇编软件、链接软件、调试软件、工程管理及函数库的集成到一起,形成一套完整的开发工具包或者集成开发环境。一套好的集成开发环境可以加快开发进度,节省开发成本。 在应用程序的编辑、编译工作完成后,开发人员需要借助一些调试设备或调试模块,对应用程序进行调试,发现程序设计中的缺陷。常用的调试设备或调试模块有以下几种: (1)指令集模拟器 部分集成开发环境提供了指令集模拟器,可方便用户在PC机上完成一部分简单的调试工作,但是由于指令集模拟器与真实的硬件环境相差很大,而且模拟器运行速度比较慢。 因此,即使用户使用指令集模拟器,调试通过的程序也有可能无法在真实的硬件环境下运行,用户最终必须在硬件平台上完成整个应用的调试。 指令集模拟器开发模型如图3所示:
图3
(2)驻留监控软件 驻留监控软件(Resident Monitors)是一段运行在目标板上的程序,集成开发环境中的调试模块,通过以太网口、并行端口或者串行端口等通讯端口与驻留监控软件进行交互,由调试模块发送命令通知驻留监控软件,控制程序的执行、读写存储器、读写寄存器、设置断点等。 驻留监控软件是一种比较低廉有效的调试方式,不需要任何其他的硬件调试和仿真设备。ARM公司的Angel就是该类软件,大部分嵌入式实时操作系统也是采用该类软件进行调试,不同的是在嵌入式实时操作系统中,驻留监控软件是作为操作系统的一个任务存在的。 驻留监控软件的不便之处在于它对硬件设备的要求比较高,一般在硬件稳定之后才能进行应用软件的开发,同时它占用目标板上的一部分资源,而且不能对程序的全速运行进行完全仿真,所以对一些要求严格的情况不是很适合。 驻留监控软件开发模型如图4所示:
图4
(3)JTAG仿真器 JTAG仿真器也称为JTAG调试器,是通过ARM芯片的JTAG边界扫描口进行调试的设备。 JTAG仿真器比较便宜,连接比较方便,通过现有的JTAG边界扫描口与 ARM CPU 核通信,属于完全非插入式(即不使用片上资源)调试,它无需目标存储器,不占用目标系统的任何端口,而这些是驻留监控软件所必需的。 另外,由于JTAG调试的目标程序是在目标板上执行,仿真更接近于目标硬件,因此,许多接口问题,如高频操作限制、AC和DC参数不匹配,电线长度的限制等被最小化了。 JTAG仿真器开发模型如图5所示:
图5
使用集成开发环境配合JTAG仿真器进行开发是目前采用最多的一种调试方式。 本文中的Embest IDE for ARM系列产品为深圳英蓓特公司基于ARM芯片的集成开发环境开发出来的,该集成开发环境系列集成了编辑器、编译器、连接器、调试器、工程管理器,相关辅助工具(flash编程器、外围寄存器编辑器,ELF to BIN文件转换器)等,即图2中粗体字标示的部分。目前,Embest IDE for ARM系列产品内部集成了GUN编译、连接器,还提供支持SDT编译器的版本。同时,该公司还提供GUN格式的AT91库(SDT格式的AT91库可以在 ATMEL网站上下载),ATMEL系列芯片开发版,基于AT91系列芯片的例子程序等。目前可提供三种自主研发的JTAG仿真器,用于对ARM芯片的仿真调试。 目前英蓓特公司提供的ARM开发工具套件,包括集成开发环境(IDE)、指令集模拟器、JTAG仿真器,ATMEL AT91函数库、ARM评估板以及部分操作系统移植,其它辅助工具等,是一套完整的ARM开发工具套件,详细信息可以通过下列网址获得:http: //www.embedinfo.com
2基于ATMEL AT91系列ARM芯片的嵌入式系统开发流程 (1)开发工具界面 正如前面提到,从系统开发的一开始,就要使用IDE来帮助设计。下面先看一下Embest IDE的操作界面(图6): 图6 相信这个界面对于使用过VC或者C51开发工具的工程师来讲,并不陌生。这也是Embest IDE的一个特点,那就是界面友好,上手快,经过简单培训甚至不需培训,自己通过手册就能掌握它的使用。 (2)开发流程 下面按照开发流程步骤介绍一下整个开发流程: 最小AT91硬件系统 在硬件调试的一开始,就可是使用IDE来辅助调试。可以调试的最小AT91硬件系统,包括电源、CPU芯片,晶振、存储器(外部的或者内部的)和JTAG 调试接口。为了直观,一般可以连接一、两只LED管,用以指示CPU的工作状态。
图7 在硬件PCB做好之后,先按照图7的内容焊接最小系统,对于绝大多数AT91芯片来说,内部都集成了一定数量的存储器(MEM),所以外部的存储器在这一步可以先不焊。 在硬件设计之初,要注意一下下列管脚的连接状况 需要注意的管脚列表:
|
管脚名 |
管脚含义 |
连接状态 |
|
NTRI |
Tri-state Mode Select |
上拉 |
|
NWAIT |
Wait Input |
上拉 |
|
JTAGSEL |
Selects between ICE and JTAG |
接低 |
|
nTRST |
Not JTAG reset |
上拉 | 另外需要注意的地方包括但不限于:CPU复位信号的处理、模式管脚的正确连接、JTAG复位信号的上拉、JTAG输入信号的上拉、信号串扰、多电平电源的设计、外部器件的接口电平、存储器总线接口、存储器等待时间nWAIT等。 仿真器与CPU连接 焊接完硬件最小系统,就可以使用仿真器与CPU连接,来查看和控制CPU状态。在连接之前,首先要核对电气特性要求,Embest 系列JTAG仿真器可以直接与AT91芯片连接,如果您没有增加任何其他接口芯片,这一步没有任何问题。下一步工作是通过JTAG接口与JTAG仿真器硬件连接,利用相应的Embest IDE观察CPU状态并确定CPU与调试工具可以正常通信。 这里通常碰到的错误信息为: Error: PowerICE/Emulator not found, please check power and hardware connection. 这个提示通常跟IDE的工程配置有关,检查工程配置,看软件配置的仿真器是否跟实际的一致,另外检查一下并口电缆和仿真器电源。 这一步通过,就应该可以使用Embest IDE检查和控制CPU的运行。当仿真器与目标硬件连接时,如果出现错误,可以参照下表来找出问题。
|
错误提示 |
Target CPU not found |
Stop target failed |
|
可能原因
|
相关管脚电平(NTRI、JTAGSEL、nTRST ) |
相关管脚电平(NWAIT ) |
|
CPU供电电压、电流 |
CPU供电电压、电流 |
|
JTAG接口定义、接口电平 |
晶振 |
|
|
仿真器设置(ARM7/ARM9) | 进一步验证硬件连接的正确性和稳定性 通过访问CPU内部和外围寄存器和在内部RAM运行简单的测试程序,进一步验证硬件连接的正确性和稳定性。然后开始访问外部RAM区(如果存在)。 设置(配置)EBI 访问外部存储器之前,需要利用调试工具正确配置EBI,具体配置这里不再赘述,配置方法有下面三种: 通过启动代码完成 利用控制台命令手工实现 利用命令脚本实现 正确配置EBI寄存器之后,就可以尝试访问RAM区了。通过访问RAM区,就可以验证总线的正确性。 最小系统的硬件调试到这里基本上就完成了,最后一步是编写硬件测试程序,确认程序执行正确以及开发工具可以正确监控目标。然后就可以用类似的方法调试硬件的其他模块。 软件设计 现在开始运行最基本的软件程序,一般来说,在调试的最初阶段,程序是在RAM中调试运行的。在Embest IDE的安装目录下面,有完整的AT91的函数库,以及多个CPU的评估板的例程,全部源代码形式,包括启动源代码,用户只需作简单修改,甚至不需修改,就可以在自己的板子上运行部分例程。Embest IDE目前还提供了EB40、EB40A和EB55三个版本的uCos移植范例。 有了启动代码和函数库文件,加上uCos操作系统,程序员可以很快地建立起自己的开发平台,迅速的将主要精力投入到应用程序的开发。 3基于ATMEL AT91系列ARM芯片的嵌入式系统高级调试技术 (1)RAM区程序调试 在调试阶段,这是最常用的程序运行方式,程序各段均在RAM区,由仿真器直接下载程序,优点是下载速度快,断点设置方便,可以采用直接修改Memory等手段避免一些程序下载,而且执行速度比在 Flash 中快,缺点是需要较大的RAM区。 (2)分块调试技术 对于有些系统,使用AT91芯片,可能只需要较小的RAM区即可。这时,在RAM区调试整个工程可能会产生困难。可以使用分块调试技术,将程序分成几个逻辑块,调试好的逻辑块写入 Flash 中。这种调试方式,既具有RAM调试的优越性,又减少了程序的下载量,节约RAM,提高调试速度,而且减少了RAM程序一次性转到Flash时可能出现的问题。缺点是技术相对复杂一点,需要程序员对整个程序模块比较清楚,而且对编译连接器的使用比较熟练,增加了调试难度。 (3)flash程序调试 最终的程序,都是要烧写到flash中,因此,最后一步需要将程序固化在在flash中进行最终的调试,flash程序调试的特点为: 只有两个断点 不需要下载程序 几种常用的 Flash 编程方法 下面简要介绍几种常见的flash编程方法: (1)专用或通用的编程器 这种方法的优点是编程速度快。对于直插型的封装芯片来说比较方便。但是对于贴片的flash,就比较麻烦,特别是在需要经常烧写的调试阶段。因此,专用或通用的编程器目前多用于生产阶段,在开发调试较为少用。 (2)操作系统所带 Flash 编程工具 这种方式跟具体操作系统相关,一般来说需要一片已经烧写好boot loader和部分操作系统的flash作为引导部分。而这一部分需要是用其他方式来实现。 (3)监控程序所支持的 Flash 编程工具 与方式2类似。 (4)自编写 RAM 区运行的 Flash 编程工具 这是广大程序员使用的比较多的一种方式,使用方便、灵活。但是需要程序员编程实现,耗费开发精力。 (5)Embest JTAG仿真器支持的编程工具 Embest IDE用户可以免费使用该编程工具(Embest flash programmer)。非Embest IDE用户也可以单独购买该软件。该软件通过Embest 系列ARM JTAG仿真器直接烧写板上flash,在线烧写,无需编程,通过界面对话框简单配置即可。该软件附带了AT91系列开发板的配置文件,用户可以直接烧写 AT91系列开发板上的flash。如果您使用的是自己的板子,只需简单修改配置即可。
小结 本文简要描述了ATMEL AT91系列ARM芯片的嵌入式系统开发模型及开发流程,介绍ARM开发工具Embest IDE开发工具套件的基本使用。由于篇幅有限,具体细节没有介绍,另有一些辅助工具,有兴趣的读者可以直接访问我公司网站查询:http://www.embedinfo.com |