综合资讯 技术文章 原文阅读 在线商城 下载专区 DATASHEET 技术论坛 商务频道

电子技术 | 技术资料 | 嵌入式系统 | 单片机专题 | DSP专题
EDA/PLD专题 | 电源技术专题 | 电子制作专题 | 其他综合 | 芯片选型

所在的位置:首页在线阅读嵌入式系统嵌入式系统设计与实例开发——uC/OS实时操作系统正文
 
第三章 嵌入式系统的设计方法

 本章首先介绍了嵌入式系统的典型结构,然后结合实际情况介绍嵌入式系统的设计流和一般设计方法,最后结合实例,介绍了嵌入式系统仿真开发环境ARM SDT2.5的使用通过本章的学习,读者将了解到以下知识:


◆嵌入式系统典型组成
◆嵌入式系统设计的一般方法
◆嵌入式系统的软硬件协同设计技术
◆ARM SDT2.5仿真开发环境的配置和使用
◆Source Insight代码编辑软件的使用
◆简单嵌入式应用程序的开发


3.1嵌入式系统的总体结构
  在进行嵌入式系统设计之前,首先需要了解一下嵌入式系统的结构。当今嵌入式系统已广泛应用于电子通信、工业控制、信息家电、军事国防等各个领域。在不同的应用场合,嵌入式系统呈现出的外观和形式各不相同。但通过对其内部结构进行分析,可以发现,一个嵌入式系统一般都由嵌入式计算机系统和执行装置组成(如图3—1所示),其中嵌入式计算机系统是整个嵌入式系统的核心,由硬件层、中间层、软件层和功能层组成。执行装置也称为被控对象,它可以接受嵌入式计算机系统发出的控制命令,执行所规定的操作或任务。执行装置可以很简单,如手机上的一个微型的电机,当手机处于震动接收状态时打开;也可以很复杂,如SONY智能机器狗,上面集成了多个微型控制电机和多种传感器,从而可以执行各种复杂的动作和感受各种状态信息。

  目前所提及的嵌入式系统一般指嵌入式计算机系统,下面对嵌入式计算机系统的组成进行简要描述。

  1.硬件层
  硬件层由嵌入式微处理器、存储器系统、通用设备接口和I/0接口(A/D、D/A、I/0等)组成。在一片嵌入式微处理器基础上增加电源电路、时钟电路和存储器电路(ROM和ROM等),就构成了一个嵌入式核心控制模块。其中操作系统和应用程序都可以固化在
ROM中。

  嵌入式系统的硬件层是以嵌入式处理器为核心的,最初的嵌入式处理器都是为通用目 的而设计的,后来随着嵌入式系统应用的不断普及,出现了专用的集成芯片(Application specific integrated circuit,ASIC),ASIC是一种为具体任务而特殊设计的专用电路,如很多打印机控制芯片就是ASIC。由于ASIC在设计过程中进行了专门优化,其性能、性价比都非常高。采用ASIC,可以减少系统软件和硬件设计的复杂程度,降低系统成本。但ASIC的前期设计费用非常高,而且ASIC一旦设计完成,就无法升级和扩展,因此只有在一舴和硬件设产量非常大的产品设计中才考虑使用ASIC。

  近年来,各种可编程芯片的出现,改变了嵌入式硬件模块的设计方法,出现了“可重构计算”的概念。可重构计算是通过可编程逻辑器件实现的,它允许在不改变硬件电路板的情况下,实现不同的控制接口和控制功能。可重构计算结合了通用微处理器和ASIC的
特点。

  可重构计算是通过现场编程门阵列(Field-programmable gate array,FPGA)实现的。FPGA是20世纪80年代中期以后发展起来的一种可编程的大规模集成器件。FPGA具有密性好、体积小、重量轻、可靠性高等一系列专用大规模集成电路ASIC的优点,是一
新型的ASIC产品。

  FGPA的出现,是电子系统设计领域内的一次重大变革。这次变革使一个电子系统可仅仅由三种标准模块构成,即微处理器、存储器和可编程逻辑器件。以往,前两种器件已产品化、系列化,而系统中大量的逻辑控制仍由许多中小规模器件来实现,其工作复杂,
