OpenEdv-开源电子网

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

总结编译调试错误,方便自己,也方便大家

[复制链接]

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
发表于 2013-10-23 14:14:25 | 显示全部楼层 |阅读模式
      由于学习STM32也不久,经常遇到一些编译调试的错误,但是老是找不到原因,多亏身边大侠的帮忙才得以解决。因此,将之前遇到的一些错误进行总结,方便以后自己查看,也希望能满足某些有需要的同行的需求。如果大家也有相关的经验,希望能写出来供大家分享。在此先谢谢啦!
      
      一、JILINK下载程序时,出现“ FLASH timeout,
Reset the Target and try it again ”错误

               遇到这个问题,要检测TARGET选择的芯片型号与你使用的芯片型号是否一致。我遇到过这个问题,就是因为我两个芯片型号不一致所引起
        的。具体错误如下所示:


                具体的修改过程如下所示:


                1、首先确定芯片的型号,如下所示:



                2、芯片型号选择好之后,接下来就需要选择下载器,我用的是JTAG,如下图所示。




                3、选择合适的FLASH算法配置。




                添加新的FLASH配置之后,将之前的FLASH配置删去,如下图所示。


                4、保存配置,重新编译之后就可以下载了。








众人划桨开大船!!!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-7-19
在线时间
4 小时
发表于 2017-7-19 17:48:55 | 显示全部楼层
总是出现这个提示是什么情况,我都快看吐了这个!
QQ截图20170719174332.png
回复 支持 1 反对 0

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-10-23 14:35:29 | 显示全部楼层
                   二、JTAG在调试时出现“could not stop cortex-M device,please check the JTAG cable”

                 查看了多位网友的帖子,有以下几个原因(
不一定都对呦):
                 
                 1、可能是因为将处理器的复位脚直接连接到GND,所以,没有复位信号来使MCU停止。

                 2、可能是JTAG的时钟配置的不正确,将其接到RTCK。

                 3、当系统的频率过高时,会导致该错误的发生。(换个频率较低的晶振,或者检查一下时钟配置,看是否是倍频设置的过高。)

                 4、看看你是否使用了看门狗,看门狗复位也会造成该错误的发生。

                 我的就是第四个原因,开启了看门狗,将看门狗关闭就可以使用JTAG调试了。

                三、JTAG调试时出现以下错误信息:

                        JTAG warning:CPU could not be halted
                        JTAG error:can not read register 0(R0) while CPU is running
                        
JTAG error:can not read register 1(R1) while CPU is running
                              JTAG error:can not read register 2(R2) while CPU is running
                              ......
                
                    参考多位网友的帖子,原因可能有以下几点:
                    
                    1、设置debug->setting->dubug->connect & reset options -> reset 选项没有设置正确,应该设置为normal。

                2、BOOTO与BOOT1的设置是否正确。

                3、JTAG功能是否关闭。我的就是为了降低功耗将所有的IO都下拉所致,在调试的过程中,关闭该函数就可以了。











众人划桨开大船!!!
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2013-10-23 15:12:40 | 显示全部楼层
回复【2楼】I6believe:
---------------------------------
楼主这精神值得学习,顶起。。。
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

56

主题

167

帖子

4

精华

高级会员

Rank: 4

积分
602
金钱
602
注册时间
2013-10-18
在线时间
59 小时
发表于 2013-10-23 16:36:50 | 显示全部楼层
回复 支持 反对

使用道具 举报

3

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
101
金钱
101
注册时间
2013-5-6
在线时间
18 小时
发表于 2013-10-23 20:28:19 | 显示全部楼层
怒顶!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2013-10-23 21:14:24 | 显示全部楼层
cool,感谢楼主的付出。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
411
金钱
411
注册时间
2012-8-11
在线时间
32 小时
发表于 2013-10-23 21:36:00 | 显示全部楼层
顶起
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-10-24 08:51:06 | 显示全部楼层
谢谢曾帮我的各位大侠,大家共同进步
众人划桨开大船!!!
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-11-14 17:35:25 | 显示全部楼层
四、JTAG下载出现下面错误:

Error:Flash Download failed - "Cortex-M3"

**JLink Warning:T-bit of XPSR is 0 but should be 1.changed to 1.
Erase Failed!

总结网友的帖子,可能有以下几种原因:
1、下载速度的问题,默认为1M,改为100K即正常。
2、重新编译下载。
3、是否开启看门狗,如果开启,关闭看门狗。
4、也可以参考贴子:http://www.amobbs.com/thread-4152255-1-1.html


五、JTAG调试出现下面错误,定义了太多的断点。

BP could not be set!
......
Probably too many Breakpoints defined?


