OpenEdv-开源电子网

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

那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(高级篇)

[复制链接]

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
发表于 2016-11-25 10:06:10 | 显示全部楼层 |阅读模式
相关连接:那些免费好用的STM32的IDE一之Emblock
http://www.openedv.com/forum.php ... mp;page=1#pid496542

那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(基础篇)
http://www.openedv.com/forum.php ... mp;page=1#pid505930


本篇开始解决一些大问题
一、问题概况
通过初级篇的学习,我们知道了一个Eclipse工程的配置以及调试,貌似使用也没什么问题,然而。当我们抛弃掉Eclipse自带的工程模版是,也抛弃的他的一些其他的功能,比如c库函数的支持。所以,如果我们按照这初级篇的内容建立一个工程,我们会发现,当我们使用了printf等C库的函数时,工程编译会报错。
这是没有加入printf是的编译情况,没有任何错误
图片1.png
而这个图就是加上了printf后编译的情况,当然stdio.h还是要加上去的,
图片2.png
可以看到,只要加上了printf后编译就会出问题。
二、问题分析
为了解决这个问题,我们先探索一下这个问题产生的原因。众所周知,printf调用的是标准的C库函数,那么我们搭建的GNU环境是否有C库呢?通过查阅GNU ARM ToolChain官网,我们可以知道,gun工具链支持C库,默认的是newlib库。
那么,什么是newlib?摘录一段百度百科的介绍,当然这段介绍是对newlib引文手册的一段翻译,英文可以的同学可以看看英文的。
图片3.png
既然我们搭建的环境中存在了C支持库,那么为什么还会编译错误呢?我们接着看。
图片4.png
什么意思?就是说我们的newlib是存在了,但是newlib的20个桩函数还没有实现,即只是存在newlib,但是还没有移植。为什么gnu不帮我们移植好呢?正如上面介绍的那样,这20个桩函数是与运行的平台息息相关的,也就是说,如果我用的是51,可能这些函数是一种实现方式,如果我用的STM32,可能是另外一种形式(举个例子而已,并不准确)。所以我们现在的工作就是要把newlib没有完成的工作完成就可以了,即实现20个桩函数。
难道真的要我们自己写吗?不会写啊!不用担心,如果真的要我们自己写,那么这个教程的实用性就太低了。
我之前说过,当我们抛弃了eclipse自带的模版是,也抛弃了自带模版中的其他的一些东西,比如移植好的newlib,既然在自带的模版中已经有移植好的newlib,我们直接把它提取出来就是了。思路就是这样的。
三、问题解决
如果你们曾经用eclipse自带的模版建立过stm32的工程的话,你应该可以在这个工程中找到一个叫做newlib的文件夹。
图片5.png
我们把这个文件夹拷贝到我们初级篇建立的工程中
图片6.png
首先别急着编译,我们先看一看这个文件夹中的内容。
图片7.png
_startup.c这个文件是自带的启动文件,我们不需要,删除或者屏蔽都行,然后编译看看
图片8.png
提示一些关于track的错误,因为我们没用使用track,所以把newlib中所有文件爱你的track相关的东西都屏蔽掉,知道不会提示track相关的错误为止
图片9.png
同时我们还要把_exit.c中的复位函数改掉
图片10.png
因为不使用__reset_hardware(),所以屏蔽掉它的声明
图片11.png
重新编译会发现这样的错误
图片12.png
,为什么会有这样的错误,是因为newlib中的文件会引用链接文件中的_Heap_Begin和_Heap_Limit,然而我们没有使用自带的模版所以没有使用自带的链接文件,而是使用了st库中的链接文件,而该链接文件又没有定义这两个变量,所以报错了,额不知道我这么说你们能否理解
图片13.png
大致就是这个示意图
所以解决方法就是我们在st的ld文件中定义这两个变量就行了
图片14.png
然后编译,你就会惊奇的发现没有错误了
图片15.png
然后就是调试了,也没问题,就不截图了

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-11-25 10:09:42 | 显示全部楼层
这些资料原本很早就整理出来了,只不过没有时间写帖子。
另外,相关的DEMO可以到github下载到
https://github.com/qiuzhiqian
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-11-25 10:11:03 | 显示全部楼层
后面还有一篇进阶篇,有空在写吧
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-11-25 10:13:55 | 显示全部楼层
另外gnu+makefile+jink的教程也整理出来了,不过可能没什么人想用,看看情况再说
@正点原子  @八度空间 @Admin
还请加个精
回复 支持 反对

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2016-11-25 12:34:52 | 显示全部楼层
秋之前 发表于 2016-11-25 10:13
另外gnu+makefile+jink的教程也整理出来了,不过可能没什么人想用,看看情况再说
@正点原子  @八度空间 @A ...

没用用到这个IDE,后续用到再说,现在用IAR
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165524
金钱
165524
注册时间
2010-12-1
在线时间
2116 小时
发表于 2016-11-25 13:05:19 | 显示全部楼层
写的不错,必须加精啊
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

346

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3657
金钱
3657
注册时间
2016-2-21
在线时间
542 小时
发表于 2016-11-25 13:35:13 | 显示全部楼层
有一个叫codeblocks开源免费IDE,楼主有用过吗?可以出个codeblocks的32教程吗?
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2015-10-11
在线时间
71 小时
发表于 2016-12-14 02:40:34 | 显示全部楼层
秋之前 发表于 2016-11-25 10:13
另外gnu+makefile+jink的教程也整理出来了,不过可能没什么人想用,看看情况再说
@正点原子  @八度空间 @A ...

