在ubuntu下开发stm32f4-discovery
前面零散地记录了一些如何安装编译器,调试器等笔记,这里就准备开始着手试一下这整块系统了。
简单不完全地回顾一下所需要安装的软件:
1 编译器
使用的是codesourcey,因为之前有使用过该套编译器,所以就顺手了。该套编译套件已经被mentor graphic收购了,它一直在更新并提供了lite版本。类似的交叉编译套件还可以使用Linaro,YAGARTO,summon等,都是免费使用的。
按各自官方网站下载并编译安装就可以了。安装完成在命令行中运行
arm-none-eabi-gcc --version
有显示类似信息就表示安装好了编译器
merlin@riliwan:~$ arm-none-eabi-gcc --version
arm-none-eabi-gcc (Sourcery CodeBench Lite 2013.11-) 4.8.
Copyright (C) Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. merlin@riliwan:~$
2 如果你和我一样,对Makefile不熟悉,那么你可能想用eclipse来管理你的工程(这样就不用编写makefile文件啦)
去www.eclipse.org下载Juno For C/C++版本的(Eclipse IDE for C/C++ Developers, 148 MB)
由于eclipse是基于java的程序,而默认的ubuntu是没有安装jre的,这时你还需要安装jre。在terminal中输入以下命令安装JRE
sudo apt-get install default-jre
这时就可以运行eclipse了。
还需要在eclipse中安装管理ARM工程的插件(通常来说是使用下面的方法来安装的,地址:http://gnuarmeclipse.sourceforge.net/updates),看图:
但是,该插件已经更新到了Kepler版本的eclipse了,直接在这里安装时会缺少信赖项(它信赖更高级的CDT)。因而只能把对应的插件下载到硬件中来,然后从硬盘安装。步骤如下:
A 下载对应的GNU ARM插件版本Version: 0.5.5.201309281715
似乎只能使用该版本的,更高版本并不兼容Juno。
B 下载下来之后,在Help -> Install New Software...中Add... -> Archive...后安装就可以了
C 安装成功后查看一下Help -> About -> Installation Details
可能有些同学会问,那既然GNU ARM不支持更低版本的Eclipse又支持最新版本的Eclipse。为何不使用最新版本的呢,这样不就很匹配了吗?这里有一个问题是GDB Haraware Debugging插件安装上去之后调试界面那里没有对应的设置页出来,相当于无法调试了!我在网上查阅了许多资料,也碰到过有人也遇到同样的情况,未解决,所以只能这样退出而求其次了。(也有一个发现,有人使用基于CodeBlocks来做嵌入式IDE开发环境的,你可以自己去看看,地址http://www.emide.org/)
在调试之前,还需要安装以下插件。在Help -> Install New Software...中找到或者自己输入地址http://download.eclipse.org/tools/cdt/releases/juno)
- C/C++ GDB Hardware Debugging
- C99 LR Parser
- GNU ARM C/C++ Development Support
这些插件之后,就可以到小虫子->Configuration看到下面内容了
如果你的Kepler可以看到这些内容,烦请告诉我一声,我的Kepler安装了GDB Hardware Debugging之后一直是出不来这个项的。
3 安装STLinkV2
第一步是安装libusb库和pkg-config,后者一般是已经安装好了的。
sudo apt-get install libusb-1.0.-dev pkg-config
第二步是下载源码,在某个有写权限的地方新建一个文件夹用于存储源文件,进入该文件夹然后在终端中输入以下命令从git上获取源码
git clone https://github.com/texane/stlink
进入包含有Makefile文件的文件夹,执行以下命令:
$ ./autogen.sh
$ ./configure
$ make
生成st-flash,st-info,st-util等文件,将这些生成的st-*文件拷贝某处并添加到PATH,这样就可以在终端上执行这些命令了。PATH可以使用export设置,也可以使在.~/bashrc中设置,更可以在/etc/enviroment中设置(推荐,这样就可以不光只能在终端中调用这些命令了)
不过这个时候,在ubuntu下去访问stlink会出现错误提示:
merlin@riliwan:~$ st-util
--28T13:: WARN src/stlink-usb.c: Couldn't open ST-Link/V2 device 002:006
哦,原来这里还差一步,进入stlink源码中将根目录下的*.rules文件拷贝到/etc/udev/rules.d/下面去,执行下面两条指令
$ sudo cp *rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
这样做之后,重新插拔一次stm32f4-discovery开发板就能正确识别了,看图:
好了,准备工作都差不多了。
可是。。。你是不是现在还担心这套环境是不是真的方便使用呢?我们现在立刻马上就下载一个程序到板子上去运行试试。
我这里提供一个bin文件,这样你通过查看现在就可以确保程序已经真正下载到板上去了。
如果你的板就是原来的demo程序,那么先把这些程序擦除掉,使用下面命令
$ st-flash erase
然后使用下载命令
$ st-flash write t/STM32F4-Discovery_Demo_0x08008000.bin 0x08008000
下载成功后你的开发板就该有现象了(灯就会闪了。按User键之后它会切换闪烁模式了有没有?不过复位之后这个程序就不能再运行了,需要重新再烧写),看图:
测试完毕。
以上准备已经差不离了,我们正式开团
原本我是想使用st.com官方库来做demo的,但我发现了另外一个好玩意,就是libopencm3,大家可以自己去该官网去下载源码然后编译之。(直接进stm32f4目录下面执行make就可以生成libopencm3_stm32f4.a了)。
使用Eclipse新建一个叫做ocm3_blink的工程。
1 启动eclipse,然后新建一个工程,名字就叫做ocm3_blink;
2 将编译生成的libopencm3_stm32f4.a复制到工程目录/lib下面,将libopencm3源码中的include文件夹直接复制到工程目录中来(虽然里面有许多头文件明显不是stm32的,但暂时还不用去理会这些),最后将blink.c复制到工程/user目录下去。最后得到这样的目录结构:
3 设置头文件搜索目录
4 设置链接时的库文件搜索目录及库文件
5 将libopencm3源码中的两个ld文件libopencm3_stm32f4.ld和stm32f4-discovery.ld复制到Debug目录中来,之后设置链接器使用该脚本。这里还需要注意一点,要把Do not use standard start files这个选项给选上,否则无法编译成功(会出VFP register错误)。
6 然后点击编译按键
6 编译好程序之后需要将程序下载到实际板子上运行才知道它是不是已经达到我们的目的了,在此我们进一步尝试使用Eclipse的硬件调试功能。下拉这只小虫子然后选择Configuration
7 新建一个GDB Hardware Debugging,设置一下Debugger标签中的内容后close(因为需要运行了st-util才能正确debug),如下图
8 这里我们在终端中启动一个st-util服务
merlin@riliwan:~/t$ st-util
--09T22:: INFO src/stlink-common.c: Loading device parameters....
--09T22:: INFO src/stlink-common.c: Device connected is: F4 device, id 0x10016413
--09T22:: INFO src/stlink-common.c: SRAM size: 0x30000 bytes ( KiB), Flash: 0x100000 bytes ( KiB) in pages of bytes
Chip ID is , Core ID is 2ba01477.
Target voltage is mV.
Listening at *:...
9 再回来Eclipse中,点击Debug按键开始调试,应该看到类似这样的界面了(该界面我自己重新定制过),表明已经在调试状态了。
全速运行之后会发现灯在闪烁(有的时候可能全速后就会死掉,那你可以先试一下手动运行到main函数中,在时头的while()循环中全速运行。我这里就是这样子的)。
示例工程下载ocm_blink.zip
在ubuntu下开发stm32f4-discovery的更多相关文章
- Ubuntu 下开发 Android 环境变量设置
-----------------------------------------------------ANDROID_SDK_HOME:/home/cmm/avds PATH:/home/cmm/ ...
- Ubuntu 下开发ARM
1. 准备工作 linux下自带虚拟串口的驱动,不需要手动安装.CP2102之类的USB转串口,是ttyUSBx. 所有的设备都在/dev目录下,简单扫描串口的办法: ls /dev > bef ...
- Ubuntu 下开发环境的常规配置。
Install Chinese input (for Chinese peers) We Choose the Sougou pinying.(搜狗) $ sudo apt-get install g ...
- Ubuntu下开发环境搭建
安装基础开发包,主要gcc,g++等 sudo apt-get install build-essential 未完待续
- Windows + Ubuntu下JDK与adb/android环境变量配置完整教程
假设JDK和android sdk路径分别如下: D:\Program Files\Java\jdkD:\android-sdk 1.JDK环境变量配置JAVA_HOME=D:\Program Fil ...
- 在Ubuntu下搭建ASP.NET 5开发环境
在Ubuntu下搭建ASP.NET 5开发环境 0x00 写在前面的废话 年底这段时间实在太忙了,各种事情都凑在这个时候,没时间去学习自己感兴趣的东西,所以博客也好就没写了.最近工作上有个小功能要做成 ...
- Ubuntu下的PHP开发环境架设
Ubuntu下的PHP开发环境架设 今天重新装了ubuntu那么就吧过程记录下. 打开终端,也就是命令提示符. 我们先来最小化组建安装,按照自己的需求一步一步装其他扩展.命令提示符输入如下命令: ...
- Linux学习三:Ubuntu下使用minicom和开发板通信
备注:如果你是用的是Windows则使用超级终端即可:开始-程序-附件-通讯-超级终端 现在我们在Ubuntu下安装配置minicom: 1.进入ubuntu桌面ctrl+alt+t打开终端 输入:s ...
- 转[开发环境配置]在Ubuntu下配置舒服的Python开发环境
在Ubuntu下配置舒服的Python开发环境 Ubuntu 提供了一个良好的 Python 开发环境,但如果想使我们的开发效率最大化,还需要进行很多定制化的安装和配置.下面的是我们团队开发人员推荐的 ...
随机推荐
- android 内存泄漏分析技巧
java虚拟机执行一般都有一个内存界限,超过这个界限,就会报outofmemory.这个时候一般都是存在内存泄漏.解决内存泄漏问题,窃以为分为两个步骤:分析应用程序是否真的有内存泄漏,找到内存泄漏的地 ...
- Ubuntu文件的复制、移动和删除命令
先说说cp复制命令 该命令的功能是将给出的文件或文件夹复制到还有一文件或文件夹中,同MSDOS下的copy命令一样,功能十分强大. 语法: cp [选项] 源文件或文件夹 目标文件或文件夹 说明:该命 ...
- 【CTO辩论】移动创业大军:谁斗争or变更代理
众创时代.英雄辈出. 但千军万马过独木桥,竞争厮杀也异常残酷.有人说,这个时代不宜创业,由于技术门槛高了.推广难度高了.盈利模式没了.创业变重了.玩法变了...... 也有人说,时势造英雄.天时地利人 ...
- Rational Rose 2007使用小结
1.Rose怎样隐藏类的属性和操作? 右击类,选Options->Suppress Attributes/Suppress Operations 2.Rose怎样表示类的约束? 在工具箱中选AB ...
- Sql Server存储过程和函数浅谈
今天给大家总结一下sql server中的存储过程和函数.本人是小白,里面内容比较初级,大神不喜勿喷 自行飘过就是.. 首先给大家简单列出sql server中的流控制语句,后面会用到的^_^ sql ...
- SpringMVC使用FileUpload上传文件
进口FileUpload和common-io的Jar包 注意:1.Struts2其它方法需要使用的:struts2过滤,将改变reqeust类型,由HttpServletRequest成为MultiP ...
- requestWindowFeature()应用
我们在开发程序是常常会须要软件全屏显示.自己定义标题(使用button等控件)和其它的需求,今天这一讲就是怎样控制Android应用程序的窗口显示. 首先介绍一个重要方法那就是requestWindo ...
- WP 前台或后台显示ShellToast
原文:WP 前台或后台显示ShellToast using Microsoft.Phone.Shell; ShellToast toast = new ShellToast(); toast.Titl ...
- Android Fragment 真正彻底的解决(下一个)
转载请注明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 上篇博客中已经介绍了Fragment产生原因.以及一些主要的使用方 ...
- hdu Write a simple HTML Browser
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1088 对比输出 代码: #include <stdio.h> #include <s ...