解决方法的英文原句如下:
Normally, this is caused by vector catch/semihosting. Enable vector 
catch/semihosting will consume the breakpoint resource. If all the 
breakpoint resources are occupied, this message may be displayed. 
Please note that all the breakpoints set for vector catch and semihosting
are unvisible to users. These breakpoints can't be removed by "delete all
breakpoint" command. To remove this message, please disable the vector 
catch and semihosting in your debugger setting.

1、调试时减少断点的个数。
2、设置如下:Target Options->debug->Settings(右上角,Use)->不选择Cache Code和Cache Memory选项
->保存退出。如果按照这种设置,在各个断点之间进行运行时,需先运行,所以稍微有点慢。
















众人划桨开大船!!!
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2013-11-18 15:44:09 | 显示全部楼层
六、空间不足,具体错误信息如下:

.\Obj\USART.axf:Error6406E:No space in execution regions with .ANY selector matching globalvariabledefs.o(.bss).
.\Obj\USART.axf:Error6407E:Sections of aggregate size 0x7408 bytes could not fit into .ANY selector(s).
      
     在出现这个问题时,我是将一个很大的数组(unsigned char uart_Buff[1024])变小,使之只包含255个元素,重新编译即可消除该类错误。

     转一篇文章,我觉得写的挺详细的,大家共同学习。转自:
http://www.openedv.com/posts/list/10573.htm

RealView MDK具有强大的编译、链接功能。嵌入式设备拥有的资源往往有限,如果一个程序编译、链接之后的可执行文件大小略大于存储大小时,则不能生成可执行文件进行调试或固化到Flash中。在这种情况下我们一般不去从硬件上调整存储空间的大小(有些存储空间在片内,实在无法调整),而是去修改程序,试图将程序简化、将缓存减小、减少全局变量、少用大数组多用指针等等人工方法,有些时候这些方法很有效。但如果使用的开发工具是RealView MDK,则有一系列方法,可以达到这一目的,比起手动方法只有过之而无不及。这些方法仅仅需要在编译、链接之前对某些配置做一些修改即可,使用非常简单。当然,如果将这些方法和人工修改程序的方法结合起来,效果更佳。有时单独使用以下三种方法中的一种即可解决问题,有时需要结合其中两种,甚至三种才能解决问题。下面以开发板Embest ATEB9200(采用的SOCAT91RM9200)的例程USARTPDC_test为例,由于片内SRAM空间比较小(大小为16KB,起始地址为0x200000),本例程在片内SRAM中进行调试时需要使用一些技巧,下面介绍如何使用这些方法。