不会啊,makefile的应用很广,很多人在用,尤其在mbed的线上编译环境,其中有个export program的功能就是汇出gcc的makefile,而且这个汇出的程式码是直接可以编译的,其他的,大概都有些问题,比Keil方便多了,希望秋之前大哥能分享一下。
makefile因为感觉有很多外星语言,所以很多人没有使用,实际上,如果makefile定义清楚的话,会很方便,几乎不太需要在eclipse设定太多地方,而且也可以应用在其他嵌入式系统,如FreeRTOS,linux,RTX...等,重点式可以知道整个编译流程,有助于了解程式结构,有一本书"深入理解软件构造系统  原理与最佳实践",书内容有针对makefile解释的很清楚,比gnu make 的说明清楚,也有实践的指导,会更清楚makefile的写法。

希望...秋之前大哥能够分享一下使用经验,尤其有关jlink跟debug的确资料不多....
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2015-10-11
在线时间
71 小时
发表于 2016-12-14 02:44:09 | 显示全部楼层
shikihane 发表于 2016-11-25 13:35
有一个叫codeblocks开源免费IDE,楼主有用过吗?可以出个codeblocks的32教程吗?

第一篇写的"那些免费好用的STM32的IDE一之Emblock"就是codeblocks的embedded版本...
可以参考秋之前大大写的这一篇
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-12-14 08:40:10 | 显示全部楼层
teslaliu 发表于 2016-12-14 02:40
不会啊,makefile的应用很广,很多人在用,尤其在mbed的线上编译环境,其中有个export program的功能就是 ...

后面再更新吧,eclipse还有一篇,eclipse弄完再说makefile的
回复 支持 反对

使用道具 举报

6

主题

64

帖子

3

精华

高级会员

Rank: 4

积分
768
金钱
768
注册时间
2014-3-11
在线时间
55 小时
 楼主| 发表于 2016-12-14 11:25:00 | 显示全部楼层
关于“那些免费好用的STM32的IDE”系列教程的概述:
1、第一篇为coldblock的嵌入式版教程,
即“那些免费好用的STM32的IDE一之Emblock”,已发布
地址:http://www.openedv.com/thread-73485-1-1.html
2、第二篇为eclipse系列第一部分
即“那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink”,已发布
地址:http://www.openedv.com/thread-73543-1-1.html
3、第三篇为eclipse高级篇,解决printf等标准库的支持问题,
即“那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(高级篇)”,已发布。
地址:http://www.openedv.com/thread-89312-1-1.html
4、第四篇为eclipse进阶篇(一),解决编译链的优化选项问题,降低生成文件大小,同时解决在不用调试的情况下实现一键下载的问题,待发布
5、第五篇为eclipse进阶篇(二),解决自定义程序的flash和ram的起始地址和空间大小的设置,实现bootloader和app的flash分配问题、待发布
6、第六篇为makefile+stm32篇,教你如何使用makefile构建自己最小最高效最简洁最自由的开发环境,待发布
以上是本人当前已完成的教程,只是有些还没有发布出来,有空更新,后面有什么规划待定。
如果需要提前了解教程:可以直接添加本人qq:1017621406或者QQ群:STM32兴趣交流 133596116
回复 支持 反对

使用道具 举报

5

主题

13

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-12-6
在线时间
8 小时
发表于 2017-5-9 11:55:58 | 显示全部楼层
您好,GDB Client Setup中Executable中的具体文件夹是什么啊
10.png
回复 支持 反对

使用道具 举报

0

主题

9

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
395
金钱
395
注册时间
2015-10-11
在线时间
71 小时
发表于 2017-5-18 00:24:41 | 显示全部楼层
本帖最后由 teslaliu 于 2017-5-18 00:28 编辑

snipaste_20170518_002521.png
可以这样设定,参考 The J-Link debugging Eclipse plug-in


snipaste_20170518_002521.png
回复 支持 反对

使用道具 举报

1

主题

8

帖子

0

精华

新手上路

积分
47
金钱
47
注册时间
2017-6-27
在线时间
12 小时
发表于 2017-6-28 16:23:23 | 显示全部楼层
本帖最后由 Jurry 于 2017-6-29 23:32 编辑

谢谢分享
回复 支持 反对

使用道具 举报

17

主题

140

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
5866
金钱
5866
注册时间
2018-7-24
在线时间
2228 小时
发表于 2019-4-8 18:31:40 | 显示全部楼层
感谢分享,很详细,我也去实践一下
回复 支持 反对

使用道具 举报

17

主题

170

帖子

0

精华

高级会员

Rank: 4

积分
562
金钱
562
注册时间
2018-7-8
在线时间
118 小时
发表于 2020-4-23 10:15:52 | 显示全部楼层
正点原子 发表于 2016-11-25 13:05
写的不错,必须加精啊

写的很好的啊
回复 支持 反对

使用道具 举报

28

主题

92

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
462
金钱
462
注册时间
2019-3-30
在线时间
86 小时
发表于 2020-5-6 21:12:44 | 显示全部楼层
感谢分享!!!!!!!!!!11
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-29 07:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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