4619|2

775

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

工程在KEIL MDK两个版本中的差异问题 [复制链接]

         这两天一直在完善一个工程,工程不断增大,突然在上机测试的时候发现有几个功能变得不正常,于是有返回到之前的保存的工程状态中,功能有正常了,没办法,一直在找问题,可惜昨天断断续续搞了一天,问题还是没有解决,于是今天早上再凑上一个显示器来做软件仿真。
        发现在仿真的时候,有些功能在板子上是正常的,但是在软件仿真的时候,就出现问题。如一个SWITCH的语句,CASE的状态是能判断出来了,但是就是不进入到CASE的条件下的动作,然后就直接跳出,而且在后面的程序中,同一等级的SWITC的判断语句也是一样,但是在实际的使用中,SWITCH的语句是有生效的,功能是有实现的。
       另外,就是在实践使用过程中,我的工程中有很多标志寄存器用于表示退出和进入状态的,发现在进入,比如是程序的第四层界面的时候,在第四层界面进行操作的时候,正常是要退出标志清零才会退出的,但是在程序运行过程中,程序会从第四层退出到第二层的界面,这样从程序看必须要清零两个寄存器的,但实际并没有满足清零的条件发生。于是我一直在修改清零的条件,问题还是一直存在,但是这部分的程序在软件的上一个版本是没有问题的,就是修改了程序中的其他部分后出现的。
       问题一直烦,后面觉得这个问题应该不是我的程序思维有问题,会不会是软件的问题,于是把工程转到MDK4上编译,下载,问题既然没有发生,很正常。于是有把原来的MDK3.5的程序再下载,问题还在。于是我就以MDK3.5的工程为原本,分别试了几次在MDK4上编译,下载,程序运行都是很正常,如此一来证明了程序本身是没有问题了。
       于是我对比了两个版本中的PROJECT中的设置,发觉文件的设置,ROM,RAM的地址都是一样的。后面我在对比一下编译出来的结果,结果分别如下图。
这个MDK3.5的结果

这个MDK4的结果

RAM的使用都是一样,就是代码的大少不一样。这个让我想到会不会是MDK3.5有代码限制呢,但如果有代码限制,估计软件也应该提示啊,这个让我现在还在想为什么。ARM的使用和软件的架构我没有深入去了解过。所以有以下几个问题想提出来。

1.MDK的版本是有限制的,但是我已经使用破解,理论上没有限制。我从网上看有64K和256K的限制,从我的代码看已经超过了64K,下载代码也显示有65K了,估计代码限制不存在了,我很疑惑,会不会还有其他的限制。
2.同样的工程,在两个不同版本中,显示的代码量不一样。这个我有些疑问,同样的软件,我觉得编译的语法和内核等应该是一样的,按道理代码量不应该有这么大的差异,所以,我觉得会不会是我在软件上设置错误,导致编译的结果不一样。
3.大家在使用ARM的时候,设置MDK,通常会设置那些参数。

此帖出自stm32/stm8论坛

最新回复

我也有同样的问题,工程在KEIL MKD4.70A 编译后下载到机器功能都正常,但用KEIL MKD4.74 编译后下载到机器功能有部分异常。查了好久未找到原因所在。  详情 回复 发表于 2016-7-26 16:12
点赞 关注
 

回复
举报

6040

帖子

196

TA的资源

版主

沙发
 
软件版本不同,生成的代码不一样,这个不足为奇,否则编译器为何要升级
此帖出自stm32/stm8论坛
 
 

回复

11

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
我也有同样的问题,工程在KEIL MKD4.70A 编译后下载到机器功能都正常,但用KEIL MKD4.74 编译后下载到机器功能有部分异常。查了好久未找到原因所在。
此帖出自stm32/stm8论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表