ARM嵌入式系统开发典型模块

ARM嵌入式系统开发典型模块
ARM嵌入式系统开发典型模块

“黑色经典”系列之《ARM嵌入式系统开发典型模块》

第4章JTAG调试接口模块

《ARM嵌入式系统开发典型模块》

4.1 JTAG调试接口简介

JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,主要用于芯片内部测试及对系统进行仿真、调试。JTAG技术是一种嵌入式调试技术,它在芯片内部封装了专门的测试电路TAP(Test Access Port,测试访问口),通过专用的JTAG测试工具对内部节点进行测试。目前大多数比较复杂的器件都支持JTAG协议,如ARM、DSP、FPGA 器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为测试模式选择、测试时钟、测试数据输入和测试数据输出。

JTAG测试允许多个器件通过JTAG接口串联在一起,形成一个JTAG链,能实现对各个器件分别测试。JTAG接口还常用于实现ISP(In-System Programmable在线系统编程)功能,如对Flash器件进行编程等。通过JTAG接口,可对芯片内部的所有部件进行访问,因而是开发调试嵌入式系统的一种简洁高效的手段。

4.2 JTAG接口的结构

4.2.1 JTAG接口的主要结构

在硬件结构上,JTAG接口包括2部分:JTAG端口和控制器。与JTAG接口兼容的器件件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC或者是其他符合IEEE 1149.1规范的芯片。IEEE 1149.1标准中规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元,称为边界扫描单元BSC(Boundary Scan cell)。它将JTAG电路与内核逻辑电路联系起来,同时隔离内核逻辑电路和芯片引脚,由集成电路的所有边界扫描单元构成边界扫描寄存BSR(Boundary Scan Register)。边界扫描寄存器电路仅在进行JTAG测试时有效,在集成电路正常工作时无效,不影响集成电路的功能。具有JTAG接口的芯片内部结构如图4.1所示。

在对多个具有JTAG芯片编程时,可以组成JTAG菊花链结构(Daisy chain),是一种特殊的串行编程方式。每片TDI输入端与前面一片的TDO输出端相连,最前面一片的TDI端和最后一片的TDO端与JTAG编程接口的TDI、TDO分别相连,如图4.2所示。链中的器件数可以很多,只要不超出接口的驱动能力即可。通过状态机控制,可以使非正在被编程器件的TDI端直通TDO端,这样就可以使数据流形成环路,对各器件按序进行编程。使用者可以通过读取每个芯片特有的识别码知道该器件在链中的位置。

《ARM嵌入式系统开发典型模块》

图4.1 JTAG接口芯片内部结构图

图4.2 JTAG菊花链结构图

(1)指令寄存器IR:由2个或更多个指令寄存单元和指令译码器组成,通过它可以串行输入执行各种操作的指令。

(2)数据寄存器组:是一组基于电路的移位寄存器。操作指令被串行装入由当前指令所选择的数据寄存器。随着操作的执行,测试结果被移出。

(3)边界寄存器DR:在内部逻辑电路和各引脚之间均插入了一串边界扫描单元,形成了由TDI到TDO之间的边界寄存器链。

(4)旁路寄存器BP:它只是1位寄存器。它的一端与TDI相连,另一端与TDO相连。在指令控制下,由TDI输入的数据可以直接经由本片的旁路寄存器送到TDO。使用旁路寄存器,可以越过片1、片2的边界寄存器,仅经过它们的旁路寄存器直接向片3输入数据。

(5)测试访问端口(TAP)控制器:TAP控制器是一个16状态的莫尔型同步时序电路,响应于测试时钟TCK 的上升沿。在TCK和TMS协同配合下确定来自TDI的串行数据是指令码还是测试码,进而产生ClockDR、ClockIR、UpdateIR、UpdateDR、ShiftDR和Mode、Control 等信号,实现对IR和DR的设置和控制。

(6)测试总线:这种芯片至少有4个供边界扫描用的附加引脚:TCK、TMS、TDI和TDO。还可以另设一个引脚TRST。TCK是测试时钟输入引脚,TMS是测试方式选择引脚,TDI是测试用输入引脚,TDO是测试用输出引脚。这4个引脚构成了测试总线。TRST供TAP控制器复位用。

4.2.2 JTAG引脚定义

JTAG接口主要包括4个引脚:TMS、TCK、TDI和TDO以及一个可选配的引脚TRST,用于驱动电路模块和控制执行规定的操作。各引脚的功能如下。

(1)TCK(Test Clock Input):JTAG的测试时钟,为TAP控制器和寄存器提供测试参考。在TCK的同步作用下通过TDI和TDO引脚串行移入或移出数据及指令。同时,TCK为TAP 控制器状态机提供时钟。

(2)TMS:TAP控制器的模式输入信号。TCK的上升沿时刻TMS的状态确定TAP控制器即将进入的工作状态。通常TMS引脚具有内部上拉电阻,以保证该引脚在没有驱动时处于逻辑1状态。

(3)TDI:JTAG指令和数据寄存器的串行数据输入端。TAP控制器的当前状态以及保存在指令寄存器中的具体指令决定对于一个特定的操作由TDI装入哪个寄存器。在TCK的上升沿时刻,TDI引脚状态被采样,结果送到JTAG寄存器组。

(4)TDO:JTAG指令和数据寄存器的串行数据输出端。TAP控制器的当前状态以及保持在指令寄存器中的具体指令决定对于一个特定的操作哪个寄存器的内容送到TDO输出。对于任何已知的操作,在TDI和TDO之间只能有一个寄存器(指令或数据)处于有效连接状态。TDO在TCK的下降沿改变状态,并且只在数据通过器件移动过程中有效。该引脚在其他时间处于三态状态。

(5)TRST:测试复位输入信号,低电平有效,为TAP控制器提供异步初始化信号。

《ARM嵌入式系统开发典型模块》

4.3 JTAG接口的内部操作

4.3.1 边界扫描

在JTAG调试当中,边界扫描(Boundary-Scan)是一个很重要的概念。边界扫描技术的基本思想是在靠近芯片的输入输出管脚上增加一个移位寄存器单元。因为这些移位寄存器单元都分布在芯片的边界上(周围),所以被称为边界扫描寄存器单元(Boundary-Scan Register Cell)。当芯片处于调试状态的时候,这些边界扫描寄存器可以将芯片和外围的输入输出隔离开来。通过这些边界扫描寄存器单元,可以实现对芯片输入输出信号的观察和控制。对于芯片的输入管脚,可以通过与之相连的边界扫描寄存器单元把信号(数据)加载到该管脚中去;对于芯片的输出管脚,也可以通过与之相连的边界扫描寄存器“捕获”(CAPTURE)该管脚上的输出信号。

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

