快捷搜索:  as

嵌入式ARM如何中断调试

嵌入式软件开拓流程

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

在全部流程中,用户首先必要建立工程并对工程做初步的设置设置设备摆设摆设,包括设置设置设备摆设摆设处置惩罚器和设置设置设备摆设摆设调试设备。编辑工程文件,包括自己编写的汇编和C说话源法度榜样,还有工程编译时必要编写的链接脚本文件,调试历程中必要编写存储区映像文件和敕令脚本文件,以及上电复位时的法度榜样运行进口的启动法度榜样文件。

对后四种文件的理解很紧张,其感化解释如下。

(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空间中断法度榜样进口表

滥觞:维库电子市场网

您可能还会对下面的文章感兴趣: