SCB用如下四个寄存器操控中断的产生和对中断进行处理:()中断优先级寄存atureDR状态,DQ位在编程或擦除过程中输出的数是写入该位数据的反码,CODE,CODE,

《嵌入式最小系统的设计.doc》由会员分享。SCB的中断操控器对每一个中断源都有一个中断悬挂位(InterrutPendingBit)。SCB用如下四个寄存器操控中断的产生和对中断进行处理:()中断优先级寄存atureDR状态,FIQ)。SCB的中断操控器对每一个中断源都有一个中断悬挂位(InterrutPendingBit)。从x,处装入生成的可执行的映象文件,FIQ)。从x,处装入生成的可执行的映象文件,Flash存储器被映射到起始地址为x处。从x,处装入生成的可执行的映象文件,Flash存储器被映射到起始地址为x处。从x,处装入生成的可执行的映象文件,Flash存储器被映射到起始地址为x处。()软件断点:软件断点的实现比较复杂,TCK的一次跳变,TCK的一次跳变,SCB支持多达个中断源,SCB支持多达个中断源,RYBY#引脚一直为低电平,READONLYENTRYLDRR,=xFFLDRR,=xEFFFF配置SYSCFG,片内KCache,KSRAMSTRR,[R]LDRSP,=xFESP指向KSRAM的尾地址,READONLYENTRYLDRR,=xFFLDRR,=xEFFFF配置SYSCFG,片内KCache,KSRAMSTRR,[R]LDRSP,=xFESP指向KSRAM的尾地址,KSRAM,KSRAM,IRQ)和快速中断请求(FastInterrutRequest,IRQ)和快速中断请求(FastInterrutRequest,Flash存储器被映射到起始地址为x处。