利用边界扫描链可以实现对芯片的输入输出进行观察和控制。边界扫描链由若干具有相同结构的扫描单元组成,其基本结构与控制如图4.3所示。

图4.3 扫描链与扫描单元结构与控制

边界扫描单元的控制信号包括2类:一类是由TAP控制器产生的时序控制信号,另一类

是由指令译码器产生的译码信号。

扫描链的时序,大致可分为3个阶段。

(1)捕获阶段:扫描单元从并行的数据输入捕获数据到S触发器。

(2)移位阶段:扫描单元将S触发器中的值,串行移位到下一级扫描单元的S触发器中,并将其前一级扫描单元S触发器中的值移入。

(3)更新阶段:所有扫描单元并行地将其S触发器中的值,输入到U触发器中。为实现这3个阶段,需要TAP控制器产生的3个控制信号。此外,还需要一个指令译码信号,控制是否将U触发器中的值传入核心逻辑。表4.1给出了一种符合JTAG标准的边界扫描链的控制信号。

表4.1 边界扫描链中扫描单元的控制信号

问对象。下面,让我们从TAP(Test Access Port)开始。

TAP是一个通用的端口,通过TAP可以访问芯片提供的所有数据寄存器(DR)和指令存器(IR)。对整个TAP的控制是通过TAP Controller来完成的。TAP总共包括5个信号,TCK、TMS、TDI、TDO和TRST,其中4个是输入信号接口,另外1个是输出信号接口,上面已经作了介绍。一般,我们见到的开发板上都有一个JTAG接口,该JTAG接口的主要信号接口就是这5个。

通过TAP接口,对数据寄存器(DR)进行访问的一般过程如下。

(1)通过指令寄存器(IR),选定一个需要访问的数据寄存器。

(2)把选定的数据寄存器连接到TDI和TDO之间。

(3)由TCK驱动,通过TDI,把需要的数据输入到选定的数据寄存器当中去;同时把选定的数据寄存器中的数据通过TDO读出来。

下面我们一起来了解一下TAP的状态机。TAP的状态机如图4.4所示,共有16个状态。

《ARM嵌入式系统开发典型模块》

在图中,每个六边形表示一个状态,六边形中标有该状态的名称和标识代码。图中的箭头表示了TAP Controller内部所有可能的状态转换流程。状态的转换是由TMS控制的,所以在每个箭头上标有tms = 0或者tms = 1。在TCK的驱动下,从当前状态到下一个状态的转换是由TMS信号决定。假设TAP Controller的当前状态为Select-DR-Scan,在TCK的驱动下,如果TMS=0,TAP Controller进入Capture-DR状态;如果TMS=1,TAP Controller进入Select-IR-Scan状态。

图4.4 TAP控制器状态转换图

这个状态机看似很复杂,理解以后会发现这个状态机其实很直接、很简单。观察上图可以发现,除了Test-Logic Reset和Test-Run/Idle状态外,其他的状态有些类似。例如Select-DR-Scan和Select-IR-Scan对应,Capture-DR和Capture-IR对应,Shift-DR和Shift-IR 对应,等等。在这些对应的状态中,DR表示Data Register,IR表示Instruction Register。寄存器分为2大类,数据寄存器和指令寄存器。标识有DR的状态是用来访问数据寄存器的,而标识有IR的状态是用来访问指令寄存器的。下面具体介绍它们表示的意义及功能。

(1)Test-Logic Reset

系统上电后,TAP Controller自动进入该状态。在该状态下,测试部分的逻辑电路全部被禁用,以保证芯片核心逻辑电路的正常工作。通过TRST信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。前面我们说过TRST是可选的一个信号接口,这是因为在TMS上连续加5个TCK脉冲宽度的1信号也可以对测试逻辑电路进行复位,使得TAP Controller进入Test-Logic Reset状态。所以,在不提供TRST信号的情况下,也不会产生影响。在该状态下,如果TMS一直保持为“1”,TAP Controller将保持在Test-Logic Reset状态下;如果TMS由“1”变为“0”(在TCK的上升沿触发),将使TAP Controller进入Run-Test/Idle状态。

(2)Run-Test/Idle

这是TAP Controller在不同操作间的一个中间状态。这个状态下的动作取决于当前指令寄存器中的指令。有些指令会在该状态下执行一定的操作,而有些指令在该状态下不需要执行任何操作。在该状态下,如果TMS一直保持为0 TAP Controller将一直保持在Run-Test/Idle 状态下;如果TMS由0变为1(在TCK的上升沿触发),将使TAP Controller进入Select-DR-Scan 状态。

(3)Select-DR-Scan

这是一个临时的中间状态。如果TMS为0。(在TCK的上升沿触发),TAP Controller进入Capture-DR状态,后续的系列动作都将以数据寄存器作为操作对象;如果TMS为1(在TCK的上升沿触发),TAP Controller进入Select-IR-Scan状态。

(4)Capture-DR

当TAP Controller在这个状态中,在TCK的上升沿,芯片输出管脚上的信号将被“捕获”到与之对应的数据寄存器的各个单元中去。如果TMS为0(在TCK的上升沿触发),TAP Controller进入Shift-DR状态;如果TMS为1(在TCK的上升沿触发),TAP Controller进入Exit1-DR状态。

(5)Shift-DR

在这个状态中,由TCK驱动,每一个时钟周期,被连接在TDI和TDO之间的数据寄存器将从TDI接收一位数据,同时通过TDO输出一位数据。如果TMS为0(在TCK的上升沿触发),TAP Controller保持在Shift-DR状态;如果TMS为1(在TCK的上升沿触发),TAP Controller进入到Exit1-DR状态。假设当前的数据寄存器的长度为4。如果TMS保持为0,那么在4个TCK时钟周期后,该数据寄存器中原来的4位数据(一般是在Capture-DR状态中捕获的数据)将从TDO输出来;同时该数据寄存器中的每个寄存器单元中将分别获得从

《ARM嵌入式系统开发典型模块》

TDI输入的4位新数据。

(6)Update-DR

在Update-DR状态下,由TCK上升沿驱动,数据寄存器当中的数据将被加载到相应的芯片管脚上去,用以驱动芯片。在该状态下,如果TMS为0,TAP Controller将回到Run-Test/Idle 状态;如果TMS为1,TAP Controller将进入Select-DR-Scan状态。

(7)Select-IR-Scan

这是一个临时的中间状态。如果TMS为0(在TCK的上升沿触发),TAP Controller进入Capture-IR状态,后续的系列动作都将以指令寄存器作为操作对象;如果TMS为1(在TCK的上升沿触发),TAP Controller进入Test-Logic Reset状态。

(8)Capture-IR

