现在位置 >首页 > 所有 ARM单片机教程 分类文章

ARM的三种中断调试方法

2011年10月14日 312 次阅读

1 嵌入式软件开发流程    参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。    在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。 对后四种文件的理解很重要,其作用解释如下。 (1)链接脚本文件:在程序编译时起作用。该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位。在SDRAM中调试程序、在FLASH中调试或固化后运行的链接脚本文件应加以区分。(在IDE开发环境中使用扩展名*.ld)     void SetInterrupt (U32 vector, void (*handler)())      {          InterruptHandlers[vector] = handler;       } (2)命令脚本文件:在SDRAM中调试程序时起作用。在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚本文件(在 IDE开发环境中使用扩展名*.cs)。 (3)存储区映像文件:在SDRAM中调试程序时起作用。在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则会导致软件调试过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,提供这样一种用于描述各个存储区性质的文件叫存储区映像文件(在IDE开发环境中使用扩展名*.map)。 在程序的调试过程中可以选择使用存储区映像文件*.map和命令脚本文件*. cs配合程序的调试。 (4)启动文件:它主要是完成一些和硬件相关的初始化的工作,为应用程序做准备。一般,启动代码的第一步是设置中断和异常向量;第二步是完成系统启动所必须的寄存器配置;第三步设置看门狗及用户设计的部分外围电路;第四步是配置系统所使用的存储区分配地址空间; 第五步是变量初始化;第六步是为处理器的每个工作模式设置栈指针;最后一步是进入高级语言入口函数(Main函数)。 2 中断程序设计    中断调试方面可以采用类似矢量中断动态处理方式,让中断对应的确定地址代码调转到RAM的固定地址处,定义一个函数指针指向该固定地址,就可以随时通过替换RAM固定地址处的代码,实现动态改变中断处理函数。   具体方法是:    (1)将中断源函数指针定义在RAM中相对的固定地址,建立中断矢量表;    (2)在程序中,调用具体某中断源的中断处理函数;        如:SetInterrupt(IIC_INT,IICWriteIsr); /* 声明IIC中断处理函数,其中IIC_INT为 IIC中断源序号,IICWriteIsr为 IIC的写中断处理函数 */    (3)在0×18处的IRQ或0x1C处的FIQ中断入口函数中,获取中断源、清除中断挂起标志、通过已定义的中断源函数指针进入用户具体某中断处理程序。       void ISR_IrqHandler(void)       {          [...]

ARM的开发步骤

2011年04月27日 257 次阅读

  1. 做个最小系统板:如果你从没有做过ARM的开发,建议你一开始不要贪大求全,把所有的应用都做好,因为ARM的启动方式和dsp或单片机有所不同,往往会遇到各种问题,所以建议先布一个仅有Flash,SRAM或SDRAM、CPU、JTAG、和复位信号的小系统板,留出扩展接口。使最小系统能够正常运行,你的任务就完成了一半,好在ARM的外围接口基本都是标准接口,如果你已有这些硬件的布线经验,这对你来讲是一件很容易的事情。 2. 写启动代码,根据硬件地址先写一个能够启动的小代码,包括以下部分: 初始化端口,屏蔽中断,把程序拷贝到SRAM中;完成代码的重映射;配置中断句柄,连接到C语言入口。也许你看到给你的一些示例程序当中,bootloader会有很多东西,但是不要被这些复杂的程序所困扰,因为你不是做开发板的,你的任务就是做段小程序,让你的应用程序能够运行下去 3. 仔细研究你所用的芯片的资料,尽管ARM在内核上兼容,但每家芯片都有自己的特色,编写程序时必须考虑这些问题。尤其是女孩子,在这儿千万别有依赖心理,总想拿别人的示例程序修改,却越改越乱。 4. 多看一些操作系统程序,在ARM的应用开放源代码的程序很多,要想提高自己,就要多看别人的程序,linux,uc/os-II等等这些都是很好的原 码。 6.如果你是作硬件,每个厂家基本上都有针对该芯片的DEMO板原理图。先将原理图消化。这样你以后做设计时,对资源的分配心中有数。器件的DATSHEET一定要好好消化。 7.如果做软件最好对操作系统的机理要有所了解。当然这对软件工程师来说是小菜一碟。但如果是硬件出身的就有点费劲。  问:做最小系统板是2层还是4层好? 答:只有AT91可以用两层板,其他的最少4层;44b0的地和电源处理好也可用两层板; 谈四层板和33欧电阻: 选用四层板不仅是电源和地的问题,高速数字电路对走线的阻抗有要求,二层板不好控制阻抗。33欧电阻一般加在驱动器端,也是起阻抗匹配作用的;布线时要先布数据地址线,和需要保证的高速线; 在高频的时候,PCB板上的走线都要看成传输线。传输线有其特征阻抗,学过传输线理论的都知道,当传输线上某处出现阻抗突变(不匹配)时,信号通过就会发生反射,反射对原信号造成干扰,严重时就会影响电路的正常工作。采用四层板时,通常外层走信号线,中间两层分别为电源和地平面,这样一方面隔离了两个信号层,更重要的是外层的走线与它们所靠近的平面形成称为“微带”(microstrip) 的传输线,它的阻抗比较固定,而且可以计算。对于两层板就比较难以做到这样。这种传输线阻抗主要于走线的宽度、到参考平面的距离、敷铜的厚度以及介电材料的特性有关,有许多现成的公式和程序可供计算。 33欧电阻通常串连放在驱动的一端(其实不一定33欧,从几欧到五、六十欧都有,视电路具体情况) ,其作用是与发送器的输出阻抗串连后与走线的阻抗匹配,使反射回来(假设解收端阻抗没有匹配) 的信号不会再次反射回去(吸收掉),这样接收端的信号就不会受到影响。接收端也可以作匹配,例如采用电阻并联,但在数字系统比较少用,因为比较麻烦,而且很多时候是一发多收,如地址总线,不如源端匹配易做。 这里梭说的高频,不一定是时钟频率很高的电路,是不是高频不止看频率,更重要是看信号的上升下降时间。通常可以用上升(或下降) 时间估计电路的频率,一般取上升时间倒数的一半,比如如果上升时间是1ns,那么它的倒数是1000MHz,也就是说在设计电路是要按500MHz的频带来考虑。有时候要故意减慢边缘时间,许多高速IC其驱动器的输出斜率是可调的

ARM处理器及物理IP超过750MHz

2011年04月25日 300 次阅读

RM公司宣布了一项具有突破性高性能的ARM1176JZF-STM处理器的实现,通过使用ARM® ArtISAn® AdvantageTM单元库及内存,这一处理器的频率在90纳米代工厂工艺下超过了750MHz,芯片面积却仅为2.4平方毫米。这一性能的显著提升得益于协作设计、先进的物理IP以及处理器技术的共同贡献。最优化后的实现为现有的应用及操作系统带来了业界领先的超过920 Dhrystone MIPS的性能表现,而不需要任何昂贵的软件再设计或再编译费用。 ARM市场营销和业务开发高级副总裁Mike Inglis先生表示:“将业界领先的ARM处理器业务以及通过一年前收购ArtISAn获得的物理IP业务合并在一起的举措现在已经在技术上和商业上取得成效。合并后的技术团队紧密合作,为我们的半导体合作伙伴带来了业界最佳的90纳米设计,满足大量数字消费产品市场的需求。” 这一高性能设计是一个完整的ARM1176JZF-S处理器的参考规划,包含16KB指令集高速缓冲存储器、16KB数据高速缓冲存储器、能够加速指令和数据读取的4倍高性能AMBA® 3 AXITM内联接口以及一个矢量浮点单元(VFP)。作为屡获殊荣的ARM11TM系列的一员,ARM1176JZF-S处理器因其高端的性能、卓越的功耗以及丰富的性能已被下一代消费产品应用广泛采用。 ARM处理器部门市场营销副总裁John Cornish先生表示:“ARM1176JZF-S处理器750MHz的实现充分体现了将全系列的ARM技术整合在一起所带来在性能、兼容性、低风险以及产品上市时间方面的受益。ARM Advantage库和内存同ARM1176JZF-S处理器的整合高度显示了我们一贯致力于为那些需要更高的性能以及软件兼容性的应用提供领先的解决方案。这是我们最新的整合我们业界领先的处理器技术和物理IP来实现低费用和低功耗的前提下的高性能的一系列具有针对性的实现中的一个。” ARM 德州扑克下载 Advantage系列单元库和内存能够为需求不断提高的数字家庭、娱乐以及其他高端应用提供高性能、低功耗的out-of-the-box解决方案。 ARM Advantage系列加强了ARM处理器和物理IP之间的有效协作,这两种互为补充的技术使得ARM能够提供业界最广泛的片上系统(SoC)IP产品, 为深亚微米芯片设计提供在性能和功耗方面最优化了的处理器实现。 ARM1176JZF-S可综合处理器专门针对包括数字电视、机顶盒、游戏机以及手机在内的消费及无线产品。这一处理器采用了ARM Jazelle® Java加速技术、ARM TrustZone®技术(专门针对为运行开放式操作系统例如Symbian OS、Linux和Windows CE的消费产品提供安全性能的关键技术)以及一个矢量浮点(VFP)协处理器(为嵌入式3D图像提供强大的加速功能)。 具有16K指令及数据高速缓冲存储器的高速ARM1176JZF-S处理器将以超过750MHz的频率运行,芯片尺寸仅为2.4平方毫米,包括高速缓冲存储器在内的功耗小于500毫瓦。ARM1176JZF-S处理器和台积电90GT工艺的Advantage单元库和内存现在已经可以从ARM获得。

ARM10E微处理器系列

2011年04月23日 319 次阅读

ARM10E系列微处理器具有高性能、低功耗的特点,由于采用了新的体系结构,与同等的ARM9器件相比较,在同样的时钟频率下,性能提高了近50%,同时,ARM10E系列微处理器采用了两种先进的节能方式,使其功耗极低。 ARM10E系列微处理器的主要特点如下: -    在线德州扑克 支持DSP指令集,适合于需要高速数字信号处理的场合。 -    6级整数流水线,指令执行效率更高。 -    支持32位ARM指令集和16位Thumb指令集。 -    支持32位的高速AMBA总线接口。 -    支持VFP10浮点处理协处理器。 -    全性能的MMU,支持Windows CE、Linux、Palm OS等多种主流嵌入式操作系统。 -    支持数据Cache和指令Cache,具有更高的指令和数据处理能力 -    主频最高可达400MIPS。 -    内嵌并行读/写操作部件。 ARM10E系列微处理器主要应用于下一代无线设备、数字消费品、成像设备、工业控制、通信和信息系统等领域。 ARM10E系列微处理器包含ARM1020E、ARM1022E和ARM1026EJ-S三种类型,以适用于不同的应用场合。

ARM微处理器的指令结构

2011年04月20日 275 次阅读

ARM微处理器的在较新的体系结构中支持两种指令集:ARM指令集和Thumb指令集。其中,ARM指令为32位的长度,Thumb指令为16位长度。Thumb指令集为ARM指令集的功能子集,但与等价的ARM代码相比较,可节省30%~40%以上的存储空间,同时具备32位代码的所有优点。 德克萨斯扑克在线

ARM微处理器的寄存器结构

2011年04月19日 269 次阅读

ARM处理器共有37个寄存器,被分为若干个组(BANK),这些寄存器包括: - 31个通用寄存器,包括程序计数器(PC指针),均为32位的寄存器。 - 网页版麻将 6个状态寄存器,用以标识CPU的工作状态及程序的运行状态,均为32位,目前只使用了其中的一部分。 同时,ARM处理器又有7种不同的处理器模式,在每一种处理器模式下均有一组相应的寄存器与之对应。即在任意一种处理器模式下,可访问的寄存器包括15个通用寄存器(R0~R14)、一至二个状态寄存器和程序计数器。在所有的寄存器中,有些是在7种处理器模式下共用的同一个物理寄存器,而有些寄存器则是在不同的处理器模式下有不同的物理寄存器。

ARM体系结构中的存储系统

2011年04月18日 341 次阅读

  1.arm存储系统中的大/小端   在arm体系结构中,每个字单元包含4字节单元或者2个半字单元,1个半字单元包含2字节单元。但是在字单元中,4字节哪一个是高位字节,哪一个是低位字节则有两种不同的格式,通常称为大端格式或者小端格式,也就是big-endian格式和little-endian格式。大/小端的选择对于不同的芯片来说有一些不同的选择方式,一般都可以通过外部的引脚或内部的寄存器来选择。具体要参见处理器的数据手册。   在大端模式下的存储格式如下所示。   31                  24 23                 16 15                 8 7                 0   字单元A   半字单元A   半字单元A+2   字节单元A   字节单元A+1   字节单元A+2   字节单元A+3   而在小端模式下的存储格式如下所示。   31                24 23                16 15                 8 在线德州扑克 7                   0   字单元A   半字单元A+2   半字单元A   字节单元A+3   字节单元A+2   字节单元A+1   字节单元A 非对齐的存储访问操作:在ARM体系结构中通常希望字单元的地址是字对齐的(地址的低两位是0b00),半字单元的地址是半字对齐的(地址的最低位为0b0),但在存储单元中地址没有遵守上述的对齐规则,称为非对齐的存储访问操作,在arm体系结构的伪指令集中有专门的align指令来指定对齐格式。   在ARM体系结构中允许指令预取,在CPU执行当前代码的同时,可以从存储器中预取其后若干条指令,具体预取多少条指令则由不同的arm处理器内核的实现来决定。   2.arm体系结构中的MMU   另外一个重要的概念就是MMU(Memory Manager Unit)。arm存储系统的体系结构适应不同的嵌入式系统应用,它的差别很大。最简单的存储系统使用平板式的地址映射机制,地址空间的分配是固定的,系统中各部分都使用物理地址,这样的处理器不带MMU。而一些复杂的系统可能包含一种或多种下面提到的技术,从而提供功能更为强大的存储系统。   (1)系统中可能包含多种类型的存储器件,一般都有Flash、SRAM、SDRAM等接口。   (2)使用指令/数据cache及Write Buffer技术缩小处理器和存储系统速度差别,从而提高系统的整体性能。   (3)系统中包含有MMU单元。   MMU使用内存映射技术实现虚拟空间到物理空间的映射,这种映射机制对于嵌入式系统尤其重要。通常程序放在ROM/Flash中,这样系统掉电后程序能够保存。但是ROM/Flash比SDRAM速度慢很多,而且在嵌入式系统中,中断向量表存放在RAM中,不过利用内存映射就可以解决这种问题。在系统加电时将ROM/Flash地址映射到0×00000000,在0×00000000 地址处存放启动代码,来完成系统设备的初始化,之后再把内核程序加载到SDRAM,然后把地址映射到SDRAM的地址,跳转到SDRAM地址运行就可以了。   针对具有MMU的ARM处理器可以移植Linux for arm操作系统,针对没有MMU的处理器,一般都是移植uClinux for arm。比如说Samsung公司的S3C4510、S3C2510都是不带MMU的处理器,只能移植uClinux,而针对S3C2410、PXA27x、OMAP591x等带有MMU单元的arm处理器通常都可以移植Linux操作系统。带有MMU的处理器内部都有用于存储管理的系统控制协处理器CP15,在移植嵌入式操作系统的Boot Loader时,必须要对存储管理单元进行初始化设置。   3.快速上下文切换技术   FCSE(Fast [...]

ARM体系结构与编程

2011年04月15日 283 次阅读

ARM处理器是一种16/32位的高性能、低成本、低功耗的嵌入式RISC微处理器,由ARM公司设计,然后授权给各半导体厂商生产,它目前已经成为应用最为广泛的嵌入式处理器。 本书分14章对ARM处理器的体系结构、指令系统和开发工具作了比较全面的介绍。其中包括ARM体系介绍、ARM程序设计模型、ARM汇编语言程序设计、 ARM C/C 语言程序设计、ARM连接器的使用、ARM集成开发环境CodeWarrior IDE的介绍及高性能的调试工具ADW的使用。并在此基础之上介绍一些典型的基于ARM体系的嵌入式应用系统设计时的基本技术。通过阅读这本书可以使读者掌握开发基于ARM的应用系统的各方面的知识。 本书既可作为学习ARM技术的培训材料,也可作为嵌入式系统开发人员的参考手册。 目 录 1、ARM概述及其基本编程模型 2、ARM指令分类及其寻址方式 3、ARM指令集介绍 4、ARM汇编语言程序设计 5、ARM存储系统 6、ATPCS介绍 7、ARM程序和Thumb程序混合使用 8、C/C 以及汇编语言的混合编程 9、异常中断处理 10、ARM C/C 编译器 11、ARM连接器 12、嵌入式应用程序示例 13、使用CodeWarrior 14、ARM体系中的调试方法

ARM微处理器概述

2011年04月13日 286 次阅读

ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术, 博雅德州扑克下载 ARM以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对DSP的应用领域提出了挑战。 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技术。手机中的32位SIM智能卡也采用了ARM技术。 除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得更加广泛的应用。 采用RISC架构的ARM微处理器一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/16位器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定;

了解什么是ARM中断实现过程

2011年04月08日 327 次阅读

了解什么是ARM中断实现过程,通过代码分析的过程来什么了解ARM中断,同时文章以笔记的形式来表达,不错的ARM中断分析。 决定开始学习嵌入式后,最先做的事情就是要熟悉ARM指令及其伪指令伪操作。ARM指令的助记符其实都是其具体功能的单次缩写,所以学习的过程中最好利用网络,从一些文献或书籍中找到ARM指令助记符的全称,这样方便记忆。学完之后,我做了整理了一个有关这方面的笔记,有需要的朋友请邮件联系: 接下来的学习过程中,比较难以理解的是ARM的中断过程和存储系统。ARM中断的实现有些书上看一两遍也不见得能够完全理解,当然可能只对于像我一样跨专业的朋友来说存在这个问题。这次只谈中断。由于是初学者,难免会出错,敬请各位指正。 当一个程序正常执行过程中,CPU可能检测到有某个中断源发出中断请求,这时ARM硬件实现了程序强制跳转,在这之前保存了相关信息,以便程序正常返回。如果是发生了Reset中断,程序实现系统初始化设置。 开始比较难以理解的是中断产生后,程序都进行了哪些操作。我就从跟踪PC作为分析的主线。以发生FIQ中断为例。(只以ROM起始地址为0为例,不为0的情况参照存储地址映射) 最简单的是中断发生后,PC=0×08,在此地址处存放一个跳转指令,跳转到相关处理程序。当然多数情况中断处理程序可能比较复杂,并且要处理多种中断的情况下,采用一步映射两步跳转(我自己起的名字,不一定妥当)。如下图所示: 一步映射指,在RAM地址中建立一个中断向量表,图中该表起始地址为0×400000,在该表中存放的是中断处理函数的入口地址。两步跳转是指,当中断发生时,由于系统硬件强制程序跳转到了0×08处,在该地址处是一个跳转指令,跳转到中断函数地址解析程序IRQ_Handler,完成一步跳转。解析程序(IRQ_Handler)的作用无非是把中断向量表内中断处理函数(SystemIrqHandler)的入口地址赋值给 PC,如图所示PC=0×003000280,完成第二步跳转,开始处理中断。在中断处理函数的最后,恢复中断开始时保存的相关寄存器的值,完成中断。 下面以一个实例来具体说明中断建立及实现的过程。 首先通过伪指令建立一个中断向量表,用于存放中断程序的入口地址(如上图中的中断向量表,注意,此时表中还未赋值): ;/* EXCEPTION HANDLER VECTOR TABLE */ ^ DRAM_BASE HandleReset # 4 HandleUndef # 4 HandleSwi # 4 HandlePrefetch # 4 HandleAbort # 4 HandleReserv # 4 HandleIrq # 4 HandleFiq # 4 然后定义一个连续的数据段,并把中断处理函数的入口地址值赋给各字单元 ExceptionHandlerTable DCD UserCodeArea DCD SystemUndefinedHandler DCD SystemSwiHandler DCD SystemPrefetchHandler DCD SystemAbortHandler DCD [...]

在线咨询