您的位置 首页 开关

嵌入式技巧:ARM的三种中止调试办法的介绍

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

  1 嵌入式软件开发流程

  参照嵌入式软件的开发流程。第一步:工程树立和装备。第二步:修改源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:履行文件的固化。

  在整个流程中,用户首要需求树立工程并对工程做开始的装备,包含装备处理器和装备调试设备。修改工程文件,包含自己编写的汇编和C言语源程序,还有工程编译时需求编写的链接脚本文件,调试进程中需求编写存储区映像文件和指令脚本文件,以及上电复位时的程序运转进口的发动程序文件。

  对后四种文件的了解很重要,其效果解说如下:

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

  (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为 I%&&&&&%的写中止处理函数 */

  (3)在0x18处的IRQ或0x1C处的FIQ中止进口函数中,获取中止源、铲除中止挂起标志、经过已界说的中止源函数指针进入用户详细某中止处理程序。

  选用动态的中止处理办法,在中止源较多的状况下,中止呼应时刻和程序功用得到优化。别的,在调试方面,此处理办法具有便于盯梢调试的长处,而且根据需求,能够便利改换中止处理函数。

  3 中止调试

  软件调试能够在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空间中止程序进口表

作者:skid

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/198962.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部