当TAP Controller在这个状态中,在TCK的上升沿,一个特定的逻辑序列将被装载到指令寄存器中去。如果TMS为0(在TCK的上升沿触发),TAP Controller进入Shift-IR状态;如果TMS为1(在TCK的上升沿触发),TAP Controller进入Exit1-IR状态。

(9)Shift-IR

在这个状态中,由TCK驱动,每一个时钟周期,被连接在TDI和TDO之间的指令寄存器将从TDI接收一位数据,同时通过TDO输出一位数据。如果TMS为0(在TCK的上升沿触发),TAP Controller保持在Shift-IR状态;如果TMS为1(在TCK的上升沿触发),TAP Controller进入到Exit1-IR状态。假设指令寄存器的长度为4。如果TMS保持为0,那么在4个TCK时钟周期后,指令寄存器中原来的4bit长的特定逻辑序列(在Capture-IR状态中捕获的特定逻辑序列)将从TDO输出来,该特定的逻辑序列可以用来判断操作是否正确;同时指令寄存器将获得从TDI输入的一个4bit长的新指令。

(10)Update IR

在这个状态中,在Shift IR状态下输入的新指令将被用来更新指令寄存器。

下面介绍指令寄存器和数据寄存器访问的一般过程。

首先系统上电,TAP Controller进入Test-Logic Reset状态,然后依次进入:Run-Test/Idle →Select-DR-Scan→Select-IR-Scan→Capture-IR→Shift-IR→Exit1-IR →Update-IR,最后回到Run-Test/Idle状态。在Capture-IR状态中,一个特定的逻辑序列被加载到指令寄存器当中,然后进入到Shift-IR状态。在Shift-IR状态下,通过TCK的驱动,可以将一条特定的指令送到指令寄存器当中去。每条指令都将确定一条相关的数据寄存器。然后从Shift-IR→Exit1-IR →Update-IR。在Update-IR状态,刚才输入到指令寄存器中的指令将用来更新指令寄存器。最后,进入到Run-Test/Idle状态,指令生效,完成对指令寄存器的访问。

然后当前可以访问的数据寄存器由指令寄存器中的当前指令决定。要访问由刚才的指令选定的数据寄存器,需要以Run-Test/Idle为起点,依次进入Select-DR-Scan→Capture-DR→Shift-DR→Exit1-DR→Update-DR,最后回到Run-Test/Idle状态。在这个过程当中,被当前指令选定的数据寄存器会被连接在TDI和TDO之间。通过TDI和TDO,就可以将新的数据加载到数据寄存器当中去,同时,也可以捕获数据寄存器中的数据。具体过程如下。在Capture-DR 状态中,由TCK驱动,芯片管脚上的输出信号会被“捕获”到相应的边界扫描寄存器单元中

去。这样,当前的数据寄存器中就记录了芯片相应管脚上的输出信号。接下来从Capture-DR 进入到Shift-DR状态中去。在Shift-DR状态中,由TCK驱动,在每一个时钟周期内,一位新的数据可以通过TDI串行输入到数据寄存器当中去,同时,数据寄存器可以通过TDO串行输出一位先前捕获的数据。在经过与数据寄存器长度相同的时钟周期后,就可以完成新信号的输入和捕获数据的输出。接下来通过Exit1-DR状态进入到Update-DR状态。在Update-DR 状态中,数据寄存器中的新数据被加载到与数据寄存器的每个寄存器单元相连的芯片管脚上去。最后,回到Run-Test/Idle状态,完成对数据寄存器的访问。

上面就是通过TAP对数据寄存器访问的一般流程。下面举一个更直观的例子。

现在假设TAP Controller处在Run-Test/Idle状态,指令寄存器中已经成功地写入了一条新的指令,该指令选定的是一条长度为6的边界扫描链。下面介绍实际如何来访问这条边界扫描链。图4.5所示的是测试芯片及其被当前指令选定的长度为6的边界扫描链。可以看出,当前选择的边界扫描链由6个边界扫描移位寄存器单元组成,并且被连接在TDI和TDO之间。TCK时钟信号与每个边界扫描移位寄存器单元相连。每个时钟周期可以驱动边界扫描链的数据由TDI到TDO的方向移动一位,这样,新的数据可以通过TDI输入一位,边界扫描链的数据可以通过TDO输出一位。经过6个时钟周期,就可以完全更新边界扫描链里的数据,而且可以将边界扫描链里的捕获的6位数据通过TDO全部移出来。

图4.5 测试芯片及其当前选定的边界扫描链

图4.6~图4.11表示了边界扫描链的访问过程。图4.6表示了芯片和边界扫描链的初始化状态,在测试状态下,芯片的外部输入和输出被隔离开了,芯片的输入和输出可以通过相应的边界扫描链来观察和控制。在图4.6中,扫描链里的每个移位寄存器单元的数据是不确定的,所以在图中用X表示,整个扫描链里的数据序列是XXXXXX。要从TDI输入到测试芯

《ARM嵌入式系统开发典型模块》

片上的数据序列是:101010。同时要从TDO 得到芯片相应管脚上的状态。

现在TAP Controller 从Run-Test/Idle 状态经过Select-DR-Scan 状态进入到Capture-DR 状态,在Capture-DR 状态当中,在一个TCK 时钟的驱动下,芯片管脚上的信号状态全部被捕获到相应的边界扫描移位寄存器单元当中去,如图4.7所示。从图4.7中可以看出,在进入Capture-DR 状态后,经过一个TCK 时钟周期,扫描链中的数据序列变成了111000。在数据捕获完成以后,从Capture-DR 状态进入到Shift-DR 状态。在Shift-DR 状态中,将通过6个TCK 时钟周期来把新的数据序列101010通过TDI 输入到边界扫描链当中去;同时,将边界扫描链中捕获的数据序列111000通过TDO 输出。

在进入到Shift-DR 状态后,每经过一个TCK 时钟驱动,边界扫描链从TDO 输出一位数据;同时,从TDI 接收一位新的数据。图4.8所示的是在Shift-DR 状态下,1个TCK 时钟周期后的扫描链的变化。图4.9所示的是在Shift-DR 状态下,两个TCK 时钟周期后的扫描链的变化。此时,扫描链已经从TDI 串行得到了两位新数据,从TDO 也串行输出了两位数据。在TCK 时钟的驱动下,这个过程一直继续下去。图4.10所示的是在经过6个TCK 时钟周期以后扫描链的情况。从图4.10中可以看到,边界扫描链当中已经包含了新的数据序列101010。在TDO 端,经过6个TCK 时钟驱动以后,也接收到了在Capture-DR 状态下捕获到的数据序列111000。到目前为止,虽然扫描链当中包含了新的数据序列101010,但测试芯片的管脚上的状态还是保持为111000。下一步,需要更新测试芯片相应管脚上的信号状态。要实现更新,TAP Controller 从Shift-DR 状态,经过Exit1-DR 状态,进入到Update-DR 状态。在Update-DR 状态中,经过一个周期的TCK 时钟驱动,边界扫描链中的新数据序列将被加载到测试芯片的相应管脚上去,如图4.11所示。从图4.11可以看出,测试芯片的状态已经被更新,响应管脚上的状态已经从111000变为101010。最后从Update-DR 状态回到Run-Test/Idle 状态,完成对选定的边界扫描链的访问。

