嵌入式技巧:ARM的三种中断调试方法



    1 嵌入式软件Software开发流程

    参照嵌入式软件Software开发流程步:工程建立和配置第 2步:编辑源文件第 3步:工程编译和链接第 4步:软件Software调试第 5步:执行文件固化

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

    对后 4种文件理解很重要其作用解释如下

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

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

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

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

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

    2 中断设计

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

    具体思路方法是:

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

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



    (2)在具体某中断源中断处理

    如: SetInterrupt(IIC_INTIICWriteIsr);

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

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

     void ISR_IrqHandler(void)
{
    IntOffSet = (unsigned )INTOFFSET;
    Clear_PendingBit(IntOffSet>>2) ;
(*InterruptHandlers[IntOffSet>>2]);

// 具体某中断处理
}



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

    3 中断调试

    软件Software调试可以在SDRAM中或FLASH中进行在SDRAM中读写方便访问速度快般软件Software调试应在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中运行

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

    如:LDR PC =HandleIRQ

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

Tags: 

延伸阅读

最新评论

发表评论