9192|12

61

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

STM32外部RAM存储数据JLINK无法调试 [复制链接]

我讲外部RAM存储数据,内部RAM放堆栈,程序很简单,就是将外部ram复制,同时读取,读取后用串口发出来,我用JLINK调试,程序始终停在串口等待处,查看赋值也不对。我手动复位板子,不用JLINK带,STM32能够对外部RAM赋值,并且能够从串口输出来,结果很正确。      这时我讲ICF文件换成只用内部RAM时,可以用JLINK全速运行,工作正常。
      这里就想问问各位,为什么用到外部RAM时,JLINK全速运行就不正确了呢?不要说ICF文件不对,不用JLINK带,自己运行的时候是正确的。
开发环境如下:
IAR5.40
JLINK V7  驱动4.12(4.0x的不行才更新的)
此帖出自stm32/stm8论坛

最新回复

                                 波特率没问题,不用jlink带,自己跑,出来的数据都是正确的  详情 回复 发表于 2010-3-29 08:24
点赞 关注
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
ICF文件写法:
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__       = 0x08000000;
define symbol __ICFEDIT_region_ROM_end__         = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__       = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__         = 0x2000FFFF;
define symbol __ICFEDIT_region_EXTSRAM_start__   = 0x68000000;
define symbol __ICFEDIT_region_EXTSRAM_end__     = 0x687FFFFF;

/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__   = 0x400;
define symbol __ICFEDIT_size_heap__     = 0x200;
/**** End of ICF editor section. ###ICF###*/


define memory mem with size = 4G;
define region ROM_region      = mem:[from __ICFEDIT_region_ROM_start__   to __ICFEDIT_region_ROM_end__];
define region RAM_region      = mem:[from __ICFEDIT_region_RAM_start__   to __ICFEDIT_region_RAM_end__];
define region EXTSRAM_region   = mem:[from __ICFEDIT_region_EXTSRAM_start__   to __ICFEDIT_region_EXTSRAM_end__];

define block CSTACK    with alignment = 8, size = __ICFEDIT_size_cstack__   { };
define block HEAP      with alignment = 8, size = __ICFEDIT_size_heap__     { };

initialize by copy { readwrite };
do not initialize  { section .noinit };

place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };

place in ROM_region   { readonly };
place in RAM_region   { block CSTACK, block HEAP };
place in EXTSRAM_region   { readwrite };

麻烦大家帮帮忙解决一下,不然调试起来就麻烦了
此帖出自stm32/stm8论坛
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 到现在为止,发现只要readwrite 放在内部就没有问题,只要放在外部,JLINK全速运行也会出错
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

4
 
怎么感觉问题出在STM32上啊?
如果这样写
place in RAM_region   { block CSTACK, readwrite  };
place in EXTSRAM_region   {  block HEAP }
怎么弄都可以,但是如果这样写
place in RAM_region   { block CSTACK, block HEAP };
place in EXTSRAM_region   { readwrite    }
怎么弄都不行,最后发现,直接复位,STM32都不运行,只能断电后重新上电才能运行,不知道是不是STM32的问题啊,请有碰到过类似问题的朋友帮帮忙啊
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 编译器的启动代码一般会在main函数之前把readwrite区的变量初始化,把readwrite区放在外部RAM中,外部总线控制器貌似在main之前还没有初始化吧? 所以可能是初始化变量的过程出现了问题。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 启动的时候先初始化了FSMC的,在启动代码中很明显可以看到,程序不是死在初始化中,而是死在main里面的函数里面,这个才比较奇怪
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 
在启动代码中一开始就有对FSMC的初始化,只要对预编译进行行定义 #define DATA_IN_ExtSRAM,初始化就没有问题,所以不是初始化的问题。
LDR  R0, = SystemInit_ExtMemCtl ; initialize external memory controller
                MOV  R11, LR
                BLX  R0
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

8
 
呵呵,没有这么用过,所以也是乱猜的。
程序死在main里了,怎么个死法?进fault了?
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 死在串口发送那里,看看外部的ram也不正确,很奇怪
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 串口发送的问题,把那个WHILE屏蔽掉试试
此帖出自stm32/stm8论坛
 
 
 

回复

97

帖子

0

TA的资源

一粒金砂(初级)

11
 
                                 屏蔽掉后读出和写入的数据部正确
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
                                 如果有数据,再看看你的波特率设置
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

13
 
                                 波特率没问题,不用jlink带,自己跑,出来的数据都是正确的
此帖出自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
快速回复 返回顶部 返回列表