图4.6 边界扫描链的访问过程(1)

DEVICE UNDER

TEST

《ARM 嵌入式系统开发典型模块》

图4.8 边界扫描链的访问过程(3)

DEVICE UNDER

TEST

图4.10 边界扫描链的访问过程(5)

在器。对于特定的指令和数规定的一些

l

指令寄存器允许特定的指令被装载到指令寄存器当中,用来选择需要执行的测试,或者选择需要访问的测试数据寄存器。每个支持JTAG调试的芯片必须包含一个指令寄存器。

l Bypass寄存器

Bypass寄存器是一个1位的移位寄存器,通过BYPASS指令,可以将Bypass寄存器连接到TDI和TDO之间。在不需要进行任何测试的时候,将Bypass寄存器连接在TDI和TDO 之间,在TDI和TDO之间提供一条长度最短的串行路径。这样允许测试数据可以快速地通过当前的芯片送到开发板上别的芯片上去。

l Device identification寄存器

Device identification寄存器中可以包括生产厂商的信息、部件号码和器件的版本信息等。使用IDCODE指令,就可以通过TAP来确定器件的这些相关信息。

l Boundary-Scan寄存器

《ARM嵌入式系统开发典型模块》

Boundary-Scan寄存器就是前面例子中说到的边界扫描链。通过边界扫描链,可以进行部件间的连通性测试。当然,更重要的是可以对测试器件的输入输出进行观测和控制,以达到测试器件的内部逻辑的目的。INTEST指令是在IEEE 1149.1标准里面定义的一条很重要的指令:结合边界扫描链,该指令允许对开发板上器件的系统逻辑进行内部测试。在ARM JTAG 调试当中,这是一条频繁使用的测试指令。

前面讲过,寄存器分为两大类:指令寄存器和数据寄存器。上面提及的Bypass寄存器、Device Identification寄存器和Boundary-scan寄存器(边界扫描链),都属于数据寄存器。

JTAG必须实现的指令有3条:Sample/Preload、Extest和Bypass。其详细描述见表4.2。JTAG指令系统的扩展性很强,设计者可以根据需要插入任意条自定义指令。同时JTAG标准本身定义了一些可选指令,加强了测试能力。

表4.2 JTAG指令

《ARM 嵌入式系统开发典型模块》 4.4 JTAG 接口的定义

目前,JTAG 接口的连接有2种标准,即14针接口和20 针接口,其接口形状图核接口定义分别如图4.12和图4.13所示。

图4.12 14针JTAG 接口

14针JTAG 接口的接口定义如表4.3所示。

20针JTAG 接口的形状如图4.13所示。

图4.13 20针JTAG 接口

20针JTAG 接口的接口定义如表4.4所示。

表4.4

20针JTAG 接口定义 引脚

名称 描述 1 VTref

目标板参考电压,接电源

2 VCC 接电源

3 nTRST 测试系统复位信号

4、6、8、10、12、14、16、18、20 GND 接地

5 TDI 测试数据串行输入

7 TMS 测试模式选择

9 TCK 测试时钟

11 RTCK 测试时钟返回信号

13 TDO 测试数据串行输出

15 nRESET 目标系统复位信号

17、19 NC 未连接

4.5 JTAG接口的应用

通过JTAG接口可以进行嵌入式系统电路板及芯片的测试,也可以实现对电路板上的Flash编程。要通过JTAG接口对系统板上Flash编程,可以利用专用的硬件控制器或独立的编程器来访问JTAG器件实现,也可以直接用电缆线把PC机并行口与嵌入式系统的微处理器的JTAG引脚连接起来,由PC机上的程序模拟JTAG时序实现。嵌入式系统的Flash芯片的地址线、数据线和控制信号线接到嵌入式系统带JTAG接口的微处理器相应引脚上。在对Flash编程时,PC机上运行的程序控制PC机发送指令或数据到嵌入式系统微处理器内部的边界扫描寄存器里,再把此数据或指令通过JTAG专用指令传送给Flash,从而将代码写入Flash中。

设计一个远程数据采集系统。采用三星公司的S3C44B0X型微处理器,该微处理器带有JTAG接口,利用该接口可对Flash写入数据。连接如图4.14所示。使用PC机并行接口中的几条数据线和一条信号线与嵌入式系统的S3C44B0X型微处理器的JTAG接口相连,读写Flash的控制信号由微处理器产生,微处理器的JTAG指令有10条,其中EXTEST指令将选择的扫描链置为测试模式,BYPASS指令在TDI和TDO之间连接一个1位移位寄存器和一个旁路寄存器。这2条指令是1EEE 1149.1标准规定的,对几乎所有JTAG兼容芯片,这2条指令操作码相同,分别为0000和1111。

该采集系统采用SST的29EE010作为系统程序存储Flash,存储数据以字节为单位。它有1024页,每页有128B,存储容量为128KB。对Flash编程时,一般先要检查Flash设备的识别码,然后执行擦除命令,在擦除完成后,进行写入数据。结合29EE010的特性,在PC 机上运行的通过JTAG接口对嵌入式系统上Flash编程的程序框图如图4.15所示。JTAG对Flash的在线编程是通过PC机并行接口来完成的。

《ARM 嵌入式系统开发典型模块》

图4.14 利用微处理器的JTAG 接口Flash 编程的连接图

图4.15 利用JTAG 对Flash 编程的流程图

4.6 在Windows 2000下使用JTAG

JTAG技术主要用于芯片内部测试及对系统进行仿真、调试,是一种嵌入式调试技术。

JTAG是一个协议程序,作用是将调试器ADW发送到网上的调试信息拦截并转换为发送到并口的JTAG信号。因此在使用ADW进行仿真调试时或者烧录Flash时,一定要运行这个程序。下载JTAG.exe程序后,在Windows 98下直接双击JTAG.exe即可启动该程序,但是在Windows 2000 和Windows XP下则必须进行配置,操作步骤如下。

(1)下载JTAG的可执行程序JTAG.exe和其他四个相关文件:giveio.sys、porttalk.sys、loaddrv.exe和porttalk.reg。

(2)将下载的giveio.sys和porttalk.sys两个系统文件拷贝到c:\winnt\system32\drivers\下,(Windows XP系统则拷贝到c:\windows\system32\drivers\下),双击loaddrv.exe,出现JTAG 驱动程序安装界面。

