文章小生 发表于 2014-9-6 10:25:14

ABOV MCU内核仿真编译时的RAM存储注意事项

最近自己支持的客户在使用ABOV的MCU时出现了一个比较奇怪的现象,电话沟通一直无解。去到现场时一时也被搞的云里雾里,直到静下心仔细看的时候才发现一个隐藏的问题。
         客户做的是一款蓝牙遥控音箱和台灯,程序写的很简洁,编译时完全正确。没有任何警告和错误提示。编译信息输出栏输出如下信息:
         Build target 'Target 1'
         assembling startup.a51...
         compiling main.c...
          linking...
         Program Size: data=134.0 xdata=80 code=9805
         creating hex file from "YL2PG"...
          "YL2PG" - 0 Error(s), 0 Warning(s).
         看样子程序编译的很顺利,接下来仿真也很顺利,客户用的是MC97F1204S的OCD仿真IC,MC97F1204OM在连接OCD-II配置正确,和导入程序正确后,点击运行时程序运行很正常,没有丝毫错误,程序可以正常解码和运行。
      但是当我们将程序导入量产IC时,导入和烧录一切正常,但是上电运行时问题出现了,程序在运行但是却不能正确解码,我们尝试修改了程序的各个部分,增加复位电路等,都没有得到我们想要的结果。
         折腾的好久一直没有找到正确的要点,为什么可以仿真却不能在正常IC上运行呢?
      直到我又一次把目光注意到编译信息上!
         Build target 'Target 1'
         assembling startup.a51...
         compiling main.c...
          linking...
         Program Size: data=134.0 xdata=80 code=9805
         creating hex file from "YL2PG"...
          "YL2PG" - 0 Error(s), 0 Warning(s).
      对!问题就处在这里 Program Size: data=134.0 xdata=80 code=9805仔细看MC97F1204S的数据手册有如下内容

各位发现问题没? 这里编译中显示的是XDATA=80DATA=134这个是RAM空间的占有,而MC97F1204S数据手册上只写了IC只有IRAM所以这个就是问题。编译后产生的内容出现了XDATA而MC97F1204S又没有XRAM所以造成了在运行时不能正常存取编译到XRAM中的数据。造成程序不能正常运行。
      这里MC97F1204S的OCD仿真在连接仿真器后显示的器件型号为MC97F1316这个可能大家都没有注意到。该IC打仿真IC其实是1316的内容 也就是说这颗IC具有能力仿真1316的IC而1316具有XRAM这就造成程序下载进去后出现能够正常运行的情况。所有的谜团就这样解开了。
   ABOV仿真IC有的是可以兼容多个型号的,但是在仿真时候超出可用资源并不会给予提示所以造成了不能正常运行的问题,所以在使用之前一定要搞清楚仿真IC的内核和真实使用IC的区别,以免造成困扰。
   如果遇到没有外部XDATA空间的IC就不要指定外部RAM空间 ,如果没有指定还是编译出外部数据的话,那就按下图进行配置即可解决。
      
经验之谈,望大家指教更正。
                                                                                                                                                               2014-7-23
                                                                                                                                                            FAE:Mark.she

lmt50211 发表于 2014-9-18 17:01:15

本帖最后由 lmt50211 于 2014-9-18 17:02 编辑

以前有遇到过这类情况,需要设置数据类型的。还是必须设为DATA,XDATA不行。
页: [1]
查看完整版本: ABOV MCU内核仿真编译时的RAM存储注意事项