0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

应用IAR开发EFM32过程中的一些经验积累

2oON_changxuemc 来源:lp 2019-03-26 15:12 次阅读

俗话说“工欲善其事、必先利其器”,为了能更好的开发ARM单片机EFM32,熟练掌握一个或者多个IDE是必须的。IAR的调试器、编译器以及汇编器同时集成在一个IDE中,共同来开发和调试应用程序,这样的集成环境可以带来很多好处,比如:调试过程中可以进行代码编辑。在一个调试过程中,你可以直接在被调试的源代码中进行修改,修改的代码可以在程序重新编译后起作用。以下分享5部分的内容,是笔者应用IAR开发EFM32过程中的一些经验积累,希望能对看到文章的人有一定的作用。

1)关于Run to(在工程中Project>Options>Debugger>Setup>Run to)

如下图:

默认工程Run to的内容是main,这个选项指定了程序调试的起点,注意这里写的是程序调试的起点并不是程序的起点,而且我们需要明白main不是程序的起点,编译器把一些初始化工作放在了main之前,比如全局变量的初始化。那么我们调试的时候也可以输入其它的调试起点,我们可以指定程序中IAR识别的任意标号或者函数名称。

2)关于在反汇编窗口和内存窗口中快速定位函数位置和变量位置

我们经常需要在Disassembly窗口中找到指定函数的位置,或者需要在Memory窗口中找到指定变量的位置,一般情况下选中函数名称然后把函数名称拖放到Disassembly窗口,相关函数就会显示在Disassembly窗口中,也可以把变量名称用相同的操作显示在Memory窗口中。

3)单步调试速度缓慢的问题

我们在单步调试过程中如果发现速度缓慢,那么以下的几点需要引起我们的注意:

如果使用硬件仿真系统,我们需要为单步调试留下足够的硬件断点,在调试中的单步运行通常是用断点来实现的,通过把断点设置在下一个语句后,来完成单步调试的功能。硬件的断点数量是有限的,如果没有可用的硬件断点,调试器就会在每个汇编指令处停止一下,这样完成一条完整的语句的所有汇编代码越多时间就越长。

在Trace和Function Profiling窗口中使用Enable/Disable按钮关闭数据跟踪功能。因为在每个单步之后要收集这些跟踪的数据,所以数据跟踪可能会降低单步的速度。需要注意的是,紧紧关闭相关的窗口是不能关闭数据跟踪功能的,必须通过Enable/Disable按钮来完成。

只打开有限数量的SFR寄存器窗口,这可以通过2种方法实现。一种是通过在Watch窗口中手动输入SFR寄存器的名字;另一种是创建自定义的特殊功能寄存器组,操作步骤如下,Tools>Options>Register Filter>Use register filter如下图:

选择New Group

把关心的SFR放到组中

如果不需要Memory和Symbolic Memory窗口,关闭它们,因为在每个单步之后要读出这些内存数据。

如果不需要Watch,Live Watch,Locals,Statics窗口,关闭它们,原因同上。

关闭Stack窗口和相关的设置,Tools>Options>Stack,去掉Enable graphical stack display and stack usage tracking的选择,如下图:

如果可能,提高调试器和目标板的通讯速度。

如下图:

IAR集成环境产生大量的支持信息,这允许调试过程中在没有运行损失的情况下显示完整的函数调用链。这通常会帮助我们确定目前函数的上下文,跟踪变量和参数中的不正确值的从而定位出现的问题。

5)EFM_ASSERT宏的合理应用

EFM32的CMSIS库中有一个宏被大量的应用,它的名字叫EFM_ASSERT。这个宏应用了2个参数,一个是__FILE__,一个是__LINE__,这在IAR中分别表示文件名和文件内的行号。这2个参数可以直接告诉我们出现问题的文件和所在的行。

以下通过一个具体的EFM32代码来看看以上提到的几点的应用。

为了演示gpioSetup内部的问题,我们可以把程序调试的起点直接设置到gpioSetup,如下图:

然后全速运行程序,发现程序停在了assertEFM函数内部,通过View>Locals,如下图:

可以看到问题出在em_gpio.c的270行,该行正是GPIO_PinModeSet函数的第一个语句。

可以快速的定位到问题出在以下位置,如下图:

作为主推低功耗的EFM32系列单片机,想要最终实现低功耗,除了硬件本身支持之外,合理的代码也是很重要的。通过不断的调试,我们可以更加准确的把握这一系列的单片机,也可以掌握很多的调试技巧,希望以后有更多的技巧分享给大家。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6036

    文章

    44557

    浏览量

    635097
  • IAR
    IAR
    +关注

    关注

    5

    文章

    351

    浏览量

    36674
  • 函数
    +关注

    关注

    3

    文章

    4331

    浏览量

    62593

原文标题:IAR调试EFM32单片机时的一些技巧

