guanjianguo 发表于 2008-12-24 11:16:02

STM32 调试过程中 的困惑

我在使用STM32 调试过程中发现,若编译的文件 CODE 大于12K( DATA 大于2K) 后,就不能在RAM 中调试了,(经常全局变量出错,且 还会进入hard fault异常处理), 在FLASH 中调试就正常,  我用STM32F103VB,120K FLASH,20K RAM.  请高手说明;
       STM32 的FLASH 擦写次数,不同资料有不同说法, 有3000次,10000次, 100000次, 到底是多少? 

萧星-96138 发表于 2008-12-24 11:18:38

RE:STM32 调试过程中 的困惑

关于ram的空间请楼主改一下ram.xcl文件的ram空间
flash擦写次数 官方资料正常环境是10000次,当然在使用中可能会有出入。

zangdianjun 发表于 2008-12-24 11:20:12

RE:STM32 调试过程中 的困惑

资料上好像是1000次!实际使用可能有差别,还达不到这个次数!

萧星-96138 发表于 2008-12-24 11:26:09

RE:STM32 调试过程中 的困惑

最新的资料是10000次是正常环境下测试的。 使用很多出现不到1000就不行了,很少。
   还有一种情况就是在调试的时候你出现了误操作,使flash进入了保护状态,而不能下载程序了。解决办法:用isp(串口)下载一次程序,即可解决。
    如果真的是flash次数限制,建议在ram中调试

guanjianguo 发表于 2008-12-24 13:54:50

RE:STM32 调试过程中 的困惑

版主: lnkarm_ram.xcl 关于 RAM 大小的定义如下:
// Code and data in RAM
-DRAMSTART=0x20000000
-DRAMEND=0x20004FFF
-DROMSTART=RAMSTART
-DROMEND=RAMEND
4FFF 不就是 20K 吗,(20 X 1024),正是STM32F103VB,的 RAM 大小啊.

guanjianguo 发表于 2008-12-24 14:39:10

RE:STM32 调试过程中 的困惑

上午我说的在FLASH 中可以正常工作,在RAM 中不能调试 的问题, 按版主指点,修改 lnkarm_ram.xcl 中下面内容,就好了
// -D_CSTACK_SIZE=100// 原内容
// -D_HEAP_SIZE=100    // 原内容
-D_CSTACK_SIZE=400   // 修改了
-D_HEAP_SIZE=200      // 修改了

不过我不明白 这2个参数在 堆栈中起什么作用,STM32不是满堆栈工作方式吗?那不就是从0x20004FFF自动往下延伸的吗
页: [1]
查看完整版本: STM32 调试过程中 的困惑