嵌入式ARM如何中断调试

2020-08-02来源: elecfans关键字:嵌入式  ARM  中断调试

嵌入式软件开发流程

参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。


在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。

嵌入式ARM如何中断调试

对后四种文件的理解很重要,其作用解释如下。

(1) 链接脚本文件:在程序编译时起作用。该文件描述代码链接定位的有关信息,包括代码段,数据段,地址段等,链接器必须使用该文件对整个系统的代码做正确的定位。在SDRAM中调试程序、在FLASH中调试或固化后运行的链接脚本文件应加以区分。(在IDE开发环境中使用扩展名*.ld)

(2)命令脚本文件:在SDRAM中调试程序时起作用。在集成环境与目标连接时、软件调试过程中以及目标板复位后,有时需要集成环境自动完成一些特定的操作,比如复位目标板、清除看门狗、屏蔽中断寄存器、存储区映射等。这些操作可以通过执行一组命令序列来完成,保存一组命令序列的文本文件称为命令脚本文件(在 IDE开发环境中使用扩展名*.cs)。

(3)存储区映像文件:在SDRAM中调试程序时起作用。在软件调试过程中访问非法存储区在部分处理器和目标板上会产生异常,如果异常没有处理,则会导致软件调试过程无法继续,为了防止以上问题并调整仿真器访问速度以达到最合适的水平,提供这样一种用于描述各个存储区性质的文件叫存储区映像文件(在IDE开发环境中使用扩展名*.map)。

在程序的调试过程中可以选择使用存储区映像文件*.map和命令脚本文件*. cs配合程序的调试。

(4) 启动文件:它主要是完成一些和硬件相关的初始化的工作,为应用程序做准备。一般,启动代码的第一步是设置中断和异常向量;第二步是完成系统启动所必须的寄存器配置;第三步设置看门狗及用户设计的部分外围电路;第四步是配置系统所使用的存储区分配地址空间; 第五步是变量初始化;第六步是为处理器的每个工作模式设置栈指针;最后一步是进入高级语言入口函数(Main函数)。


中断程序设计

中断调试方面可以采用类似矢量中断动态处理方式,让中断对应的确定地址代码调转到RAM的固定地址处,定义一个函数指针指向该固定地址,就可以随时通过替换RAM固定地址处的代码,实现动态改变中断处理函数。


具体方法是:

(1)将中断源函数指针定义在RAM中相对的固定地址,建立中断矢量表;

void SetInterrupt (U32 vector, void (*handler)()){ InterruptHandlers[vector] = handler;}

(2)在程序中,调用具体某中断源的中断处理函数;

如: SeTInterrupt(IIC_INT,IICWriteIsr);

/* 声明IIC中断处理函数,其中IIC_INT为 IIC中断源序号,IICWriteIsr为 IIC的写中断处理函数 */

(3)在0x18处的IRQ或0x1C处的FIQ中断入口函数中,获取中断源、清除中断挂起标志、通过已定义的中断源函数指针进入用户具体某中断处理程序。