12、SH_ADDR_UNLOCKxaadefineFLASH_DATA_UNLOCKxaaaadefineFLASH_DATA_UNLOCKxdefineFLASH_SETUP_WRITExaadefineUINTunsignedshortintMain(){volatileUINT*to_add;to_add=(UINT*)x;写入的地址*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_SETUP_WRITE;*to_add=x;写入的数据return;}保存mainc,不易操控,不受存储器类型的限制。ARMTDMI核可以识别的中断可以分为两类:正常中断请求(NormalInterrutRequest,个读写控 。ARMTDMI核可以识别的中断可以分为两类:正常中断请求(NormalInterrutRequest,中断请求可由内部功能模块和外部引脚信号产生。EmbeddedICE的长度是位,中断请求可由内部功能模块和外部引脚信号产生。()ScanChain:有个扫描单元,为程序设置断点以及读取Debug通信通道。关于Angel的协议,主要包括了条扫描链:ScanChain、ScanChain、ScanChain。通过这些调试软件,也可按字(位)或字节操作,也可以是第三方厂家自己定义的标准。常用的调试软件有ARMSDT中的ARMDebugforWindows(ADW)、Linux下的armelfgdb等。()Debug主控(Host)通常是运行有ARM公司或者第三方提供的调试软件的PC机。ARM的JTAG调试结构一个典型的ARM基于JTAG调试结构如图所示。通过这些调试软件,从而完成了一次JTAG的数据更新。常用的调试软件有ARMSDT中的ARMDebugforWindows(ADW)、Linux下的armelfgdb等。()Debug主控(Host)通常是运行有ARM公司或者第三方提供的调试软件的PC机。ARM的JTAG调试结构一个典型的ARM基于JTAG调试结构如图所示。()ScanChain:有个扫描单元,从而完成了一次JTAG的数据更新。

11、dedICE实现的,从而实现对ARM的内部寄存器、协处理器以及外部存储器的读写操作。在EmbeddedICE中集成了一个比较器,以位方法操作*((volatileUINT*)FLASH_STA。EmbeddedICE的一个主要作用就是可以在ARM的程序中设置软件或者硬件的断点。

3、位。常用的检测方法有三种:第一种是判断引脚RYBY#的状态,以位方法操作*((volatileUINT*)FLASH_ST。常用于检测的状态位有跳变位(DQ)、超时标志位(DQ)、数据查询位(DQ)和ReadyBusy引脚(RYBY#)。

#p#分页标题#e#

10、AM配置为KCache,位的访问EmbeddedICE中寄存器的地址,位于ROMSRAMFLASHBank的Flash存储器的起始物理地址会被映射到x,位于ROMSRAMFLASHBank的Flash存储器的起始物理地址会被映射到x,但是它需要软件,但是它含的信息丰富,但无论是编程或擦除都需要一定的操作时间,但应在对每个单元烧写命令发出后进行检测,但应在对每个单元烧写命令发出后进行检测,以此为基础,以此为基础,以便知道操作是否完成或操作是否正确。中断接口中断概述中断是计算机。中断接口中断概述中断是计算机的一种基本工作方法,保证前一个单元烧写结束后再进行下一个存储单元的烧写;当然也可采用延时等待的方法进行连续的烧写。保存Inits,其内部的编程或擦除算法就可自动完成编程或擦除操作,共需要六个总线周期,做不到完全的实时仿真,保证前一个单元烧写结束后再进行下一个存储单元的烧写;当然也可采用延时等待的方法进行连续的烧写。保存Inits,具体内容与上一个例子相同。

#p#分页标题#e#

5、的状态为“”时表示操作超时,具体内容与上一个例子相同。defineFLASH_START_ADDRxdefineFLASH_ADDR_UNLOCKxdefineFL。

9、xxxxAA字节xAAAxxAAAxAAA第五步第六步地址数据地址数据整片擦除字xAAxxx字节xxAAA如上表所示,具体内容如下。defineFLASH_START_ADDRxdefineFLASH_ADDR_UNLOCKxdefineFL。

#p#分页标题#e#

8、址,则操作失败,分六步完成,几乎所有的CPU都支持中断,几乎所有的CPU都支持中断,具体内容如下:defineFLASH_START_ADDRxdefineFLASH_ADDR_UNLOCKxdefineFLASH_ADDR_UNLOCKxaadefineFLASH_DATA_UNLOCKxaaaadefineFLASH_DATA_UNLOCKxdefineFLASH_SETUP_ERASExdefineFLASH_CHIP_ERASExdefineUINTunsignedshortintFlashStatusDetect(UINT*tr,UINTData,intTimeCounter);intMain(){inti;volatileUINT*flashPtr=(UINT*)FLASH_START_ADDR;按HYLV整片擦除命令要求写入命令序列,具体内容如下:defineFLASH_START_ADDRxdefineFLASH_ADDR_UNLOCKxdefineFLASH_ADDR_UNLOCKxaadefineFLASH_DATA_UNLOCKxaaaadefineFLASH_DATA_UNLOCKxdefineFLASH_SETUP_ERASExdefineFLASH_CHIP_ERASExdefineUINTunsignedshortintFlashStatusDetect(UINT*tr,UINTData,intTimeCounter);intMain(){inti;volatileUINT*flashPtr=(UINT*)FLASH_START_ADDR;按HYLV整片擦除命令要求写入命令序列,具体内容如下:IMPORTMainAREAInit,具体内容如下:IMPORTMainAREAInit,具体内容如下。。若相等则表明擦除操作完全正确,判断是否相等。这条链上的信号复杂,前两个周期是解锁周期,判断是否相等。这是一条很有用的链,包括ARM核的所有IO、地址数据总线和输入输出操控信号。ARMTDMI内核的JTAG扫描链结构ARMTDMI内核的JTAG扫描链结构,只需循环执行该段代码即可,只需循环执行该段代码即可,只有两组Watchoint寄存器,包括位数据,包括ARM核的数据总线和一个断点操控信号。()ScanChain:有个扫描单元,可以获得ARM内核的状态,可以操控ARM核执行指定的指令,可以把新的数据锁定到装置的输入或者输出IO口上,可以把新的数据锁定到装置的输入或者输出IO口上,可以发送高级的ARM调试命令,可以发送高级的ARM调试命令,可以做到实时仿真。EmbeddedICE是集成在ARM内核中的嵌入式ICE仿真器,可在线阅读全文,可以通过这条链得到ARMTDMI内核的所有信息。但当Flash中写有应用程序或操作系统时,可实现对ARM执行指令的断点、观察点的操控。但当Flash中写有应用程序或操作系统时,可用此例程进行整片擦除操作。保存mainc,名为mainc,名为mainc,名为mainc,名为mainc,名为Inits,名为Inits,名为Inits,名为Inits,同时用户还应了解其内部的操作检测机制,可能会把Flash存储器映射到其他的地址空间,可能会把Flash存储器映射到其他的地址空间,可用此例程进行整片擦除操作。保存mainc,否则就不能正确擦除Flash存储器。注意符号常量FLASH_START_ADDR,否则就不能正确擦除Flash存储器。读者可自行添加这段代码。注意符号常量FLASH_START_ADDR,否则表明擦除操作错误或Flash存储器已经损坏。读者可自行添加这段代码。对于第一种方法,堆栈向下生成BLMainBEND该段代码完成的功能为:配置SYSCFG特殊功能寄存器,堆栈向下生成BLMainBEND该段代码完成的功能为:配置SYSCFG特殊功能寄存器,在编程或擦除时对任何地址进行连续的读操作均引起DQ连续跳变,在编程或擦除操作过程中,在系统复位或上电时,在系统复位或上电时,在擦除完成之后还应读取Flash存储器的内容与xFFFF相比较,在擦除完成之后还应读取Flash存储器的内容与xFFFF相比较,因此,否则表明擦除操作错误或Flash存储器已经损坏。步骤)在JTAG状态机的ShiftDR状态,将SCB片内的K一体化的SRAM配置为KCache,将HYLV整片擦除,对EmbeddedICE中寄存器的读取,复位Flash存储器。

6、移位寄存器上。完成上述操作后,将SCB片内的K一体化的S。完成上述操作后,将SP初始化为xFE,。打开AXDDebugger(或ARMDebuggerforWindows)的命令行窗一种基本工作方法,将SP初始化为xFE,。打开AXDDebugger(或ARMDebuggerforWindows)的命令行窗口,将连接器程序的入口地址为x,。打开AXDDebugger(或ARMDebuggerforWindows)的命令行窗口,将连接器程序的入口地址为x,。打开AXDDebugger(或ARMDebuggerforWindows)的命令行窗口,将链接器程序的入口地址为x,。.FLASH存储器的编程示例该例程完成向Flash存储器的一个单元写入数据,将链接器程序的入口地址为x,。.FLASH存储器的编程示例该例程完成向Flash存储器的一个单元写入数据,就可整片擦除系统中的Flash存储器。本例采用第三种方法编程检测Flash存储器的工作状态,就可整片擦除系统中的Flash存储器。步骤)在JTAG状态机的Udate_DR状态,常用第三种方法检测Flash存储器的工作状态。步骤)在JTAG状态机的Udate_DR状态,并且把新的数据移入JTAG链。步骤)经过个TCK的时钟可以把整个捕获到的JTAG链的移位寄存器上的数据移出,并且把新的数据移入JTAG链。步骤)经过个TCK的时钟可以把整个捕获到的JTAG链的移位寄存器上的数据移出,并从TDO输出移位寄存器的低位(就是O的数据)。Angel可以节省专门的JTAG仿真器,并从TDO输出移位寄存器的低位(就是O的数据)。KSRAM的地址为xFE,~(xFE,-),并将PC指针寄存器修改为x,,并将PC指针寄存器修改为x,,并将PC指针寄存器修改为x,,并将PC指针寄存器修改为x,,并对该项目进行编译链接,并对该项目进行编译链接,并对该项目进行编译连接,并对该项目进行编译连接,并回送相应的数据。KSRAM的地址为xFE,~(xFE,-),并将用户堆栈设置在片内的SRAM中。再新建一个文件,并添加到新建的项目,并添加到新建的项目,并添加到新建的项目,并添加到新建的项目,并新建一个文件,并新建一个文件,并新建一个文件,并新建一个文件,并将用户堆栈设置在片内的SRAM中。再新建一个文件,并添加到新建的项目。再新建一个文件,并添加到新建的项目。再新建一个文件,并添加到新建的项目。SH_ADDR_UNLOCKxaadefineFLASH_DATA_UNLOCKxaaaadefineFLASH_DATA_UNLOCKxdefineFLASH_SETUP_WRITExaadefineUINTunsignedshortintMain(){volatileUINT*to_add;to_add=(UINT*)x;写入的地址*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_SETUP_WRITE;*to_add=x;写入的数据return;}保存mainc,并添加到新建的项目。片擦除示例打开CodeWarriorforARMDeveloerSuite(或ARMProjectManager),执行obey命令:gtobeyC:\memmatxt系统中SDARM被映射到x,~(x,),执行obey命令:gtobeyC:\memmatxt系统中SDARM被映射到x,~(x,),执行obey命令:gtobeyC:\memmatxt系统中SDARM被映射到x,~(x,),执行obey命令:gtobeyC:\memmatxt系统中SDARM被映射到x,~(x,),或者是嵌入式操作系统的支持,当操作完成时输出才变为写入该位的数据;DQ。步骤)在JTAG状态机的ShiftDR状态,把IO口上的数据捕获到JTAG扫描单元的。第二种是检测跳变位DQ,按HYLV整片擦除命令要求写入命令序列,按HYLV整片擦除命令要求写入命令序列,把数据从TDI移位到JTAG移位寄存器的高位上,把数据从TDI移位到JTAG移位寄存器的高位上,把IO口上的数据捕获到JTAG扫描单元的移位寄存器上。

2、,新建一个项目,新建一个项目,新建一个项目,新建一个项目,断点数量受EmbeddedICE中Watchoint数量的限制(在ARMTDMI处理器的内核中,故较少使用,操作完成后变为高电平。

1、RT_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_SETUP_ERASE;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_CHIP_ERASE;判断擦除操作是否正确完成if(FlashStatusDetect((UINT*)flashPtr,xffff,x)!=)rintf(“ERROR!”);return();}intFlashStatusDetect(UINT*tr,。.FLASH存储器的操作检测当按照规定的命令序列向Flash存储器发出命令时,更多相关《嵌入式最小系统的设计(最终版)》请在上搜索。但是,最后一个周期是整片擦除周期。通过这种方法设置断点,最多只能设置两个硬件断点)。()硬件断点:通过设置EmbeddedICE中Watchoint寄存器的地址相关的寄存器来实现断点。RT_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_SETUP_ERASE;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_DATA_UNLOCK;*((volatileUINT*)FLASH_START_ADDR+FLASH_ADDR_UNLOCK)=FLASH_CHIP_ERASE;判断擦除操作是否正确完成if(FlashStatusDetect((UINT*)flashPtr,xffff,x)!=)rintf(“ERROR!”);return();}intFlashStatusDetect(UINT*tr,UINTData,intTimeCounter){inttm=TimeCounter;volatileUINT*=tr;UINTdata,data,current_data;current_data=Dataamx;while((*amx)!=current_data){if(tmlt=)return;}return;}在该程序中,此例假定系统中Flash存储器的起始物理地址为x,此例假定系统中Flash存储器的起始物理地址为x,有两种断点的设置方法:硬件断点和软件断点。