在默认设置下,将例程USARTPDC_test选择在片上SRAM中调试时,编译通过、在链接时会提示以下错误信息提示空间不够:

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(_scanf_int.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(_scanf_longlong.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(aeabi_sdiv.o).

Target not created

一、使用微库

使用微库时,将以更精简短小的C库替代标准C库,减小代码大小,使用微库的方法如下:

打开Project->Options->Target,将Use MicroLIB前面的复选框勾上。如下图:


图一  使用微库

 

点击确定之后,重新编译、链接。发现还是会提示空间不够的错误信息,但错误信息明显比以前少了:

Build target 'USARTPDC_test Int RAM'

assembling RM9200.s...

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section .text(interrupt_usart.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6406W: No space in execution regions with .ANY selector matching Section i._printf_core(printf8.o).

.\Int_RAM\USARTPDC_test.axf: Error: L6407W: Sections of aggregate size 0x86c bytes could not fit into .ANY selector(s).

Target not created

二、修改链接脚本

修改链接脚本的方法有两种一种是直接修改分散加载文件,另一种是使用默认分散加载文件,这时仅需修改Project->Options->Target中的存储空间起始和大小。为了简单直观,本例中使用后者。在使用后者时,需要在Project->Options->Linker中将Use Memory Layout from Target Dialog前面的复选框勾上。如下图:


图二 使用默认的分散加载文件

 

然后在Project->Options->Target中修改存储空间中只读部分和可读写部分的起始和大小,一般来说加大只读部分大小(该部分存放程序中的指令),而减小可读写部分的大小(该部分存放堆栈、局部变量等)。

根据错误提示可知,只读部分空间最少需要加大0x86c bytes,总空间固定16KB,相应地需要减小可读写部分大小。修改之前如图一,修改后如下图:


图三  增大只读部分大小,减小可读写部分大小

 

点击确定之后,重新编译、链接:

Build target 'USARTPDC_test Int RAM'

assembling RM9200.s...

compiling init.c...

compiling interrupt_Usart.c...

compiling main.c...

linking...

Program Size: Code=9388 RO-data=380 RW-data=4 ZI-data=1244 

".\Int_RAM\USARTPDC_test.axf" - 0 Error(s), 0 Warning(s).

编译链接成功!

三、修改优化级别,着重对空间进行优化

在编译时着重对空间进行优化,让编译器自动减小代码大小。可使用编译选项-Ospace进行编译以达到目的,另外可以选更高的选优化级别―-03如下图:


图四 选较高优化级别针对空间进行优级化以减小代码大小


众人划桨开大船!!!
回复 支持 反对

使用道具 举报

13

主题

314

帖子

0

精华

高级会员

Rank: 4

积分
713
金钱
713
注册时间
2012-7-20
在线时间
102 小时
发表于 2013-11-19 12:19:56 | 显示全部楼层
支持了
回复 支持 反对

使用道具 举报

17

主题

146

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
400
金钱
400
注册时间
2013-7-9
在线时间
57 小时
发表于 2013-11-19 15:25:29 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
120
金钱
120
注册时间
2015-11-13
在线时间
17 小时
发表于 2015-12-31 10:08:03 | 显示全部楼层
进来看看,mark一下
回复 支持 反对

使用道具 举报

2

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2015-12-26
在线时间
28 小时
发表于 2016-1-1 09:51:15 | 显示全部楼层

谢谢分享
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2015-11-19
在线时间
3 小时
发表于 2016-1-11 17:03:15 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2013-3-8
在线时间
34 小时
发表于 2016-1-11 17:06:59 | 显示全部楼层
好帖子顶
回复 支持 反对

使用道具 举报

2

主题

27

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2015-12-29
在线时间
13 小时
发表于 2016-1-19 14:16:21 | 显示全部楼层
支持楼主   如果有一个PDF能下载就更好了
路漫漫,书多多,stm32的朋友请加群383260480交流,一起进步
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2016-6-3
在线时间
13 小时
发表于 2016-6-10 19:24:52 | 显示全部楼层
谢谢楼主分享!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-10-13
在线时间
14 小时
发表于 2016-12-2 17:12:53 | 显示全部楼层
mark 马克
回复 支持 反对

使用道具 举报

3

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2016-11-13
在线时间
21 小时
发表于 2016-12-3 21:49:18 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

20

主题

86

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2016-11-19
在线时间
44 小时
发表于 2016-12-9 21:55:33 | 显示全部楼层
谢谢楼主
回复 支持 反对

使用道具 举报

1

主题

7

帖子

0

精华

新手上路

积分
30
金钱
30
注册时间
2017-7-19
在线时间
4 小时
发表于 2017-7-19 17:46:12 | 显示全部楼层
我不知道是不是我自己遇到这个问题,Jlink调试的时候回出现卡在printf不往下运行的情况,你那边有遇到过吗?
回复 支持 反对

使用道具 举报

14

主题

94

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2544
金钱
2544
注册时间
2017-2-20
在线时间
243 小时
发表于 2017-7-24 09:59:35 | 显示全部楼层
谢谢楼主分享
电子之路漫漫兮,吾将任总而道远。http://www.openedv.com/static/image/smiley/default/lol.gif
回复 支持 反对

使用道具 举报

4

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-7-20
在线时间
16 小时
发表于 2017-7-24 10:03:54 | 显示全部楼层
   顶
回复 支持 反对

使用道具 举报

11

主题

55

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
290
金钱
290
注册时间
2013-9-2
在线时间
9 小时
 楼主| 发表于 2017-8-15 15:09:58 | 显示全部楼层
llydebug 发表于 2017-7-19 17:48
总是出现这个提示是什么情况,我都快看吐了这个!

没有遇到这个错误,建议重新刷新一下JLINK固件,再试试?
众人划桨开大船!!!
回复 支持 反对

使用道具 举报

1

主题

11

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2019-6-5
在线时间
8 小时
发表于 2019-7-11 14:02:28 | 显示全部楼层
不错   很好
回复 支持 反对

使用道具 举报

1

主题

16

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1014
金钱
1014
注册时间
2019-7-11
在线时间
79 小时
发表于 2019-7-15 15:24:53 | 显示全部楼层
ding顶
回复 支持 反对

使用道具 举报

5

主题

52

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
305
金钱
305
注册时间
2018-12-5
在线时间
43 小时
发表于 2019-11-7 09:11:00 | 显示全部楼层
llydebug 发表于 2017-7-19 17:48
总是出现这个提示是什么情况,我都快看吐了这个!

同问,解决了吗
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
35
金钱
35
注册时间
2019-11-8
在线时间
6 小时
发表于 2019-11-11 08:54:18 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2019-11-11
在线时间
1 小时
发表于 2019-11-11 14:15:57 | 显示全部楼层
很是优秀
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
122
金钱
122
注册时间
2016-8-23
在线时间
32 小时
发表于 2020-2-8 15:59:50 | 显示全部楼层
llydebug 发表于 2017-7-19 17:48
总是出现这个提示是什么情况,我都快看吐了这个!

你这个J-LINK是盗版的。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-20 08:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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