void ISR_IrqHandler(void){ IntOffSet = (unsigned int)INTOFFSET; Clear_PendingBit(IntOffSet》》2) ;(*InterruptHandlers[IntOffSet》》2])();// 调用具体某中断处理程序}

采用动态的中断处理方法,在中断源较多的情况下,中断响应时间和程序性能得到优化。另外,在调试方面,此处理方法具有便于跟踪调试的优点,并且根据需要,可以方便变换中断处理函数。

中断调试

软件调试可以在SDRAM中或FLASH中进行。在SDRAM中,读写方便,访问速度快。一般软件调试应在RAM中完成,但当RAM空间小于FLASH程序空间,程序只能在FLASH运行和调试时,或者用户希望了解程序在FLASH中实际运行情况时,就可以在FLASH中进行程序调试。

进行中断调试时,应注意中断入口位于SDRAM中或FLASH中0x18或0x1c地址,链接脚本文件必须使整个系统的代码正确定位于0x0起始处,但SDRAM或FLASH对应的链接脚本文件及工程配置注意区别。

(1)程序在SDRAM中运行

在SDRAM中调试,使用SDRAM对应的链接脚本文件。调试过程需要以下几步:编译、链接工程;连接仿真器和电路板;下载程序(在IDE开发环境中使用扩展名*.elf);调试。

下载程序前必须启动命令脚本文件完成前述的一些特定的操作,命令脚本文件的启动在连接仿真器时自动进行,其中存储区映射应与程序在SDRAM中运行时相同,保证整个系统的代码正确定位于0x0起始处。下载程序的起始地址也为0x0,下载成功后便可进行调试工作。

(2)程序在FLASH中运行

在FLASH中调试,使用FLASH对应的链接脚本文件。调试过程需要以下几步:编译、链接工程;连接仿真器和电路板;程序格式转换(*.elf转换为*.bin);固化*.bin程序;调试。

连接仿真器后不需要下载程序,存储区映射由本身工程中启动文件运行完成,不需要命令脚本文件。在本环境调试过程中,可以设置两个硬件断点。

(3)程序从FLASH中调到SDRAM中运行

在某些应用场合,强调程序运行速度的情况下,希望程序在SDRAM中运行,这样就需要将FLASH中存储的程序,在系统上电后搬运到SDRAM某空间位置,然后自动运行。这种所谓的Bootloader技术,在DSP系统中常被采用。

调试过程分两步:

(a)首先将用户程序在SDRAM中调试通过,然后将*.bin文件固化到FLASH某一非0扇区地址空间;

(b) 将自己编写的Bootloader搬运程序调试通过并将Bootloader.bin文件固化到FLASH的 0扇区地址空间,搬运程序在系统上电后,将(a)中FLASH某一非0扇区地址空间存储的程序,搬运到在SDRAM调试中同样的空间位置,实现程序在SDRAM中运行的目的。

另外注意,因为用户实际的程序中断入口必须位于FLASH的0x18或0x1c地址,所以Bootloader搬运程序还应具有中断入口的跳转功能,即把PC指针由此转向处于SDRAM空间的中断程序入口表,就是整个用户程序被搬运到SDRAM的那一位置。


如:LDR PC, =HandleIRQ

// HandleIRQ位于SDRAM空间中断程序入口表

关键字:嵌入式  ARM  中断调试 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic504984.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:Keil MDK和IAR 两款ARM开发工具对比
下一篇:基于ARM11的CES-EDU6410教学平台

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

基于ARM的FPGA嵌入式系统实现
实现各种逻辑功能。基于SRAM工艺的FPGA具有易失性。系统掉电以后其内部配置数据容易丢失,因此需要外接ROM保存其配置数据,系统上电后必须重新配置数据才能正常工作。目前有两种方案可以实现,一种是使用专用的PROM,以Xilinx公司FPGA,XCFxx系列PROM为例,能够提供FPGA的配置时序,上电时自动加载PROM中的配置数据到FPGA的SRAM中;另一种是在含有微处理器的系统(如嵌入式系统)中采用其他非易失性存储器如E2PROM、 Flash存储配置数据,微处理器模拟FPGA的配置时序将ROM中的数据置入FPGA。与第一种方案相比,该方案节省成本、缩小系统体积。适用于对成本和体积苛刻要求的系统。在便携式虚拟仪器设计中,使用
发表于 2020-08-04
基于ARM的FPGA<font color='red'>嵌入式</font>系统实现
嵌入式系统架构之ARM处理器 
ARM公司于1991年成立于英国剑桥,主要出售芯片设计技术的授权。目前,采用ARM技术智能财产(IP)核心的处理器,即我们通常所说的ARM 处理器,已遍及工业控制、消费类电子产品、通信系统、网络系统、无线系统等各类产品市场,基于ARM技术的处理器应用约占据了32位RISC微处理器 75%以上的市场,ARM技术不止逐步渗入到我们生活的各个方面,我们甚至可以说,ARM于人类的生活环境中,已经是不可或缺的一环。目前市面上常见的ARM处理器架构,可分为ARM7、ARM9以及ARM11,新推出的Cortex系列尚在进行开发验证,市面上还未有相关产品推出。ARM也是嵌入式处理器中首先推出多核心架构的厂商。ARM首个多核心架构为ARM11
发表于 2020-08-03
<font color='red'>嵌入式</font>系统架构之ARM处理器 
基于ARM的嵌入式操作系统该如何设计
嵌入式linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。 Linux做嵌入式的优势,首先,Linux是开放源代码;其次,Linux的内核小、效率高,可以定制,其系统内核最小只有约134KB;第三,Linux是免费的OS,Linux还有着嵌入式操作系统所需要的很多特色,突出的就是Linux适应于多种CPU和多种硬件平台而且性能稳定,裁剪性很好,开发和使用都很容易。同时,Linux内核的结构在网络方面是非常完整的,Linux对网络中最常用的TCP/IP协议有最完备的支持。提供了包括十兆、百兆、千兆的以太网络,以及无线网络,Token Ring(令牌环网)、光纤甚至卫星
发表于 2020-08-03
基于ARM的<font color='red'>嵌入式</font>操作系统该如何设计
ARM嵌入式主板综合对比
随着当代工控智能产品功能的日益复杂以及市场竞争,迫使产品的开发周期不断缩短。基于分工的原则,选择集成了一定软硬件功能的嵌入式主板作为整机部件,已成为当下整机产品设计的一种趋势。尽管目前市面上ARM嵌入式主板是种类繁多,但大致可划分为A、B两类:A类主板是从学习套件演化而来,主要集成了CPU和存储器芯片,在模块周边以焊盘形式引出管脚,客户在使用时需要把主板模块直接焊接在应用底板上;B类主板是针对工控应用而来,除了CPU核心系统外,还包括了常规的显示、USB、网络、UART等接口,并通过操作系统(Linux或CE)封装成完整的计算机运行环境,结构上通过主板两侧引出的双排插针与客户应用底板相连。英创公司的主板产品属于B类。通过下图对比
发表于 2020-08-02
ARM<font color='red'>嵌入式</font>主板综合对比
基于ARM的rfid如何设计成嵌入式
,远端控制器必须通过发送命令来实现任务,典型命令格式为:起始位S1、8 位命令字、传输数据和结束位ES1。4.嵌入式控制模块硬件电路设计S3C44B0X 微处理器是低功耗的,采用了应用于实时环境的 ARM7TDMI 32 位核,所以选为控制模块的主芯片,负责完成 PC 机和 RFID读写器之间数据的传送和控制。4.1 晶振电路晶振电路用于向 CPU 及其他电路提供工作时钟。S3C44B0X芯片通过管脚OM[3:2]确定选择何种时钟源,在本系统中,将两个管脚下拉,选择晶体时钟模式,选用该模式时,外部采用10MHz的晶振,可以利用公式设计出各种所需的输出频率,也就是说时钟频率可以通过软件
发表于 2020-07-29
基于ARM的rfid如何设计成<font color='red'>嵌入式</font>的
指令集是什么?ARM封杀对华为有什么影响
,因此有了助记符的概念并在这个基础上产生了汇编语言,通俗来说我们需要将1+2这种信息表达为计算机可接受的0和1的组合,因为人类更能接受1+2这种表达方式,而计算机只能接受0和1的表达方式,汇编语言就是初步解决了人类和计算机的沟通难度,提高了沟通效率。3、指令集的作用以下以实际ARMv8指令集举一个最简单的加法例子来说明指令集的作用。高级语言语句:1+2汇编语言语句:ADD X9(存放1+2的结果),X10(存放1),X11(存放2)在编译成机器语言时,需要解决几个问题:(1) 怎么让计算机明白ADD是什么意思(2) 怎么让计算机以0和1的组合序列表达1+2这个计算指令先解决第一个问题,芯片厂商定义一串序列表示加法,根据ARM
发表于 2020-07-25
指令集是什么?<font color='red'>ARM</font>封杀对华为有什么影响
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved