10477|31

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

是ST-LINKII有BUG,还是我设置有问题? [复制链接]

就是样本里面的程序添加了sprintf函数, 下载在FLASH中调试器报错,但可以手工复位正常运行.
下载到RAM里面运行不正常,一会程序就跑飞了(短于10秒钟).

下面是整个工程打包文件,请帮忙验证.

LCDDemo.part01

LCDDemo.part02

LCDDemo.part03


https://bbs.eeworld.com.cn/upfiles/img/200712/2007122617841983.gif
此帖出自stm32/stm8论坛

最新回复

                                 在万利的扳子上运行例程lcddemo,没有变动任何设置,在debug的时候,先有一个对话框说没有探测到设备,然后就是和lz开始的时候一样的对话框.是在flash内运行的,boot0/1 = 0/0;开始还以为是注册码的问题(我用一个注册文件在两台电脑上安装了IAR),后来重新申请了注册码,重新安装iar,不行;重新安装操作系统后一切重装,还是不行.不过今天莫名其妙的好了,可以运行了.很奇怪的问题,弄了这么长时间,一点头绪都也没有.不过还好,可以运行了.  详情 回复 发表于 2008-4-11 10:38
点赞 关注
 

回复
举报

80

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

上面文件下载后改名成LCDDemo.part01,02,03就可以了

以为在debug();之前定义变量ST-LINK II不支持,把int j=0;char rgbhDisp[5];
定义成全局变量后,虽然下载到FLASH不再报错并且能正常运行,但下载到SRAM里面的程序还是运行出错.
此帖出自stm32/stm8论坛
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

IAR FOR ARM 版本是Ev4.42a

                                  
此帖出自stm32/stm8论坛
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

4
 

根据你的描述,很可能是你的堆栈溢出使程序跑飞

请注意SRAM的容量有限,你把程序放到RAM中运行,必然导致可用的数据变量的空间减小,堆栈也在SRAM中。

一种合理的解释是,你的堆栈已经溢出,在Flash中运行正常,是因为还有很大的RAM区没有用到,堆栈溢出没有破坏有用的程序和数据;而在SRAM中运行时就没有这么幸运了,RAM被压缩,堆栈溢出时破坏了有用的程序或数据。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

5
 

谢谢斑竹

1、使用的是万利的DEMO程序。
2、把栈放的很大还是有问题。
3、报错的时候程序还没有开始运行,仅仅是下载结束了。

此帖出自stm32/stm8论坛
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(中级)

6
 

编译输出格式不对

在linker/output,把ALLOW C-SPY specific extra output file 构上
在linker/extra output,把generate extra output file钩上
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

7
 

不是6楼说的问题,你说的两向都是正常的

您可以把上面的工程下载测试一下,谢谢。
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 

不是堆栈溢出,是存储器溢出了,更严重!

看看5楼贴出的截图:

15 332 bytes of CODE memory
19 880 bytes of DATA memory
 1 194 bytes of CONST memory

STM32最多就20K字节的RAM,你的代码用了15K,数据区用了近20K,当然会在下载时报错了,硬件存储器根本没有这么大!
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

9
 

斑竹,5楼的图代码是在FLASH中啊

                                 呵呵
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 

可你在一楼说下载到Flash运行正常,下载到RAM里面运行不正常

另外,据我所知sprintf使用了可变参数传递,需要编译器很好支持,不知你从哪里搬来的sprintf,是否能够匹配我就不好说了。

既然是添加了sprintf函数后出问题,你还是在这个函数上找找原因吧。
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

11
 

sprintf是IAR自身的标准函数啊

在项目中51、AVR、430都用它,从来没见过标准函数本身有问题。

对IAR标准函数的信任就象对ST芯片信任一样,不会轻易怀疑BUG的存在。
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

12
 

并且仅仅是不能用ST-LINK II调试

下载到板子里面的程序运行还是稳定正常的。

其实要求有些高了,不到200元买的东西,能下载就好了 :-)
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

13
 

我刚刚使用ST提供的GPIO例子测试过,没有问题

在程序中增加了下面的测试函数:

volatile int varA = 100;
char string[100];
void testing(void)
{
  sprintf(string, "This is varA = %d", varA);
}

然后在主循环前调用testing(),没发现问题。

我的开发工具是IAR EWARM 4.42A。
此帖出自stm32/stm8论坛
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(初级)

14
 

不争论了

真正弄清楚这个原因估计要耗费很多时间。

显式的BUG是容易处理的,有些BUG往往是在特定条件下才能显现出来。
现在这个问题可能是万利光盘中的例程不适合添加sprintf函数(一般不会有问题,但毕竟我自己也没有认真研究过FWLib,有些规则不是很清晰,不敢说不是例程的问题),也可能是仿真器的BUG。

我一楼上面出问题的打包工程文件,和斑竹一样,也是使用了EWARM4.42A,两个版本(EWARM-KS-442A、EWARM-EV-442A)都试过了,显现出来的错误信息完全相同。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 

上午虽然GPIO例子调通了,但真不明白门朝那边开---晕糊呀~~~

                                 看来和打拳一样,先研究研究对方的套路来~~~
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

16
 

如果这样的话就好办了,等我们测试一下再说

                                 顺便问一下,LZ在用STM32做什么产品?
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

17
 

回15楼:香功!

                                 哈哈~~~
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

18
 

准备做记录仪表,嵌入多种通讯协议

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

19
 

看到16楼关于多种通讯协议的问题,俺代表农友请个愿~~~

ST能否提供一个类似于串口控件MSCOMM,SPCOMM的驱动软件,分别供STM32和PC端使用.
这样就为我们这些USB驱动菜鸟做了件天大的善事~~~

这样我们可以用它下载程序和PC与STM32进行数据交换及通讯~~~

先谢谢了~~~
此帖出自stm32/stm8论坛
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

20
 

我下载试了试,和你的描述不一样么

我可以下载到RAM,但是运行的时候,在液晶显示1000左右时,PC值会变成0xfffffff0,导致程序跑到HardFaultException()中,我没仔细看程序,但应该是你代码的问题吧。

在FLASH里运行倒是正常的。不过下载的时候出现过一次1楼描述的错误,但重起IAR之后就好了,这个可能是ST_LINK II和IAR的衔接还不是很好的关系吧,我猜的。。。
此帖出自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
快速回复 返回顶部 返回列表