在 IAR 中定义大数组变量,导致程序不能运行的解决办法

解决方法
在 IAR 中定义大数组变量,导致程序不能运行的解决办法总结
MSP430 大数组定义,不能正常运行的问题

定义太大的 RAM,那就有可能会遇到 RAM 中定义的变量/数组在超过一定范围的时候,MSP
程序不能正常运行的现象吧.一般初步判断,可以用 I/O 输出电平来确定程序进程.这样可以非常方
便的知道该问题是由于 WDT 造成的,(RAM 的初始化时间大于 WDT 默认的 32MS 时间,因此 MSP
复位)

下面来看下解决的办法:

A、 对数组用 __no_init 定义,上电编译器不产生特殊的附加函数去初始化 RAM
例:__no_init u8 GprsTXBuf[1000]; 注意关键字以两个下划线开头,尾部没有下划线,
中间一个下划线。

B 、修改 IAR 中 Cstartup.S43 文件中__program_start 子程序,增加一个关闭 WDT 的操作或者
设置 WDT 时间长度超过 32MS。(建议不到万不得已,不要改这个文件!)
文件地址:IAR Systems\Embedded Workbench 6.0 Evaluation\430\src\lib\430

C 、在 Project–Options–Linker–Config中选择 Override default programe,并将 Entry lib 设置
成 __program_start

上述是已知解决 RAM 初始化时间超 WDT 默认而复位的解决方法

一般编译器中 C 项自动开启,只要加上 A 项就可以解决问题,B 项在不清楚的情况下,不建
议做修改。

本文摘自网络。

 

分享到: 更多
版权申明:

本站保留所有原创文章的版权,本站地址:奔跑的博客[http://www.elecbench.com]

原创文章转载时请注明出处,并添加文章所在页面的链接:http://www.elecbench.com/%e5%9c%a8-iar-%e4%b8%ad%e5%ae%9a%e4%b9%89%e5%a4%a7%e6%95%b0%e7%bb%84%e5%8f%98%e9%87%8f%ef%bc%8c%e5%af%bc%e8%87%b4%e7%a8%8b%e5%ba%8f%e4%b8%8d%e8%83%bd%e8%bf%90%e8%a1%8c%e7%9a%84%e8%a7%a3%e5%86%b3/

本站所有 2010年3月4日 以后发表、未标明为“转载”的文章均是本站原创。

发表评论


(设置自己的个性头像)

*

申请属于你的免费顶级域名