OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 24843|回复: 9

一进仿真R13(SP)的值就是0xfffffffc,进不了main,有什么可能的原因呢?

[复制链接]

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
发表于 2011-3-25 14:49:11 | 显示全部楼层 |阅读模式
 如题,谢谢大家,用的芯片是stm32f103ZET6
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-3-25 14:53:27 | 显示全部楼层
回复【楼主位】xtvv:
-------------------------------
问题太泛,无法解答.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
 楼主| 发表于 2011-3-25 15:01:09 | 显示全部楼层
回复【2楼】正点原子:
-------------------------------
刚开始做,main文件是这样的:
#include “sys.h”
int main(void)
{
  u8 str;
  Stm32_Clock_Init(9);
  while(1)
  {
  } 
}
sys.h是引用的system文件夹的。进入仿真后执行这行              
 LDR     R0, =__main
                BX      R0
通用寄存器R13的值就是0xfffffffc,本来应该是0x200000260(堆栈设置大小0x00000200),然后就死在这里了
在ALIENTEK 开发板上一直用的挺好,现在换了个ZET6的板子就不好用了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-3-25 17:30:28 | 显示全部楼层
在ZET6里面应该都没问题的.
豪华版的用的也是这个,也没问题.可能你自己修改了不应该修改的东西.
你直接用我的代码,刷到ZET6里面一样运行的,当然有些是需要变动的.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
 楼主| 发表于 2011-3-28 10:40:53 | 显示全部楼层
回复【4楼】正点原子:
-------------------------------
谢谢,尝试直接用的例程里跑马灯的实验,改了芯片和启动文件,进仿真还是一样的问题。又试了下自己的程序,发现把sys.c里除了Stm32_Clock_Init(9);这个函数以外的都去掉以后就正常进入仿真了;不过还是不明白,执行  LDR     R0, =__main 
                BX      R0 ,这里应该还没有进入main函数,只是一些堆栈和参数的初始化,怎么会有问题呢?另外和启动方式,堆栈大小有没有关系呢?谢谢了
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
 楼主| 发表于 2011-3-28 10:49:48 | 显示全部楼层
多写了几个函数,又出这个问题了,到底问题出在哪里呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-3-28 11:40:53 | 显示全部楼层
回复【6楼】xtvv:
-------------------------------
又进不了主程序了?
这几天我也在弄ZET的,不过问题也一堆.我的更奇怪,由于一个未用到的.c文件,导致程序不正常运行.去掉后正常,但是去掉后再加进来,程序同样正常.很诡异...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
 楼主| 发表于 2011-3-29 08:27:30 | 显示全部楼层
上帝啊,按原子说的,把一些函数去掉,调试正常后再加上,果然没出这个问题了,不过现在启动文件没用_hd.s,一会儿换上试试
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2011-3-29 08:31:16 | 显示全部楼层
回复【8楼】xtvv:
-------------------------------
另外我发现了一些问题.stm32f10x.s和_hd.s还是有很大区别.尤其注意看一下那些中断函数,我昨晚发现了DMA的中断入口函数名称改变了.其他的还没对比,大家写代码的时候自己注意一下,调不通的时候,兴许就是这里出问题了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

6

主题

37

帖子

0

精华

初级会员

Rank: 2

积分
83
金钱
83
注册时间
2011-3-25
在线时间
0 小时
 楼主| 发表于 2011-4-2 12:41:06 | 显示全部楼层
测试了好久,原因仍然未知,把测试结果简单说下,算是结贴吧
问题:在MDK4.12中经常进不了main,有时候是一进仿真SP值错误,有时候是在__main的时候发生硬fault。
1,SP值错误的情况,根本没法仿真测试,不过去掉些函数再加上就正常了,以后也没出这个问题。
2,硬fault错误,都是用法错误,单步测试下,发现是__user_setup_stackheap这个函数的问题,此时变量copy等都已经完成,应该属于库初始化函数,但研究了启动文件,sct文件,map文件甚至一些临时文件,都没发现问题在哪里...
2,同样的程序在MDK4.12中,选中USE Microlib后运行正常,但即使程序中只有sys.h和main函数,不选它也会有问题。
3,同样的程序在MDK3.80中,选不选Microlib一直都正常,怎么折腾都没问题...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 16:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表