那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(进阶篇一)

2019-10-11 16:51发布

本帖最后由 秋之前 于 2017-1-13 09:59 编辑

相关连接:那些免费好用的STM32的IDE一之Emblockhttp://www.openedv.com/forum.php?mod=viewthread&tid=73485&page=1#pid496542
那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(基础篇)http://www.openedv.com/forum.php?mod=viewthread&tid=73543&page=1#pid505930
那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(高级篇)http://www.openedv.com/forum.php?mod=viewthread&tid=89312&fromuid=19822

本篇开始讲解一些比较实用的东西,在前面的两章中,我们讲解了eclipse开发stm32的大部分问题,然而。在实际使用过程中,我们仍然会遇到一些不太理想的地方,比如,eclipse不能一键下载,只能通过调试变相的下载,很不方便。同时eclipse编译出来的文件要比MDK编译的文件大很多。本篇就是为了解决这两个问题的:程序优化和一键下载。1、优化等级-O0-O1-O2-O3-Os 图片1.png 自己酌情选择。我通常选择O0 图片2.png 这两个选项会滤除掉没有使用过的函数和数据
图片3.png 使用newlib-nano选项会进一步去除大量newlib中不常用的库函数,从而大大减小文件体积。注意以上三点后,编译出来的文件基本上就跟MDK编译的文件大小还差不多了。

另外说一点就是eclipse支持编译生成不同格式的文件,包括最原始的elf,还有bin、hex等其他格式。设置的地方在图中所示的地方 图片4.png

接着,我们需要有一个一键下载的功能。该部分参考了http://bbs.elecfans.com/jishu_564620_1_1.html的下载部分内容。首先,我们需要知道对于jlink,下载使用JLink.exe,调试使用JLinkGDBServerCL。为了更好的使用eclipse下载,我们先来熟悉一下直接使用jlink命令下载的流程。1、将jlink安装目录添加到环境变量
2、点开cmd,将目录切换到bin文件目录下 图片5.png
3、运行JLink.exe,然后会提示让我输入connect,接着提示让我输入芯片型号、TIF模式、速度等选项,然后才算成功连接。 图片6.png
那么我们能不能只通过一步就将这些选项设置好呢?可以看看JLink的命令手册 图片7.png 就是这三个选项了。所以我们可以这样重新些JLink命令:JLink.exe -autoconnect 1 -device stm32f103rc -if swd -speed 4000 图片8.png 接着我们就进入了JLink命令模式,再来看一看JLink有哪些命令可以使用 图片9.png 用的差不多就这几个了
先运行h,让jlink暂停 图片10.png 然后运行loadfile下载bin文件到0x08000000 图片11.png 然后用r命令重启开发板,在用g命令运行程序,最后用exit或者q命令推出jlink模式 图片12.png 肯定又有同学说好麻烦,没有更简单的方法吗?有,我们只需要将上面的这些命令做成一个脚本,然后将这个脚本作为一个参数传递给JLink启动命令选项即可自动执行了。
细心的同学可能已经注意到了前面图中的一个参数 图片13.png 这两个参数是一个意思,随便用一个即可,比如-commandfile。首先我们写一个自动命令的脚本,名字就叫做download.jlink然后运行这样一条指令即可实现一步下载了
JLink.exe -autoconnect 1 -device stm32f103rc -if swd -speed 4000 -commandfile download.jlink 图片14.png 从图中可以看出指令的运行情况,jlink成功连接上了stm32,并且载入了命令脚本,执行命令脚本,下载bin文件,重新启动,运行。那么,现在我们要解决的问题是怎么让eclipse运行这样一条指令。
我们可以注意到在eclipse上有这样一个按钮:external tool 图片15.png 打开设置
仿照着这个图中设置 图片16.png 其中脚本路径的地方${workspace_loc:/UCOS_Demo}代表了我的工程目录,换成自己对应的即可。同时,路径对应自己的实际路径。比如我是在工程目录下面新建了一个jlink文件夹,脚本放在了这个文件夹下了。
另外loadfile的文件路径需要填写自己实际路径 图片17.png 然后把图中所示的地方选中,确定。然后点击那个拓展按钮就可以实现下载了。 图片18.png
下篇预告:1、那些免费好用的STM32的IDE二之Eclipse+GNU+Jlink(进阶篇二) 芯片flash和ram的调整以及运行地址的修改(运行bootloader)2、stm32最小通用开发环跨平台搭建境GNU+Makefile系列教程3、Mbed源码在自己的stm32系列平台移植适配
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
秋之前
1楼-- · 2019-10-11 18:12
天火玄月
2楼-- · 2019-10-11 22:50
蛮不错的,MDK在2020年就要过期了,这个到时候可以算是个替代的工具
FreeRTOS
3楼-- · 2019-10-12 04:12
秋之前 发表于 2017-1-13 10:00
@Admin @八度空间 @正点原子
加个精呗

楼主我之前按照你的帖子搭了STM32的开发平台,相同的工程相同的优化级别,IAR跟MDK编译出来也就8~9kB的大小,但用eclipse+gcc编译出来却是20+kB的大小,GCC不可能比IAR和MDK差那么多的,估计是某个库没包含对,不知道你有没有碰过这问题
秋之前
4楼-- · 2019-10-12 06:38
FreeRTOS 发表于 2017-1-13 10:24
楼主我之前按照你的帖子搭了STM32的开发平台,相同的工程相同的优化级别,IAR跟MDK编译出来也就8~9kB的大 ...

前面的教程没有讲优化,所以比较大是很正常的,这一篇的优化你可以参考一下
FreeRTOS
5楼-- · 2019-10-12 09:48
 精彩回答 2  元偷偷看……
qwxuhao8312
6楼-- · 2019-10-12 13:32
问个问题,GDBServerCL 调试时程序是在哪运行(jlink上,ram?还是下载到了flash??),,,,为什么我调试后断电,再上电程序还在,,难道是调试时就下载到flash了??如果这样的话那为什么还要另外配置下载

一周热门 更多>