码迷,mamicode.com
首页 > 系统相关 > 详细

在Linux下开发和调试STM32

时间:2015-09-20 17:37:58      阅读:676      评论:0      收藏:0      [点我收藏+]

标签:

因为最近需要做一些STM32的开发,而我大部分的其他开发都在Linux上,经常在Windows和Linux下切换感觉比较不方便,于是就研究了一下Linux下开发STM32的工具,顺便在这边做下记录。

使用的开发工具

软件平台:

Eclipse Luna

下载:https://eclipse.org/downloads/packages/release/luna/sr2

用于安装System Workbench for STM32插件,建议下载Eclipse IDE for C/C++ Developers版本。

System Workbench for STM32 (Eclipse插件)

下载:http://www.openstm32.org/Installing+System+Workbench+for+STM32+from+Eclipse?structure=Documentation

选择它是因为这个插件装上之后就将STM32的开发环境配置好了,使用起来很方便,而且STM32CubeMX直接可以生成适用于它的工程。该插件与Eclipse Luna兼容较好,与Eclipse Mars兼容性有点问题,其他Eclipse版本未测。

STM32CubeMX

下载:http://www.st.com/web/catalog/tools/FM147/CL1794/SC961/SS1743/PF259242?sc=microxplorer

这个是ST公司官方开发的用于初始化STM32外设驱动的软件。该软件目前只有Windows版,不过因为其实它是用Java编的,所以在Linux下可以正常运行。不过因为是用于Windows环境的,所以生成的工程需要做一些改动才能在Linux下正常使用,这个留待下文再讲。

另外,STM32CubeMX虽然有Eclipse插件,但那个插件只能在Windows下运行

调试器:

ST-Link V2

这个是System Workbench官方支持的调试器。价格也比较便宜(盗版的非常便宜,正版的也不贵)。

开发板:

STM32F407ZET6

应该大部分STM32的芯片的开发板都可以支持的。

操作系统:

Ubuntu 12.04 64位

 

软件安装

System Workbench for STM32的安装与正常的Eclipse插件安装一样,就不讲了。值得注意的是Eclipse Luna需要OpenJDK 7的运行环境,我用的是Ubuntu 12.04,系统自带的是OpenJDK 6,需要安装一下,然后改一下Eclipse的启动参数(如果你没有修改系统的默认Java运行环境的话),即在eclipse安装目录下的eclipse.ini文件中加上:

-vm
/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin

如果你是Ubuntu 14.04及以上版本,就没必要加这一条了。

下面主要讲一下STM32CubeMX的安装。首先将STM32CubeMX下载下来(下载地址在前面给出的链接的最下面),解压缩之后应该能获得一个exe文件,不过这个文件不需要安装wine就可以运行。如果系统默认java版本是OpenJDK 6的话,运行以下语句:

sudo /usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java -jar /path/to/your/SetupSTM32CubeMX.exe

如果是OpenJDK 7及以上的话,直接运行:

sudo java -jar /path/to/your/SetupSTM32CubeMX.exe

后文将/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/省略,如果默认是OpenJDK 6的,请手动加上这个绝对路径。另外,请将/path/to/your/替换成你实际文件的路径。

然后就会出来一个安装界面,选择安装路径,然后安装。

技术分享

安装完之后,在安装目录下,应该会有一个STM32CubeMX.exe的文件。运行:

java -jar /path/to/your/STM32CubeMX.exe

然后选择Help->Install New Libraries,安装需要的支持库等内容,就可以用于开发了。在Updater Settings里面可以选择支持库的下载路径。

开发设置

STM32CubeMX

新建一个工程,选择自己的芯片类型,配置好相应的管脚、时钟和外设。

技术分享

技术分享

在Project Settings中,将Toolchain/IDE选成SW4STM32。然后使用STM32CubeMX生成代码。将生成的代码拷到Eclipse的工作空间中。

技术分享

关于STM32CubeMX的具体使用方法请参考其他资料。

System Workbench for STM32

接着,我们打开安装好System Workbench的Eclipse。选择File->Import->Existing Projects into Workspace,选择你的代码所在的路径,注意请不要勾选Copy Projects into Workspace。

技术分享

技术分享

接下来对工程进行一些配置。

选中当前工程,选择Projects->Properities,在左侧列表选择C/C++ Build->Settings,打开这个设置界面可能需要一些时间,请耐心等待。

 在Tool Settings->MCU GCC Complier->Symboles下,将

__weak=__attribute__((weak)) 改成 ‘__weak=__attribute__((weak))‘
__packed=__attribute__((__packed__)) 改成 ‘__packed=__attribute__((__packed__))‘

也就是说将这两个参数加上单引号

技术分享

在Tool Settings->MCU GCC Complier->Includes下,将

Inc 改成 ../../../Inc
Drivers/STM32F4xx_HAL_Driver/Inc 改成 ../../../Drivers/STM32F4xx_HAL_Driver/Inc
Drivers/STM32F4xx_HAL_Driver/Inc/Legacy 改成 ../../../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
Drivers/CMSIS/Include 改成 ../../../Drivers/CMSIS/Include
Drivers/CMSIS/Device/ST/STM32F4xx/Include 改成 ../../../Drivers/CMSIS/Device/ST/STM32F4xx/Include

即路径前面都加上../../../,另外,如果路径中有反斜杠"\"的话也一律要替换为正斜杠"/"。

技术分享

在Tool Settings->MCU GCC Linker->General下,将

..\STM32F407ZETx_FLASH.ld 改成 ../STM32F407ZETx_FLASH.ld

即将反斜杠替换为正斜杠。

技术分享

然后在Build Artifact下的Artifact Name中的空格去掉。

技术分享

通过以上设置,应该就可以编译通过了。

此时,在工程管理窗格,在Applications文件夹上右击,选择Index->Freshen All Files,就可以消除错误提示了。

技术分享

然后继续,在Projects->Properities的设置下,选择Run/Debug Settings,选择New->Ac6 STM32 Debugging

技术分享

技术分享

此时会弹出定义新开发板的对话框,选择你的调试工具和接口以及开发板的名字。点击确定之后会自动生成一个调试配置文件。然后会弹出一个新的对话框。

技术分享

在弹出的对话框中,在Debugger选项卡中,选择Use Local Script,然后选择刚刚弹出的对话框生成的cfg文件,选择确定(这一步通常不用做,已经默认配置好了)。

技术分享

然后选择Run->Debug as->Ac6 STM32 C/C++ Application,就可以正常启动调试了。

技术分享

 

 

 

 

 

 

在Linux下开发和调试STM32

标签:

原文地址:http://www.cnblogs.com/lywang/p/4823413.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!