IAR FOR AVR 仿真过程中出现全局变量值不断随意变化的问题
本文记录使用IAR FOR AVR 使用过程中出现的问题,确保自己以后能够有史可查,也分享给遇到同样问题的朋友。
版本信息:IAR Assembler for AVR 5.40.0 (5.40.0.50237)
在使用IAR调试程序的时候,发现我定义的结构体全局变量即使我不去对他进行赋值,他的成员数值也在不断的变化,使得整个程序运行出现问题。
此问题没有完全了解清楚,只是暂时解决,附上问题过程的全部思路。
1:是否堆栈溢出,内存是否够用。查询编译生成的map可以有效的解决疑惑
对编译器进行一些必要的设置,使其能够生成我们需要的文件。
在工程-》Options-》Linker-》List(不同的IAR版本会稍有不同)下做如下勾选,使其能够生成对应的map文件

设置完成之后,重新编译工程。在工程-》Debug-》List文件加下就能看到对应的map文件了。使用记事本打开map文件如下:

可以看到工程堆栈的使用情况,以及整个程序所占用的内存和sram大小。(我的并没有超出范围)
2:是否全局变量定义出现了问题
仔细查看了结构体的成员,发现基本没有问题。但是我float,int,char三种类型变量的定义较为凌乱,一想到编译器的对齐方式,我重新整理了一下内部的定义,将char型的变量完成之后再批量进行int,float型变量的定义。
进过此种修改之后,发现成员数值随意变化的现象没有再出现。以此断定是编译对齐方式的影响。
此问题暂时解决,欢迎遇到,结果了此问题的朋友给我留言,共同探讨出现这种状况的原因。
附上编译过程查看ram空间使用情况的方法:
在菜单栏“tools”-》options-》messages下做如下设置:

重新编译就能看到工程的资源占用情况。

IAR FOR AVR 仿真过程中出现全局变量值不断随意变化的问题的更多相关文章
- cloudsim仿真过程中内存占用过大问题的解决
在写<云环境下基于预算和截止期约束的科学工作流弹性资源提供和调度>这篇文章时用到了cloudsim仿真软件进行实验仿真,在实验过程中遇到了当仿真执行时间过长时程序总是不能正常结束,由于仿真 ...
- opnet仿真过程中SEED的概念问题 分类: opnet 2014-11-02 15:25 69人阅读 评论(0) 收藏
仿真配置中SEED的概念:仿真随机种子,是产生随机数的种子值,反应随机数的状态.只要选定一个种子值,整个随机事件系统就固定了,复杂仿真的随机过程就成了一次实现.目的是测试仿真系统的稳健性,具体来说,针 ...
- [置顶] NS2中TCP拥塞控制仿真过程中盲点解析
最近利用NS2做TCP拥塞控制协议的仿真,发现很多变量的方法含义都是解释的不清楚,给核心模块修改带来很多麻烦,所以决定用最准确的语言解释成员变量.方法,术语等的含义.限于个人水平,若有错误请留言指正! ...
- EVALUation mode running with code size limit:2k keil进行仿真过程中出现的报错
EVALUation mode running with code size limit:2k 如果keil软件未破解,会限制程序的存储大小.第一是你的软件没有破解,不能编译2K以上的程序:这种情况下 ...
- simulink仿真过程
Simulink求解器 Simulink仿真过程 Simulink 模型的执行分几个阶段进行.首先进行的是初始化阶段,在此阶段,Simulink 将库块合并到模型中来,确定传送宽度.数据类型和采样时间 ...
- 使用Vmware过程中,突然网络连接不上问题
###第一次的解决方法: 1.我一般过一段时间就会对虚拟机进行拍快照备份:在使用过程中,如果没有太大变化,恢复网络正常的快照一般是能解决问题的,但是要记得恢复快照之前要备份你已经修改过的所有东西,以防 ...
- Java中到底是值传递还是引用传递?
Java中到底是值传递还是引用传递? 我们先回顾一下基本概念 实参和形参 参数在编程语言中是执行程序需要的数据,这个数据一般保存在变量中.在Java中定义一个方法时,可以定义一些参数, 举个例子: p ...
- c语言头文件中定义全局变量的问题
c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...
- 函数可重入问题reentrant functions(函数执行过程中可以被中断,允许多个副本)
最近经常听到这个名词,以前也听到过,不过接触更多的是“线程安全问题”,而且本人也一直理解的是两个名字的含义是一样的.今天仔细总结一下这个名词相关的概念. 引用博文:可重入函数和不可重入函数 (http ...
随机推荐
- django之关联field 描述子
"""Accessors for related objects. When a field defines a relation between two models, ...
- session的处理机制
https://blog.csdn.net/deepwishly/article/details/6659613 https://blog.csdn.net/dz45693/article/detai ...
- 阿里云短信验证使用(PHP)
1.登陆阿里云后台,事先添加签名和模板 2.使用composer下载阿里云SDK composer require alibabacloud/sdk 在PHP7.0下安装需要提前安装curl扩展 -c ...
- Swoft 图片上传与处理
上传 在Swoft下通过 \Swoft\Http\Message\Server\Request -> getUploadedFiles()['image'] 方法可以获取到一个 Swoft\Ht ...
- React props
class WebSite extends React.Component { constructor() { super(); this.state = { name: "菜鸟教程&quo ...
- ImportError: No module named managers
代码: import os import cPickle as pickle filename = '../dftest.pkl' if(os.path.exists(filename)): w=op ...
- js和jQuery的互相转换
//jQuery => DOM对象 var a=$(“#id”) var b=document.getElementById(“id”) var c=a[0] 或 var c=a.get(0) ...
- jmeter(一)
jmeter简介 Apache jmeter是Apache组织开发的基于java的压力测试工具 与LR功能基本相同,根据用户数来选择用哪个更合适 为什么要做压力测试? 了解被测系统一般 ...
- task 异步 进程与线程的区别
用Wait方法(会以同步的方式来执行),不用Wait则会以异步的方式来执行 要在主线程中等待后台线程执行完毕,可以使用Wait方法(会以同步的方式来执行).不用Wait则会以异步的方式来执行. Tas ...
- [转载]EF或LINQ 查询时使用IN并且根据列表自定义排序方法
原文地址:EF或LINQ 查询时使用IN并且根据列表自定义排序方法作者:李明川 EF和LINQ改变了原有的手写SQL时期的一些编码方法,并且增强了各数据库之间的移植性简化了开发时的代码量和难度,由于很 ...