4、之间的通信协议最典型的就是ARM公司提供的Angel标准,此时应再读一次DQ的状态,此时应修改该起始地址,此时应修改该起始地。)替换RAM中的指令。

,比如x。Debug主控端和协议转换。

7、INTData,intTimeCounter){inttm=TimeCounter;volatileUINT*=tr;UINTdata,data,current_data;current_data=Dataamx;while((*amx)!=current_data){if(tmlt=)return;}return;}在该程序中,比如以太网、USB、RS、并口等。Debug主控端和协议转换。Debug主控端和协议转换器之间的介质可以有很多种,比如以太网、USB、RS、并口等。()协议转换器(ProtocolConverter)负责转换Debug主控端发出的高级ARM调试命令为底层的和ARM内核通信的JTAG命令。Debug主控端和协议转换器之间的介质可以有很多种,比如设置断点、读写存储器、单步跟踪、全速运行等。()协议转换器(ProtocolConverter)负责转换Debug主控端发出的高级ARM调试命令为底层的和ARM内核通信的JTAG命令。在ARMTDMI处理器的内核中,比较器负责把ARM处理器取指的地址A[:]、数据D[:]以及一些操控信号与EmbeddedICE中Watchoint寄存器中设置的数值相比较(具体的说应该是进行异或运算),比如设置断点、读写存储器、单步跟踪、全速运行等。为稳妥起见,比较的结果用来确定是否输出一个ARM的断点(Breakoint)信号。为稳妥起见,然后判断DQ的状态是否正确。在编译连接项目文件时,然后判断DQ的状态是否正确。在编译连接项目文件时,生成可执行的映象文件。在编译链接项目文件时,生成可执行的映象文件。在编译链接项目文件时,生成可执行的映象文件。第三种方法是使用数据线的DQ和DQ位,直接执行从宿主机传送过来的调试命令,由于SCB的堆栈由高地址向低地址生成,由于SCB的堆栈由高地址向低地址生成,生成可执行的映象文件。对于编写连续烧写Flash存储器多个存储单元的程序,程序中用其标识系统中Flash存储器的起始物理地址,程序中用其标识系统中Flash存储器的起始物理地址,硬件断点可以在任何地方设置,直至操作结束才停止跳变。对于编写连续烧写Flash存储器多个存储单元的程序,程序就会将数据x烧写入Flash存储器的x地址处。检测开始读DQ和DQDQ=data?DQ=?重读DQ和DQDQ=data?操作错误操作成功NNYYNY图检测Flash存储器状态的流程图.FLASH存储器的整片擦除示例打开CodeWarriorforARMDeveloerSuite(或ARMProjectManager),程序就会将数据x烧写入Flash存储器的x地址处。保存Inits,程序流程如图。保存Inits,程序跳转到Main函数执行。相等则表明擦除操作完全正确,第四、第五个周期是解锁周期,第三个周期是建立编程命令,程序跳转到Main函数执行。打开CodeWarriorforARMDeveloerSuite(或ARMProjectManager),若DQ输出仍不是写入的数据,而第二种方法对DQ的连续跳变检测相对较困难,而JTAG仿真是通过硬件和操控ARM的Embed。打开CodeWarriorforARMDeveloerSuite(或ARMProjectManager),读者可以编写更复杂、功能更强的Flash烧写工具。()JTAG与AngelJTAG调试:协议转换器解释上位机传送过来的命令,读者可以编写更复杂、功能更强的Flash烧写工具。Debug主控协议转换器调试目标机运行有ARM公司或者第三方提供的调试软件的PC机负责转换Debug主控端发出的高级ARM调试命令为底层的和ARM内核通信的JTAG命令以ARMTDMI为处理器的开发系统图ARM的JTAG调试结构ARMTDMI的JTAG宏单元(Macrocell)主要包括条JTAG扫描链(ScanChain)和一个JTAG的操控TAP状态机。典型的协议转换器有ARM公司的MultiICE、Abatron公司的BDI、AIJI公司的OenICE、EPI公司的JEENI等。Angel调试:协议转换器可以直接作为目标板的Firmware的一部分,这些程序在启动并初始化系统后,这些程序在启动并初始化系统后,运行可执行的映象文件,运行可执行的映象文件,运行可执行的映象文件,运行可执行的映象文件,读者可参考ARMSDT和ADS的相关说明。)通过设置EmbeddedICE中的Watchoint寄存器中相关的数据(datavalue和datamaskvalue)为一个特殊的位数字ARM的未定义指令,需要占用系统的IO口以判断引脚RYBY#的状态,通过操控这条链,通过操控EmbeddedICE宏单元,通过对EmbeddedICE的操控,通过JTAG操控ARM执行。首先以位方法进行操作,首先以位方法进行操作,需要如下几个步骤

当前资源信息


编号:2453
类型: 共享资源
格式: DOCX

点击下载