程序启动后,编辑框中的路径是“c:\windows\system32\drivers\”,把它改为“C:\winnt\ system32\drivers\giveio.sys”,Windows XP系统则无需修改。

(3)单击JTAG驱动程序安装界面的“Install”按钮,界面上将显示“Operation was successful”。

(4)再单击JTAG驱动程序安装界面的“Start按钮”,同样看到“Operation was successful”,此后再次单击Start按钮则会出现“Service already running”的提示,说明程序已经安装成功。

(5)单击“OK”按钮退出loaddrv.exe。

(6)如果需要确认,可以进入设备管理器查看,打开设备管理器,依次单击“查看/显示隐藏设备”,然后在非即插即用驱动程序中可以看到giveio项。如果不想每次计算机启动后都运行loaddrv.exe,将giveio改为自动运行,如图4.16所示。

(7)双击porttalk.reg文件,将porttalk的信息加入注册表。

(8)在“开始”/“运行”中输入:c:\jtag\allowio.exe jtag.exe /a,jtag.exe 就开始运行了。这样就可以在Windows 2000和Windows XP下进行ADW的调试和Flash烧录等操作了。

图4.16 在设备管理器中查看JTAG

《ARM嵌入式系统开发典型模块》

ARM的嵌入式Linux应用程序开发设计

ARM的嵌入式Linux应用程序开发设计 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux 源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。1ARM处理器及开发板在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一 嵌入式系统已经渗透到人们工作、生活中的各个领域,嵌入式处理器已占分散处理器市场份额的94%。而嵌入式Linux系统也蓬勃发展,不仅继承了Linux源码开放、内核稳定高效、软件丰富等优势,还具备支持广泛处理器结构和硬件平台、占有空间小、成本低廉、结构紧凑等特点。 1 ARM处理器及开发板 在嵌入式领域,ARM已取得了极大的成功,造就了IP核商业化、市场化的神话。据统计,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体,一商中有19家是ARM的用户。ARM系列芯片已经被广泛的应用于移动电活、手持式计算机以及各种各样的嵌入式应用领域,成为世界上销量最大的32位微处理器。ARM已成为业界实际的RISC芯片标准。 ARM系列处理器根据各自特点应用于不同领域。从应用的角度上ARM芯片选择的一般原则:MMU;处理器速度;内置存储器容量;USB接口;GPIO数量;中断控制器;IIS(integrate interface ofsound)音频接口;nWAIT信号; RTC(real timeclock);LCD控制器;PWM输出等各项指标。 本文使用的是ARM9,其性能远远高过ARM7。开发板使用的是广州斯道信息技术有限公司的开发板,中央处理器是三星公司的S3C2410。ARM9具有以下特点:5级流水线;采用哈佛结构;高速缓存和写缓存的引入;支持MMU。 2 嵌入式Linux系统 嵌入式操作系统是嵌入式应用软件的基础和开发平台,它的出现解决了嵌入式软件开发标准化的难题。嵌入式系统具有操作系统的最基本的功能。目前主流的嵌入式系统有以下儿种:Linux、VxWorks、QNX、Windows CE、Palm OS。 嵌入式Linux操作系统具有一些独特的优势:层次结构及内核完全开放;强大的网络支持功能;具备一整套工具链;广泛的硬件支持特性。 嵌入式Linux系统有很多种。本文使用的是Red Hat9操作系统。 在安装有Windows和Linux双系统的PC上,系统会以Linux的GRUB作为引导装入器来选择启动二者。此时若直接删除Linux分区,会导致系统无法启动

基于ARM的嵌入式软件开发的研究

题目(基于ARM的嵌入式软件开发的研究) 院(系)名称信息工程学院 专业名称计算机科学与技术 学生姓名易国亮 学生学号1412210248 指导老师韩贝 2017年7月2日

摘要 嵌入式系统为控制、监视或辅助设备、机器或用于工厂运作的设备,ARM作为一种嵌入式系统处理器,以高性能、低功耗、低成本等优点占领了大部分市场。它一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等部分组成,用于实现对其他设备的控制、监视或管理等功能。 本文主要介绍了基于ARM-Linux的嵌入式系统的开发利用、嵌入式系统的概念、组成及嵌入式系统上的应用程序,简述了嵌入式系统的开发流程,最后预测了嵌入式系统的发展前景和发展方向。 关键词:ARM,嵌入式,Linux,嵌入式系统

Based on ARM embedded software development research Abstract Embedded system to control, monitor or auxiliary equipment, machines, or for the operation of the plant equipment, ARM processor, as a kind of embedded system, with high performance, low power consumption, low cost advantages, such as occupied most of the market. It usually consists of embedded microcontroller processor, peripheral hardware, embedded operating system and user application components, such as used to implement the control of the other devices, such as monitoring or management function. Based on ARM - Linux is mainly introduced in this paper the concept of development and utilization of the embedded system, embedded system, composition and application of embedded system, this paper expounds the development process of embedded system, finally forecasts the development prospect and development direction of the embedded system. Keywords:ARM, embedded Linux, embedded systems

ARM嵌入式系统开发综述.

视听研究所 主页:论坛: 所有资料均收集于各网站。 若您认为有关资料不适合公开,请联系newvideo@https://www.360docs.net/doc/0f16929094.html, 我们会第一时间删除。 感谢各位网友的无私奉献和支持! 加密时间:2008-2-1 获取更多权威电子书请登录 ARM 嵌入式系统开发综述 ARM 开发工程师入门宝典 获取更多权威电子书请登录 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个

系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU 或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM 嵌入式系统开发流程。 获取更多权威电子书请登录 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22)

嵌入式ARM期末考试试卷及复习题教学内容