开发周期长,而且速度低,可靠性差。FPGA的出现,使系统中的第三个模块也实现了大规模集成化与可编程化。这一方面改进了系统的可调整性,降低了功耗,提高了可靠性促使系统更加小型化,另一方面大大缩短了系统的开发周期,减少了设计成本,并降低了设
计风险。

图3.1嵌入式系统的典型组成

 2.中间层
  硬件层与软件层之间为中间层,也称为硬件抽象层(Hardware Abrstract Layer,HAL)或板级支持包(Board Support Package,BSP),它把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关,一般应具有相关硬件的初始化、数据的输入/输出操作和硬件设备的配置等功能。BSP具有以下两个特点:

  硬件相关性:因为嵌入式实时系统的硬件环境具有应用相关性,所以,作为高层软件与硬件之间的接口,BSP必须为操作系统提供操作和控制具体硬件的方法。

  操作系统相关性:不同的操作系统具有各自的软件层次结构,因此,不同的操作系统具有特定的硬件接口形式。

  在实现上,BSP是一个介于操作系统和底层硬件之间的软件层次,包括了系统中大部
分与硬件相关的软件模块。设计一个完整的BSP需要完成两部分工作:嵌入式系统初始化
以及BSP的功能和设计硬件相关的设备驱动。

   (1)嵌入式系统初始化
  系统初始化过程总是可以抽象为三个主要环节,按照自底向上、从硬件到软件的次序依次为:片级初始化、板级初始化和系统级初始化。

  片级初始化:主要完成CPU的初始化,包括设置CPU的核心寄存器和控制寄存器,CPU核心工作模式以及CPU的局部总线模式等。片级初始化把CPU从上电时的默认状态逐步设置成为系统所要求的工作状态。这是一个纯硬件的初始化过程。

  板级初始化:完成CPU以外的其他硬件设备的初始化。除此之外,还要设置某些软件的数据结构和参数,为随后的系统级初始化和应用程序的运行建立硬件和软件环境。这是一个同时包含软硬件两部分在内的初始化过程。

  系统级初始化:这是一个以软件初始化为主的过程,主要进行操作系统初始化。BSP将对CPU的控制权转交给操作系统,由操作系统完成余下的初始化操作,包括加载和初始化与硬件无关的设备驱动程序,建立系统内存区,加载并初始化其他系统软件模块,比如网络系统、文件系统等;最后,操作系统创建应用程序环境并将控制转交给应用程序的入口。

   (2)硬件相关的设备驱动程序
  BSP另一个主要功能是硬件相关的设备驱动。与初始化过程相反,硬件相关的设备驱动程序的初始化和使用通常是一个从高层到底层的过程。尽管BSP中包含硬件相关的设备驱动程序,但是这些设备驱动程序通常不直接由BSP使用,而是在系统初始化过程中由
BSP把它们与操作系统中通用的设备驱动程序关联起来,并在随后的应用中由通用的设备驱动程序调用,实现对硬件设备的操作。设计与硬件相关的驱动程序是BSP设计中另一个关键环节。


