stm32h743的sct文件加入sdram地址后,仿真连接失败

2019-12-11 18:13发布

刚刚使用stm32h743系列发现个问题,之前买的成品核心板 208个脚的也有一样的问题,一开始以为是板子问题,我自己重新画了个四层板,用的176脚的743,结果也是一样的问题,表现为
在指定自己的sct文件之前,使用系统自定义的内存分配,可以仿真加载,但是每次都不是到main函数,而是跑到一开始的汇编代码,你要按3次f5run才能跑起来,前面两次f5没什么反应,这样还好,而且程序下载进去后脱离仿真器,必须要按2次硬件复位按钮才能跑起来,每次上电第一次肯定跑不起来,后来因为用到sdram,所以吧sct文件加入了外部sdram空间,sdram程序部分已经完全没问题了,校验都通过,连仿真器都连不上了,看图片,但是因为自己设计的电路板,所以和429是完全可以替换的,焊了一块429的板子却一点问题都没有,但是有个问题是共同 的,那就是每次上电不会运行,需要连续按复位才能跑起来,之前从未碰倒过这样的现象,不知道谁知道该怎么处理,万分感谢了
捕获.PNG (161.74 KB, 下载次数: 0) 下载附件 2019-10-24 14:24 上传
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
jueenkay
1楼-- · 2019-12-11 18:24
你这表现像是SDRAM里存放了已初始化变量,在未初始化接口的时候启动代码去访问了SDRAM;
试试把SDRAM的ZI去掉,启动的时候不加载;
smilepppp
2楼-- · 2019-12-11 22:52
jueenkay 发表于 2019-10-24 14:43
你这表现像是SDRAM里存放了已初始化变量,在未初始化接口的时候启动代码去访问了SDRAM;
试试把SDRAM的ZI去 ...

LR_IROM1 0x08000000 0x00200000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00200000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+RO)
  }
  RW_IRAM2 0x24000000 0x00080000  {  ; RW data
   *.o (STACK,+RW +ZI)
   *.o (HEAP,+RW +ZI)
  }
  RW_RAM1 0xD0500000 0x00100000  {  ; RW data
   .ANY (+RW)
  }
}

改成这样还是老样子,你们没有碰到过这样的问题吗,还有那个下载进去不运行怎么回事,要复位按钮按几下才可以
gongxd
3楼-- · 2019-12-12 00:11
自动分配到SDRAM比较容易出问题,最好是系统启动后手动分配变量
jueenkay
4楼-- · 2019-12-12 02:32
 精彩回答 2  元偷偷看……
amigenius
5楼-- · 2019-12-12 08:13
上电没初始化SDRAM当然不行,MDK的启动结构是:第一步初始化堆栈指针,然后跑SystemInit,再跳到__main,在__main里会把所有RAM清空,以及加载全局和静态变量,您没在__main前初始化,又在sct里指定了外部SDRAM空间,当然会出事。
amigenius
6楼-- · 2019-12-12 08:24
H7的性能不错,可惜就是没有NEON,可惜

一周热门 更多>