一、填空题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、一般而言,嵌入式系统的构架可以分为4个部分:分别是(处理器)、存储器、输入/输出和软件,一般软件亦分为操作系统相关和(应用软件)两个主要部分。 2、根据嵌入式系统使用的微处理器,可以将嵌入式系统分为嵌入式微控制器,(嵌入式微处理器),(嵌入式DSP 处理器)以及片上系统。 3、操作系统是联接硬件与应用程序的系统程序,其基本功能有(进程管理)、进程间通信、(内存管理)、I/O 资源管理。 4、从嵌入式操作系统特点可以将嵌入式操作系统分为(实时操作系统)和分时操作系统,其中实时系统亦可分为(硬实时操作系统)和软实时系统。 5、内核负责管理各个任务,或者为每个任务分配CPU时间,并且负责任务之间的(通信),内核的基本服务是(任务切换)。 6、嵌入式开发一般采用(宿主机/目标机)方式,其中宿主机一般是指(PC机/台式机)。 7、哈佛体系结构数据空间和地址空间(分开),ARM7TDMI采用(冯诺依曼体系)的内核架构,ARM920T采用(哈佛)的内核架构。 8. ARM7TDMI采用(3)级流水线结构,ARM920TDMI采用(5)级流水线。 9 .按操作系统的分类可知,Dos操作系统属于顺序执行操作系统,Unix操作系统属于(分时)操作系统,VxWorks 属于(实时嵌入式)操作系统。 10、ARM7TDMI中,T表示支持16位Thumb指令集,D表示(在片可调试),M表示内嵌乘法器Multiplier,I表示(嵌入式ICE),支持在线断点和调试。 二、选择题(请将答案填入题后括号中):共10小题,每小题2分,满分20分。 1、要使CPU能够正常工作,下列哪个条件不是处理器必须满足的。( D ) (A) 处理器的编译器能够产生可重入代码(B)在程序中可以找开或者关闭中断 (C) 处理器支持中断,并且能产生定时中断(D)有大量的存储空间 2、下面哪种操作系统最方便移植到嵌入式设备中。(D) (A) DOS (B)unix (C) Windows xp (D)linux 3、下面哪个选项不是SUB设备的特点。( B ) (A) 串行通信方式(B)不可热拨插 (C) 分HOST、DEVICE和HUB (D)通信速率比RS232快 4、下面哪种嵌入式操作系统很少用于手机终端设备上。(C) (A) Symbian (B)WinCE (C) uc/os (D)linux 5、以下哪项关于SRAM和DRAM的区别是不对。(A) (A) SRAM比DRAM慢(B)SRAM比DRAM耗电多 (C) DRAM存储密度比SRAM高得多(D)DRM需要周期性刷新 6、uc/os操作系统不包含以下哪几种状态。(C) (A) 运行(B)挂起 (C) 退出(D)休眠 7、0x07&0x11的运算结果是。( A ) (A) 0x01 (B)0x11 (C) 0x17 (D)0x07 8、以下哪种方式不是uc/os操作系统中任务之间通信方式。(C) (A) 信号量(B)消息队列 (C) 邮件(D)邮箱 9、以下哪种方式不是文件系统的格式。(B) (A) FAT (B)DOS (C) NTFS (D)Ext 10、在将uc/os操作系统移植到ARM处理器上时,以下哪些文件不需要修改。( A ) (A) OS_CORE.C (B)include.h (C) OS_CPU.H (D)OSTaskInit 2. 下面哪点不是嵌入式操作系统的特点。( C )

一种基于ARM的嵌入式系统开发的方案详细讲解

一种基于ARM的嵌入式系统开发的方案详细讲解 1 背景介绍在日益信息化的社会中,各种各样的嵌入式系统已经全面渗透到日常生活的每一个角落。嵌入式系统的功能越来越复杂,这就使得一个嵌入式系统产品从市场需求立项到方案选择、样机研制、定型量产所需要的开发费用越来越多,所需开发时间越来越长。因此,高效的嵌入式系统设计方法就显得尤为重要。 1.1 传统的嵌入式系统设计方法 嵌入式系统开发的关键就是对核心部分进行功能验证。传统的验证方法是建模模拟和制作目标板评估。 通过建模来进行功能验证存在不足。首先就是耗时和准确性互相矛盾。建立高层次的模型需要的时间短,但是模拟不够准确。相反,低层次的模型可以达到满意的评估效果,但是建模耗时长。其次,建模模拟是静态的过程,不能很好地反映系统实际运行的情况。好的目标板,各部分连接已经固定。如果需要改动部分连接,只能重新设计制版。这样一来就会大大延长产品的上市时间,还会增加开发费用。新推出的嵌入式系统产品,开始设计时比较难把所有的技术细节考虑清楚,有时甚至是边设计边修改性能指标,因此直接制作专用的目标板原型已经不太适合复杂的嵌入式系统产品的设计。 1.2 嵌入式系统模块化设计方法 嵌入式系统设计要求做到可测性、高效性和灵活性。目前,嵌入式系统物理尺寸越来越小,功能越来越复杂。为了方便调试、维护系统,完全可测显得极为重要。另一方面,模块化的设计方法越来越引起人们的关注。模块化设计方法将复杂的系统合理地划分出不同的功能模块,然后充分利用已有的模块,设计新的模块,最后将这些模块连接起来组成目标系统。模块化的设计方法减少全新的设计、降低开发难度、节省开发成本、缩短开发时间,是一种高效的嵌入式系统设计方法。另外,各个模块连接的灵活性是非常重要的,它直接决定模块的组合能力。 2 基于ARM核的快速原型化平台嵌入式系统硬件有如下特点: 1、嵌入式硬件以嵌入式处理器为核心。嵌入式处理器的种类众多,功能各异。

ARM入门及嵌入式开发入门.

ARM 入门及嵌入式开发入门 1. 抓住51开发ARM 这几个月来我一直都爬在51的问题,自己都有一点笑自己了,用了4个月的时间,来巩固51的原理和程序,还好我自己算是走过来了,自己笨,身边的高才生又看不上51的原理,他们都比较“牛”,说51过时了,你问那个做什么???我比较郁闷!过时吗?我有一点怀疑? 他们不愿意说有他们自己的理由,没有人强求,靠自己好了。 我自己个人的观点:51是一个基础,而且还很重要,这是在我看了ARM 之后感觉到的。它可以加速你的ARM 学习速度,真得!不相信你试一试好了。 凡事要求一个速度、效率,不要做一些无用功,抓紧身边的每一个一分钟,人是活的,东西(知识、书)是死得,想要做的事情因此就简单了。 2. 我在网上看到了一篇很不错的ARM 文章,粘贴过来, 为了和像我一样在很少有人帮助的情况下,自学ARM 的难兄难弟们。 “ARM 怎么入门”。我不是高手,仍然是菜鸟。 但是回想起自己当时的迷茫,特意写了这篇东西,当作给和我一样的兄弟姐妹的帮助吧。问这个问题的人多半不是已经工作的工程师,而是和我一样是学生,所以这篇笔记就把看家当成我一样的菜鸟,高手勿怪。 首先声明:本人还没有找工作,事实上处于研究生刚毕业,还没开始找工作的空闲时间,44B0只是兴趣所在,打发时间。 所有看法完全是自己的感受,不代表任何他人。错了的观点各位帮我纠正。再次补充:很多朋友看了上面的话就问我为什么研究生毕业了还不找工作:)说是打发时间,其实是因为研究生的时候带了一个项目,申请提前毕业以后项目还有块尾巴,答应导师把项目做完再走:)就这么简单。男人总点负点责,呵呵