文章出处:【微信号:changxuemcu,微信公众号:畅学单片机】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于EFM32的无磁热表的方案

    针对EFM32的低功耗特性以及LESENSE接口的应用特色,本文将详细阐述基于EFM32的无磁热表的方案。
    发表于 10-24 15:17 2664次阅读
    基于<b class='flag-5'>EFM32</b>的无磁热表的方案

    EFM32的电容式触开关方案

    针对EFM32的低功耗特性以及LESENSE接口的应用特色,本文将详细阐述基于EFM32的 电容式触 开关方案。 LESENSE简介 LESENSE接口是EFM32微控制器利用片上外设实现可配置传感器检测的低功耗接口
    发表于 10-24 15:28 2344次阅读
    <b class='flag-5'>EFM32</b>的电容式触开关方案

    EFM32平台自平衡小车制作

    EFM32的低电流性能,加上低于2μs的启动时间使其电池寿命延长了至少4倍。外设方面,EFM32能提供低功耗的外设,包括低能量的UART和I2C,A/D和D/A转换器和个计数器和
    发表于 05-11 07:04

    EFM32系列32位MCU的GPIO配置

    。在实际的功能开发过程中,为提高代码的易读性与可移植性,可以自定义相关的高级集成化功能。外设配置方面,需要根据数据手册具体描述确定I / O口的多路复用和GPIO可用性,外设功能通常会复用到几个
    发表于 07-08 04:20

    EFM32是什么?如何去使用EFM32单片机?

    请问EFM32是什么?如何去使用EFM32单片机?
    发表于 07-01 08:47

    使用WiFi的过程中总结的一些经验

    简述在我们做项目开发,经常会用到WiFi,这次给大家分享下我在使用WiFi的过程中总结的一些经验
    发表于 08-05 07:30

    分享电源工作积累一些实用经验

    将为大家分享自己在十年研发电源工作积累一些实用经验,希望对大家有所帮助。1. 变压器图纸、PCB、原理图这三者的变压器飞线位号需致,
    发表于 12-30 07:42

    EFM32芯片的使用

    前言最近在学习小壁虎EFM32芯片的使用,需要用ADC采集电压,学习之中,遇到一些小问题和需要注意的地方,现将其记录下来,避免以后自己再次踩坑和往后可以学而时习之;好了,进入正题。代码主函数:int
    发表于 01-20 06:52

    EFM32_开发环境搭建

    EFM32的软件环境搭建,涉及到keil和IAR
    发表于 03-21 11:39 0次下载

    EFM32产品应用手册

    Energy Micro EFM32 Gecko MCU系列产品提供新的节能技术,并且32位EFM32集成许多低功耗的外设去实现比其他低功耗8位,16位和32位微控制器多4倍的电池寿命。
    发表于 09-11 14:13 36次下载
    <b class='flag-5'>EFM32</b>产品应用手册

    IAR开发EFM32单片机的一些经验和技巧

    俗话说“工欲善其事、必先利其器”,为了能更好的开发ARM系单片机EFM32,熟练掌握个或者多个IDE是必须的。
    发表于 01-06 09:42 3844次阅读
    <b class='flag-5'>IAR</b><b class='flag-5'>开发</b><b class='flag-5'>EFM32</b>单片机的<b class='flag-5'>一些</b><b class='flag-5'>经验</b>和技巧

    IAR调试EFM32单片机时的一些技巧资料下载

    电子发烧友网为你提供IAR调试EFM32单片机时的一些技巧资料下载的电子资料下载,更有其他相关的电路图、源代码、课件教程、中文资料、英文资料、参考设计、用户指南、解决方案等资料,希望可以帮助到广大的电子工程师们。
    发表于 04-23 08:47 8次下载
    <b class='flag-5'>IAR</b>调试<b class='flag-5'>EFM32</b>单片机时的<b class='flag-5'>一些</b>技巧资料下载

    Verilog设计过程中一些经验与知识点

     “ 本文主要分享了在Verilog设计过程中一些经验与知识点,主要包括块语句、阻塞赋值和非阻塞赋值 以及结构说明语句(initial, always, task, function)。”
    的头像 发表于 03-15 12:19 2372次阅读

    使用Keil过程中一些不顺手的地方

    首先声明本人并非Keil黑,本期纯吐槽下在使用Keil过程中一些不顺手的地方,也极有可能讲的并不全面,不客观,望见谅,轻拍,也欢迎评论区讨论。
    的头像 发表于 05-26 10:53 1333次阅读

    处理网络难题经验 网络维护过程中一些典型、经典问题的解决方法

    网络维护,是很多初阶网工必须要做的工作。但说起来容易,做起来难,想要做好这个工作,需要的不仅仅是技术的加持,更多的是经验积累。 今天,和你分享份关于一些网络维护
    的头像 发表于 04-26 16:40 1287次阅读