3.软件层
  软件层由实时多任务操作系统(RTOS)、文件系统、图形用户接口(GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。RTOS实际上是一段嵌入式目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其他应用程序都建立在RTOS之上。RTOS是一个标准的内核,它将CPU时钟、中断、I/O、定时器等资源都封装起来,留给用户的是一个标准的API函数接口。

  大多数RTOS都是针对不同微处理器优化设计的高效实时多任务内核,RTOS可以在不同微处理器上运行而为用户提供相同的API接口。因此基于RTOS开发的应用程序具有非常好的可移植性。


4.功能层
功能层由基于RTOS开发的应用程序组成,用来完成对被控对象的控制功能。功能层,是面向被控对象和用户的,为方便用户操作,往往需要提供一个友好的人机界面。 对于一些复杂的系统,在系统设计的初期阶段就要对系统的需求进行分析,确定系统的功能,然后将系统的功能映射到整个系统的硬件、软件和执行装置的设计过程中,称之为系统的功能实现。


3.2嵌入式系统的设计方法
3.2.1 嵌入式系统的设计流程
  如图3.2所示,嵌入式系统设计一般由5个阶段构成:需求分析、体系结构设计、硬件,软件设计、系统集成和系统测试。各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。


图3-2嵌入式系统的设计阶段

 

 1.系统需求分析
  确定设计任务和设计目标,并提炼出设计规格说明书,作为正式设计指导和验收的标准。系统的需求一般分功能性需求和非功能性需求两方面。功能性需求是系统的基本功能,如输入输出信号、操作方式等;非功能需求包括系统性能、成本、功耗、体积、重量
等因素。
  2.体系结构设计
  描述系统如何实现所述的功能和非功能需求,包括对硬件、软件和执行装置的功能划分以及系统的软件、硬件选型等。一个好的体系结构是设计成功与否的关键。
  3.硬件,软件设计
  基于体系结构,对系统的软件、硬件进行详细设计。为了缩短产品开发周期,设计往往是并行的。应该说,嵌入式系统设计的工作大部分都集中在软件设计上,采用面向对象技术、软件组件技术、模块化设计是现代软件工程经常采用的方法。
  4.系统集成
  把系统的软件、硬件和执行装置集成在一起,进行调试,发现并改进单元设计过程中的错误。
  5.系统测试
  对设计好的系统进行测试,看其是否满足规格说明书中给定的功能要求。针对系统的不同的复杂程度,目前有一些常用的系统设计方法,如瀑布设计方法、自顶向下的设计方法、自下向上的设计方法、螺旋设计方法、逐步细化设计方法和并行设计方法等,根据设计对象复杂程度的不同,可以灵活地选择不同的系统设计方法。
3.2.2嵌入式系统的一般设计方法
  通常在单片机系统的开发和应用中,是按照如图3.3所示的流程进行的。

  在嵌入式系统的应用开发中,整个系统的开发过程将改变为如图3.4所示的过程。

  可见,在应用嵌入式系统开发的过程中,因为对应于每一个处理器的硬件平台都是通用的、固定的、成熟的。所以,在开发过程中减少了硬件系统错误的引入机会;同时,因为嵌入式操作系统屏蔽掉了底层硬件的很多复杂信息,使得开发者通过操作系统提供的API函数可以完成大部分工作,大大地简化了开发过程,提高了系统的稳定性。

   综上所述,嵌入式系统的开发可以说是把开发者从反复进行硬件平台的设计过程中解放出来,从而可以把主要的精力放在编写特定的应用程序上。这个过程更类似于在系统机(如PC机)上的某个操作系统下开发应用程序。

图3-3单片机系统的开发流程

图3.4嵌入式系统的开发流程

 

 提示:嵌入式系统的开发通常采用“宿主机,目标机”方式(如图3-5所示)。首先,利用宿主机上丰富的资源及良好的开发环境开发和仿真调试目标机上的软件。然后,通过串行口或网络将交叉编译生成的目标代码传输并装载到目标机上,并用交叉调试
器在监控程序或实时内核/操作系统的支持下进行实时分析和调度。最后,目标机在特定的环境下运行。

图3.5宿主机,目标机的开发方式

3.2.3嵌入式系统的硬件/软件协同设计技术

  传统的嵌入式系统设计方法如图3—6所示,硬件和软件分为两个独立的部分,由硬件工程师和软件工程师按照拟定的设计流程分别完成。这种设计方法只能改善硬件/软件各自的性能,而有限的设计空间不可能对系统做出较好的性能综合优化。20世纪90年代初,国外有些学者提出“这种传统的设计方法,只是早期计算机技术落后的产物,它不能求出适合于某个专用系统的最佳计算机应用系统的解”。因为,从理论上来说,每一个应用系统,都存在一个适合于该系统的硬件、软件功能的最佳组合,如何从应用系统需求出发,依据一定的指导原则和分配算法对硬件/软件功能进行分析及合理的划分,从而使系统的整体性能、运行时间、能量耗损、存储能量达到最佳状态,已成为硬件/软件协同设计的重要研究内容之一。
  应用系统的多样性和复杂性,使硬件/软件的功能划分、资源调度与分配、系统优化、系统综合、模拟仿真存在许多需要研究解决的问题,因而使国际上这个领域的研究日益活跃。
  系统协同设计与传统设计相比有两个显著的特点:
   (1)描述硬件和软件使用统一的表示形式;
   (2)硬件,软件划分可以选择多种方案,直到满足要求。


图3-6传统的嵌入式系统的设计方法

  显然,这种设计方法对于具体的应用系统而言,容易获得满足综合性能指标的最佳解决方案。传统方法虽然也可改进硬件、软件性能,但由于这种改进是各自独立进行的,不一定能使系统综合性能达到最佳。传统的嵌入式系统开发采用的是软件开发与硬件开发分离的方式,其过程可描述如下:
   (1)需求分析:
   (2)软硬件分别设计、开发、调试、测试:
   (3)系统集成:软硬件集成;
   (4)集成测试:
   (5)若系统正确,则结束,否则继续进行;
   (6)若出现错误,需要对软、硬件分别验证和修改:
   (7)返回(3),继续进行集成测试。   

  虽然在系统设计的初始阶段考虑了软硬件的接口问题,但由于软硬件分别开发,各自部分的修改和缺陷很容易导致系统集成出现错误。由于设计方法的限制,这些错误不但难于定位,而且更重要的是,对它们的修改往往会涉及整个软件结构或硬件配置的改动。显然,这是灾难性的。

  为避免上述问题,一种新的开发方法应运而生——软硬件协同设计方法。一个典型的硬件/软件协同设计过程如图3-7所示。首先,应用独立于任何硬件和软件的功能性规格方法对系统进行描述,采用的方法包括有限态自动机(FSM)、统一化的规格语言(CSP、
VHDL)或其他基于图形的表示工具,其作用是对硬件/软件统一表示,便于功能的划分和综合;然后,在此基础上对硬件/软件进行划分,即对硬件,软件的功能模块进行分配。但是,这种功能分配不是随意的,而是从系统功能要求和限制条件出发,依据算法进行的。完成硬十牛/软件功能划分之后,需要对划分结果做出评估。方法之一是性能评估,另一种方法是对硬件、软件综合之后的系统依据指令级评价参数做出评估。如果评估结果不满足要求,说明划分方案选择不合理,需要重新划分硬件/软件模块,以上过程重复直到系统获得一个满意的硬件/软件实现为止。

图3—7嵌入式系统的硬件,软件协同设计方法

  软硬件协同设计过程可归纳为:
    (1)需求分析;
    (2)软硬件协同设计;
    (3)软硬件实现;
    (4)软硬件协同测试和验证。
  这种方法的特点是在协同设计(co-design)、协同测试(c0-test)和协同验证(Co-verification)上,充分考虑了软硬件的关系,并在设计的每个层次上给以测试验证,使得尽早发现和解决问题,避免灾难性错误的出现。

 

3.3 SDT仿真开发环境概述

  当进行嵌入式系统开发时,选择合适的开发工具可以加快开发进度、节省开发成本。因此一套含有编辑软件、编译软件、汇编软件、连接软件、调试软件、工程管理及函数库的集成开发环境(IDE)是必不可少的。

  ARM SDT是the ARM Software Development Toolkit的简写,是ARM公司为方便用户在ARM芯片上进行应用软件开发而推出的一整套集成开发工具。ARM SD'r由一套完备的应用程序构成,并附带支持文档和例子,可以用来编写和调试.ARM系列的RISC处理
器的应用程序,可以开发c++或ARMAssembly程序。它的Windows开发工具有两个:APM和ADW。

  ARM SDT可以在Windows 95/98/NT以及Solaris 2.5/2.6上运行,支持最高到AltM9的所有ARM处理器(包括StrongARM)。


3.3.1 ARM仿真器的流程简介

  第一步,首先进入manager窗口,建立新的项目文件。注意,该仿真环境用到模板的概念,系统会自动地根据模板构建新项目的框架结构。然后向该框架中加载源文件,可以是C或C++程序,亦可是ASM(汇编)程序等,而且,所加载的源程序可以不只是一个,项目组织文件的特点是针对一批文件的。然后,执行compile命令,根据源程序类型的不同(由扩展名决定),系统自动调用相应的工具进行编译或汇编。如果编译有错误,可以在项目树中双击源文件,打开编辑窗口,对之进行编辑修改,再重新执行compile命令,反复调试,直至编译通过。经过这一步后生成对应的目标文件(名字与源文件名相同,扩展名用.O表示)。接下来,还要再调用系统工具armlink对目标文件进行连接。系统会自动根据模板生成项目输出文件(扩展名为.axf),通常该输出只有一个文件。另外,该系统把项目中的每个文件的日期看作重要的参数,如果往项目中添加源文件或修改已有的源文件时,会造成输入文件的日期版本新于输出文件的日期版本。此时若执行调试命令(debug或exec’ute),则系统会自动提示文件版本过旧(out 0f date)的信息,询问是否需执行重建(rebuild)命令,以使项目文件的输出得到相应的更新,如不执行重建命令,则进入DEBUG窗口后,会被提示“FIIE NOT FOUND”信息。

  第二步,接下来要对该输出文件进行在线仿真调试,这部分工作是在DEBUG窗口中实现的。在manager窗口中执行调试命令(debug或execute),会自动进入DEBUG窗口。在这里,程序可以根据需要设置运行方式——单步运行或连续运行某一段。其间可设定程序断点(Breakpoint)和开辟查看窗口(Watchpoint,查看某一单元的内容),跟踪程序的运行,分析和排解出现的各种问题。确认无误后,则仿真工作基本完成,可重返manager窗口,得到最终的二进制(Binary)代码文件,写入嵌入式系统,即可脱离仿真器离线
工作。


3.3.2重要概念
  ARM仿真器利用项目(Project)组织文件,而项目的建立和项目输出的产生均由系统依据模板自动完成,所以项目与模板两个概念很重要。下面分别进行阐述:
   ◆项目文件
    所谓项目文件是指.APM组织文件的基本方式。ARM嵌入式系统的源程序往往不是单一的文件,随着其功能的复杂化,一个应用程序可能包含一组文件——C文件、ASM文件、INCLUDE文件、库文件,甚至还包含子项目文件。

ARM系统的项目结构
  它的根目录下一般根据变量(Variable)再分成下一级子目录,每一个变量下属目录结构很接近,它们的区别仅在于文件的版本不同。常用的变量版本有debug and release、debug、release。变量的下一级目录是分栏(Partion)予目录。分栏的下一级就是具体的文件了。分栏的作用就是分开不同的文件,对其归类,以使文件的组织结构更有条理。常用的分栏
有:source、objects、libraries、include、image以及miscellanea。
   · source 包含各种项目中用到的源文件
   · objects 包含源文件经编译或汇编生成的目标文件
   · libraries 包含项目中所用到的各种库文件
   · include 包含源文件中所引用的包含文件
   · image 包含项目输出文件
   · miscellanea 包含项目中用到的、除以上分栏下属文件以外的其他文件

  ◆模板
  ARM仿真器模板的主要功能是定义如何建立某一类型的项目输出。项目模板依据一些build step patterns来描述不同的工具如何协同工作,以从一组源文件中具体地构建项目输出。

    · abuild step
      它用来产生一(组)文件,其行为受控于abuild steppattern。典型的abuild step包括compiling(编译)、      assembling(汇编)、linking(连接)或build a sub-project(建立一子项目)。
   · abuild steppattern
      (1)使工具(如armcc,armlink等)同一个abuild step相联系。
      (2)定义一个a build step的输入和输出。
      (3)使具体的文件类型同分栏(partition)相联系,便于组织项目。
3.4开发简单的嵌入式应用程序
3.4.1配置ARM SDT 2.5开发环境及编程
  下面以北京博创兴业科技有限公司的UP-NetARM300嵌入式开发板为例置ARM SDT 2.5仿真开发环境,并开发一段简单的嵌入式应用程序。
  ARM SDT 2.5仿真开发环境的配置方法如下:
   1.运行ARM SDT 2.5集成开发环境(ARM Project Manager)。选择File|New菜单,在对话框中选择Project,如图3.8所示,新建一个工程文件(workl.apj)。介绍如何配New菜单
   2.在新建的工程中,如图3-9所示,选中工程树的“根部”。使用菜单Project | Tool|Configuration for workl.apj |<asm>=al'masm |Set,对整个工程的汇编进行设置。
   3.因为开发板上的嵌入式处理器ARM7TDMI没有浮点处理器,所以,如图3—10所示,在弹出的对话框中设置Floating Point Processor为none。保持其他的设置不变。


图3_8新建一个工程文件

图3。9整个工程的汇编进行设置

图3—10 设置F1oating Point Process0T为non。

 4.选中工程树的“根部”,通过菜单Project|ToolConfigurationforworkl.apj| asmlink|Set,对整个工程的连接方式进行设置。
  5.在弹出的对话框中,选中Entry and Base标签,如图3-11所示,设置连接的Read-Only(只读)和Read-Write(读写)地址。地址0x0c080000是开发板上SDRAM的真实地址,是由系统的硬件决定的;0xoc200000指的是系统可读写的内存的地址。也就是说,在
OxOe080000~OxClffffff之间是只读区域,存放程序的代码段,从Oxoc200000开始是程序的数据段。


图3—11设置连接的地址

  6.选择Lillker Configuration的ImageLayout标签,如图3-12所示,设置程序的入口模块。指定在生成的代码中,程序是从44binit.s开始运行的。

图3一12设置程序的入口模块

  7.选择Project | Edit Project Tamplete菜单,使用New按钮,为编译器新建一个步骤如图3一13所示,取名为Romlmage。


图3一13为编译器新建一个步骤

  8.按照如图3.14的内容设置Romlmage的内容。使编译器编译的时候可以生成system.bin文件,这就是系统的启动文件。

图3.14设置Romlmage的内容

  9.选择Project |Edit Variables for workl.apj,将build_target变量设为system.bin。使编
译器编译的时候可以生成system.bin文件,这就是系统的启动文件,如图3-15所示。

  lO.回到Project Template Editor对话框中,单击Edit Detail按钮,在弹出的对话框中可以重新命名模板,如图3—16所示。

图3—16重新命名模板

 

11.选中工程树中DebugRel子树,用Delete键删除。
提示:在系统工程树中Debug子树是下面生成的应用程序的调试版本,在生成的目标代码中,包含了系统的调试信息。Release子树是应用程序的发行版本,生成的代码中不包括调试信息,而且编译器还针对速度和代码的大小进行优化。DebugRel子树是一个折衷版本,通常用不到,所以,在这里删除。

  12.至此,工程文件设置完毕。因为设置过程比较繁琐,可以保存此工程,下次新建项目的时候复制即可。
提示:可以使用File | Save as Template菜单把当前工程的设置保存为模板,如armRom.apj文件。把此文件复制到ARM SDT编译的\ARM251\Template目录下.以后创建工程的时候,就可以直接选择使用此模板了。模板文件也是一个工程文件(*.apj),
但是,模板文件中不包括工程中文件的信息,只有编译器环境的设置。

   13.把\Startup和INC、\SRC目录复制到workl的目录下(这些是工程需要的ARM配置文件,相关目录可在www.up-tech.corn网站中找到)。如图3-17所示,选中工程树中

Debug子树的Sources选项。通过菜单Project I Add Files to Sources,把\STARTUP和SRC
目录下的*.S和*.c文件加入到工程中。


图3—17加入工程的原文件

  14.选中工程树中Debug子树的IncludedFiles选项。通过菜单Project |Add Files to|IncludedFiles,把\STARTUP和UNC目录下的所有*.h文件都加入到工程中。

  15.选择File | New菜单,在对话框中选择C/C++source,如图3-18所示,新建一个
源文件文件。

图3—18新建源文件

  16.填入以下源码

  #include”..\startup\44b.h”
  #include”..\inc\44blib.h n
  #include”..\startup\option.h”
  #include n..\inc\def.h”
  int Main(int argc,char **argv)
  {
  Int i,j;
  i=0;
  j=0,
  for(;;){
  i++;
  j--;
  }
  return 0;
  }

 

3.4.2进行程序的在线仿真、调试
  1.回到ARM Project Manager,选中工程树中Debug子树,通过Project | Build workl.apj“Debug”菜单(或者工具栏中的相应按钮)编译整个工程。

  2.把ARM的JTAG仿真器连接到Pc机的并行口和开发板上,打开开发板的电源,运行仿真器的驱动程序UarmJTAG.exe。

  3.使用Project|Debugworkl.apj“Debug”菜单(或者工具栏中的相应按钮)启动ARMDebugger软件调试程序。

  4.在ARM Debugger中,通过Options |Configure Debugger菜单设置仿真器。如图3-19所示,在弹出的对话框中设置TargetEnvironment为Remote_A。


图3—19设置仿真器


5.单击Configure按钮,按照如图3-20所示,设置仿真器。


图3—20设置仿真器

6.设置完成以后,ARM Debugger开始通过仿真器装载程序,如图3.21所示。


图3-21装载程序

  7.装载完毕以后,通过ExecuteIGo菜单(或者工具栏中的相应按钮)运行程序。

  8.程序运行的时候,可以使用Execute | Stop菜单(或者工具栏中的相应按钮)暂停运行程序。如图3-22所示,在Execute窗口中将显示出程序暂停的位置。

图3—22显示出程序暂停的位置

  9.通过Execute | Step菜单(或者工具栏中的相应按钮)可以单步运行程序,也可以用Step In、Step Out菜单命令进入或者跳出函数的调用。
  10.在程序停止运行的时候,选择View | Source Files菜单命令,可以打开如图3—23示的源程序列表窗口,双击列表中的文件名可以查看相应的源文件。

图3-23 查看源文件



  11.在源文件列表中打开main.c文件。选择源文件中的某一行,右击鼠标,如图3-24所示,用Toggle Breakpoint快捷菜单命令可以设置断点,使程序运行到这里停下来。

图3-24 设置断点

  12.使用在View菜单下的Registers、Variables和Memory命令可以查看工作寄存器者内存变量。读者可以逐一地尝试,为以后调试程序打下基础。

3.4.3下载程序

  当程序调试无误后,要将最后发行的程序下载到开发板中,这样开发板每次启动后会
动运行这些程序。
  1.回到ARM Project Manager,选中工程树中Release子树,通过Project|Build workl。asp"Release"菜单(或者工具栏中的相应按钮)编译整个工程。
  2.运行Windows系统下的超级终端(HyperTerminal)应用程序,如图3-25所示新建个终端通信,取名为arm。单击“确定”按钮。

图3.25创建超级终端

  3.选择终端的连接的串口(如串行口I),如图3-26所示,设置通信的格式和协议。



图3-26设置串行口

  4.设置完成超级终端以后,打开开发板,这时计算机和开发板通过串行口建立了通信。如图3.27所示。

图3—27和嵌入式开发板建立通信

  5.重起开发板,按住开发板上的任意一键,使开发板进入BIOS设置状态,如图3-28所示。在PC键盘上按相应的键,可以执行菜单项中相应的操作。

图3-28系统的BIOS设置程序

 6.打开超级终端,按PC键盘的R键,激活嵌入式开发板上的USB。这时超级端上会显示“USBN9603 is found!”,表示USB连接成功。

  7.运行USB通信程序ArmDvk.exe,这时可以看到开发板中的文件,如图3-29所示


图3—29 USB通信程序

  8.选择“复制到开发板”,在弹出的对话框中找到system.bin文件,并将其下载到开发板中。

  9.复位系统,运行并检查输出结果。
   提示:system.bin文件是系统通过BIOS引导以后,装入内存中运行的默认文件名。


3.4.4 Source Insight简介

  Source Insight是一款源码编辑和查看软件,其界面友好,变量和函数名都以特定的颜色表示出来,非常直观。而其和ARM SDT配合得也非常好,不会因为两个软件打开同一个文件而发生错误。在Source Insight中编辑好源码后,将其保存,就可以在ARM SDT中编译了。下面将简单介绍一下Source Insight的使用方法。

   1.启动Source Insight,用菜单Project|New pmject新建一个Source Insight的工程(workl)。在Project Setting对话框中使用默认的设置即可。

   2.在Add and Remove Files对话框中单击Add All按钮。设置弹出的对话框,如图3-30所示。

图3.30添加文件

  3.单击OK按钮,把..\workl\目录下的所有有效的C源代码文件(包括:*.c和*.h文件)加入到Source Insight的工程中。其结果如图3-31所示。


图3-31把文件加入到工程中


  4.通过Source Insight的Files|Open菜单(或者相应的工具栏按钮),打开main.c文件,可以看到,Source Insight是一个很方便的C代码阅读和编辑工具。把workl的文件加入到Source Insight的工程中以后,它会自动分区C语言的语法,把变量、函数和宏定义都显示出来便于阅读。读者可以尝试通过Search菜单下的命令(或者相应的工具栏按钮)在各个文件的不同的函数和变量的定义之间跳转。这是Source Insight的方便之处,很适合于编辑大型软件。

 

 


返回 上一页 下一页   信息发布:工号01   转引自: 【 】 【打印】 【关闭

关于我们 ┋ 友情链接


深圳市福田区海滨广场恒福花园恒华阁11F
电话:0755-88305872 传真:0755-88305880
Copyright©2005-2007 无忧电子开发网版权所有

粤ICP备05064233号