本篇开始讲解一些比较实用的东西,在前面的两章中,我们讲解了eclipse开发stm32的大部分问题,然而。在实际使用过程中,我们仍然会遇到一些不太理想的地方,比如,eclipse不能一键下载,只能通过调试变相的下载,很不方便。同时eclipse编译出来的文件要比MDK编译的文件大很多。本篇就是为了解决这两个问题的:程序优化和一键下载。
先说说文件过大的问题,这个问题是由于我们默认的工程优化比较小。
-O0
-O1
-O2
-O3
-Os
自己酌情选择。我通常选择O0
这两个选项会滤除掉没有使用过的函数和数据
使用newlib-nano选项会进一步去除大量newlib中不常用的库函数,从而大大减小文件体积。
注意以上三点后,编译出来的文件基本上就跟MDK编译的文件大小还差不多了。
另外说一点就是eclipse支持编译生成不同格式的文件,包括最原始的elf,还有bin、hex等其他格式。设置的地方在图中所示的地方
接着,我们需要有一个一键下载的功能。
该部分参考了http://bbs.elecfans.com/jishu_564620_1_1.html的下载部分内容。
首先,我们需要知道对于jlink,下载使用JLink.exe,调试使用JLinkGDBServerCL。为了更好的使用eclipse下载,我们先来熟悉一下直接使用jlink命令下载的流程。
1、将jlink安装目录添加到环境变量
2、点开cmd,将目录切换到bin文件目录下
3、运行JLink.exe,然后会提示让我输入connect,接着提示让我输入芯片型号、TIF模式、速度等选项,然后才算成功连接。
那么我们能不能只通过一步就将这些选项设置好呢?可以
看看JLink的命令手册
就是这三个选项了。
所以我们可以这样重新些JLink命令:JLink.exe -autoconnect 1 -device stm32f103rc -if swd -speed 4000
接着我们就进入了JLink命令模式,再来看一看JLink有哪些命令可以使用
常用的差不多就这几个了
先运行h,让jlink暂停
然后运行loadfile下载bin文件到0x08000000
然后用r命令重启开发板,在用g命令运行程序,最后用exit或者q命令推出jlink模式
肯定又有同学说好麻烦,没有更简单的方法吗?有,我们只需要将上面的这些命令做成一个脚本,然后将这个脚本作为一个参数传递给JLink启动命令选项即可自动执行了。
细心的同学可能已经注意到了前面图中的一个参数
这两个参数是一个意思,随便用一个即可,比如-commandfile。
首先我们写一个自动命令的脚本,名字就叫做download.jlink
然后运行这样一条指令即可实现一步下载了
JLink.exe -autoconnect 1 -device stm32f103rc -if swd -speed 4000 -commandfile download.jlink
从图中可以看出指令的运行情况,jlink成功连接上了stm32,并且载入了命令脚本,执行命令脚本,下载bin文件,重新启动,运行。
那么,现在我们要解决的问题是怎么让eclipse运行这样一条指令。
我们可以注意到在eclipse上有这样一个按钮:external tool
打开设置
仿照着这个图中设置
其中脚本路径的地方${workspace_loc:/UCOS_Demo}代表了我的工程目录,换成自己对应的即可。同时,路径对应自己的实际路径。比如我是在工程目录下面新建了一个jlink文件夹,脚本放在了这个文件夹下了。
另外loadfile的文件路径需要填写自己实际路径
然后把图中所示的地方选中,确定。然后点击那个拓展按钮就可以实现下载了。
注:本人github中有工程模版
Github地址