以下问题常被问到,我就想到哪说到哪吧。 一. 首先说说ARM 的发展 可以用一片大好来形容,翻开各个公司的网站,招聘里面嵌入式占据了大半工程师职位。 广义的嵌入式无非几种:传统的什么51、AVR 、PIC 称做嵌入式微控制器;ARM 是嵌入式微处理器;DSP ;FPGA 。 客观的讲,工作需求量上DSP 的需求比ARM 要多,而ARM 和FPGA 差不多。 DSP 因为数字处理与通信领域的空前发展而火暴,小到MP3摄像头,大到我们军品里的控制器,应用面很广。 FPGA 的兄弟一般做ASIC (特殊芯片设计,好象是这么翻译的)。而ARM 单纯说来并不比一个单片机强多少,但是它的独特就在于不断下降的价格和提升的性能。这完全依靠于ARM 公司的战略,厉害!!很佩服他们的战略眼光!! 值得注意的是:在找工作中,企业(著名的,小的不算)对单纯的ARM 硬件开发工程师并不比单片机重视,很少有大企业的职位里写“从事过ARM 开发优先”。写的多的是什么?“嵌入式LINUX ”到这相信大家看出来了吧,需要的是硬件中的软件。 二. ARM是硬件还是软件 很难说,ARM 是硬件,LINUX 是软件。ARM 的硬件多半已经模块化了,像我这样把板子改成这样的就算动的多的了,这同样是ARM 公司的战略,再次佩服。 实际中的LINUX 的开发工作更多,更耗时。从这方面说ARM 应该算是软件了。

ARM嵌入式技术的发展与应用

ARM嵌入式技术的发展与应用 WDB (北京信息科技大学仪器科学与光电工程学院)摘要:在信息化时代的今天,嵌入式系统的应用无处不在。从科研行业、军事领域,到商业发展、娱乐行业,甚至是人们的日常生活中,嵌入式系统——特别是ARM嵌入式系统的身影随处可见。本文将从嵌入式的概念入手,讨论ARM 嵌入式系统的发展历史、发展现状,及其应用,最后对ARM技术的发展前景进行预测。 关键词:嵌入式系统;ARM;微处理器

引言 嵌入式系统是指为特定应用而设计的专用计算机系统。它以应用为中心,以计算机技术为基础,软件硬件可以根据需要裁剪,满足对功能、可靠性、成本、体积、功耗等要求而专门设计的计算机系统,被广泛用于手持设备、电信交换机、汽车电子、医疗设备、多媒体电器、军事装备、航空等领域。[1]本文以ARM微处理器为主,介绍ARM嵌入式系统的种类、特点、结构以及操作系统等。

1 ARM嵌入式系统的发展 1.1 嵌入式系统的概念与特点 根据IEEE9(国际电气和电子工师协会)的定义,嵌入式系统定义为控制监视或者辅助设备机器和车间运行的装置。由此可以看出嵌入式系统是软件和硬件的综合体,可以涵盖机械等附属装置。[2]而按照历史性、本质性、普遍性要求,嵌入式系统应定义为:“嵌入到对象体系中的专用计算机系统”。 嵌入式系统作为一类特殊的计算机系统,自底向上包含以下三个部分:硬件平台、嵌入式操作系统、嵌入式应用程序。嵌入式系统的特点与定义不同,它是由定义中的三个基本要素衍生出来的。不同的嵌入式系统其特点会有所差异。 与“嵌入性”的相关特点:由于是嵌入到对象系统中,必须满足对象系统的环境要求,如物理环境(小型)、电气/气氛环境(可靠)、成本(价廉)等要求。 与“专用性”的相关特点:软、硬件的裁剪性;满足对象要求的最小软、硬件配置等。 与“计算机系统”的相关特点:嵌入式系统必须是能满足对象系统控制要求的计算机系统。与上两个特点相呼应,这样的计算机必须配置有与对象系统相适应的接口电路。[3] 1.2 ARM嵌入式的发展历史 ARM是Advanced RISC Machines的缩写,是微处理器行业的一家知名企业,该企业设计了大量廉价、高性能、低功耗的RISC处理器、相关技术及软件。可以这么说,ARM代表的不仅是一个企业,更代表了一种技术、一种微处理器,甚至一种产业的发展模式。[4] CISC 体系由于指令集庞大,指令长度不固定,指令执行周期有长有短,使

ARM嵌入式系统开发入门

获取更多权威电子书请登录https://www.360docs.net/doc/0f16929094.html, ARM嵌入式系统开发综述ARM开发工程师入门宝典

获取更多权威电子书请登录https://www.360docs.net/doc/0f16929094.html, 前言 嵌入式系统通常是以具体应用为中心,以处理器为核心且面向实际应用的软硬件系统,其硬件是整个嵌入式系统运行的基础和平台,提供了软件运行所需的物理平台和通信接口;而嵌入式系统的软件一般包括操作系统和应用软件,它们是整个系统的控制核心,提供人机交互的信息等。所以,嵌入式系统的开发通常包括硬件和软件两部分的开发,硬件部分主要包括选择合适的MCU或者SOC 器件、存储器类型、通讯接口及I/O、电源及其他的辅助设备等;软件部分主要涉及OS porting和应用程序的开发等,与此同时,软件中断调试和实时调试、代码的优化、可移植性/可重用以及软件固化等也是嵌入式软件开发的关键。 嵌入式系统开发的每一个环节都可以独立地展开进行详细的阐述,而本文的出发点主要是为嵌入式开发的初学者者提供一个流程参考。因为对于初学者在面对一个嵌入式开发项目的时候,往往面临着诸多困难,如选择什么样的开发平台?什么样的器件类型?在进行编译时怎样实现代码优化?开发工具该如何选择和使用?在进行程序调试时应该注意那些问题以及选择什么样的嵌入式OS 等等。希望通过本文,能帮助初学者了解有关ARM嵌入式系统开发流程。

获取更多权威电子书请登录https://www.360docs.net/doc/0f16929094.html, 目录 前言 (2) 1 嵌入式开发平台 (4) 1.1 ARM的开发平台: (4) 1.2 器件选型 (7) 2 工具选择 (11) 3 编译和连接 (13) 3.1 RVCT的优化级别与优化方向 (16) 3.2 Multifile compilation (21) 3.3调试 (22) 4 操作系统 (23) 4.1 哪里可以得到os 软件包 (Open Source and Linux Kernel) (25) 4.2 安装镜像 (26) 4.3 交叉编译 (26) 总结 (27)

嵌入式系统(ARM)开发平台选型(一)

嵌入式系统(ARM)开发平台选型(一) 摘要:本文从实际应用的角度出发,重点对Linux嵌入式系统开发中硬件平台选型问题进行论述。 关键词:嵌入式系统;ARM;Linux操作平台 1嵌入式Linux系统 嵌入式系统是软件和硬件的综合体。它是以应用为中心,以计算机技术为基础,软硬件可裁减,从而能够适应实际应用中对功能、可靠性、成本、体积、功耗等严格要求的专用计算机系统。Linux具有强大的功能,很好地支持了各种现代编程技术,将Linux应用于嵌入式系统的开发有如下一些优点: 1)内核完全开放,使得设计者可以自己设计和开发出真正的硬件实时系统和软件实时系统。 2)Linux本身具有一整套工具链,使用者可以较容易地自行建立嵌入式系统的开发环境和交叉编译及运行环境。 3)强大的网络支持,可以利用Linux的网络协议栈将其开发成为嵌入式的TCP/IP网络协议栈。 2硬件平台的选择 2.1处理器的选择 设计者在选择处理器时要考虑的主要因素有: (1)处理性能。处理器的性能取决于多个方面的因素,如时钟频率、内部寄存器的大小、指令是否对等处理所有的寄存器等。如果是面向高

性能的应用设计,那么建议考虑某些新的处理器,其价格相对低廉,如IBM和MotorolaPowerPC。 (2)技术指标。当前许多嵌入式处理器都集成了外围设备,采用这类CPU 可以减少系统的体积,降低系统的开发成本。开发人员首先考虑的是,系统所要求的一些硬件能否无需过多的胶合逻辑(GL,GlueLogic)就可以连接到处理器上;其次是考虑该处理器的一些支持芯片,如DMA控制器、内存管理器、中断控制器、串行设备、时钟等的配套。 (3)功耗。嵌入式微处理器最大并且增长最快的市场是手持设备、电子记事本、PDA、手机、GPS导航器、智能家电等消费类电子产品。这些产品中选购的微处理器,典型的特点是要求高性能、低功耗。 (4)软件工具。仅有一个处理器,没有较好的软件开发工具的支持也是不行的,因此选择合适的软件开发工具对系统的实现会起到很好的作用。 (5)内置调试工具。使用具有内置调试工具的处理器可以大大缩小调试周期,降低调试的难度。 (6)供应商是否提供评估板。许多处理器供应商可以提供评估板来验证理论是否正确,决策是否得当。 2.2硬件选择的其他因素 (1)生产规模。打算做一套,多套,还是规模生产,如果生产规模比较大,可以自己设计和制备硬件,这样可以降低成本。反之,最好从第三方购买主板和I/O板卡。

基于ARM的嵌入式系统应用开发

基于ARM的嵌入式系统应用开发

目录 摘要 (1) Abstract (2) 第1章绪论 (3) 1.1课题的来源与意义 (3) 1.2 课题的历史、现状及前景 (3) 1.2.1 嵌入式系统的历史 (3) 1.2.2嵌入式系统的现状 (4) 1.2.3 嵌入式系统的发展前景 (6) 1.3本文主要的工作和章节安排 (7) 第2章嵌入式系统简介 (8) 2.1嵌入式系统概述 (8) 2.2嵌入式系统的特点 (8) 2.3嵌入式系统的体系结构 (9) 2.4嵌入式操作系统的特点 (10) 第3章ARM处理器及开发板介绍 (12) 3.1 ARM处理器概述 (12) 3.2 ARM 处理器的特点及应用领域 (13) 3.2.1 ARM 处理器的特点 (13) 3.2.2 ARM 处理器的应用领域 (13) 3.3 ARM 的体系结构 (13) 3.4开发板概述 (14) 3.5 ARM7开发板详细介绍 (16) 3.5.1片上集成的功能 (17) 3.5.2 S3C44BOX功能结构框图 (18) 第4章嵌入式开发环境的搭建 (19) 4.1嵌入式交叉编译环境的搭建 (19)

4.1.1交叉编译 (19) 4.1.2交叉调试 (20) 4.2 Windows开发平台 (21) 4.2.1 ADS概述 (21) 4.2.2 超级终端 (22) 4.3 Bootloader 介绍 (22) 4.3.1概念 (22) 4.3.2 Bootloader启动流程 (23) 4.3.3 u-boot概述 (24) 第5章uClinux移植实现 (26) 5.1 Linux和uClinux (26) 5.1.1 Linux (26) 5.1.2 uClinux (27) 5.2uClinux移植过程 28 5.2.1 建立开发平台 (28) 5.2.2 uClinux内核的编译和裁剪 (28) 5.3下载与运行结果 (32) 第6章ARM板的实际应用—实时日历时钟RTC (34) 6.1实时日历时钟RTC概述 (34) 6.1.1RTC内部功能结构图 (35) 6.2特殊寄存器 (36) 6.2.1控制寄存器(RTCCON) (36) 6.2.2报警控制寄存器(RTCALM) (36) 6.2.3报警时间数据寄存器 (37) 6.2.4循环复位寄存器(RTCRST) (38) 6.2.5 BCD时间数据寄存器 (39) 6.2.6.时钟节拍计数寄存器(TICNT) (40) 6.3 RTC日历时钟的应用 (40) 6.3.1调试与运行结果 (40) 结束语 (42) 参考文献 (43)

arm嵌入式技术原理与应用答案上课讲义

a r m嵌入式技术原理 与应用答案

arm嵌入式技术原理与应用答案 【篇一:嵌入式系统原理与开发课后答案】 章嵌入式系统概述: 1、什么是嵌入式系统?是简单列举一些生活中常见的嵌入式系统的实例。p3 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 3、是比较嵌入式系统与通用pc的区别。p3 (1)嵌入式系统是专用的计算机系统,而pc是通用的计算机系统。 (2)技术要求不同,通用pc追求高速、海量的数据运算;嵌入式要求对象体系的智能化控制。 (3)发展方向不同,pc追求总线速度的不断提升,存储容量不断扩大;嵌入式追求特定对象系统的智能性,嵌入式,专用性。 4、嵌入式体统有哪些部分组成?简单说明各部分的功能与作用。p6(1)硬件层是整个核心控制模块(由嵌入式微处理器、存储系统、通信模块、人机接口、其他i/o接口以及电源组成),嵌入式系统的硬件层以嵌入式微处理器为核心,在嵌入式微处理器基础上增加电源电路、时钟电路、和存储器电路(ram和rom等),这就构成了一个嵌入式核心控制模块,操作系统和应用程序都可以固化在rom 中。 (2)中间层把系统软件与底层硬件部分隔离,使得系统的底层设备驱动程序与硬件无关。一般包括硬件抽象层(hardware abstract layer,hal)和板级支持包(board support package,bsp)。 (3)软件层由实时操作系统(real time operating system,rtos)、文件系 统、图形用户接口(graphical user interfaces,gui)、网络组件组成。 (4)功能层是面向被控对象和用户的,当需要用户操作是往往需要提供一个友好的人际界面。 5、嵌入式系统是怎么分类的?p7

相关主题
相关文档
最新文档