基于ubuntu下stm32开发环境搭建(ubuntu+st-link+libopencm3)
2016-02-25 14:11
447 查看
转自http://www.ithao123.cn/content-8230435.html
[摘要:媒介 玩8位、16位、32位单片机之类的开辟海内根基上皆是用windows操纵体系,用的是keil、iar之类的开辟对象。以stm32为例,开辟有stm32民圆供应的规范库,便是近似于STM32Fxxx_StdPeriph_Lib_]
前言
玩8位、16位、32位单片机之类的开发国内基本上都是用windows操作系统,用的是keil、iar之类的开发工具。以stm32为例,开发有stm32官方提供的标准库,就是类似于STM32Fxxx_StdPeriph_Lib_Vx.x.x这种,配合keil用起来也是相当顺手,而且在这种环境下开发资源丰富,遇到的问题也容易解决。
前段时间公司开发stm32项目,由于有国外现成的开源方案,只是不凑巧国外的大牛开发stm32的项目用的是linux开发环境,用的是libopencm3库,好在以前是在linux下做嵌入式开发的,不然真的抓瞎,这些问题倒腾倒腾整理一下分享给大家。
一、开发环境搭建
这里用的操作系统是ubuntu14.04
1、下载必要的工具
sudo apt-get install git libusb-1.0.0-dev(libusb是st-link要的底层驱动)
2、添加gcc-arm-embedded源,初始化编译器
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
3、初始化ST-LINK调试与烧写器驱动(有人喜欢用J-LINK,在Linux下也可以,不过安装驱动就是稍微麻烦一点,有兴趣的可以自己研究)
git clone https://github.com/texane/stlink.git
cd stlink/
./autogen.sh
./configure
make && make install
此时连接st-link 这时用lsusb命令就可以查看到相关的设备已经连接上,如下图
![](http://www.ithao123.cn/uploads02/u02/2d/50/2d502ed0642bf52553aec090b614a91f.jpg)
4、此时整个编译环境与下载环境搭建好了,做STM32开发还有一个重要的东西,那就是开发库,用开发库可以帮我们省不少时间嘛。这里我用项目中使用开源的libopencm3库来演示,当然stm32的官库也可以在linux下使用,只是要自己写Makefile来编译,这个有兴趣的可以自己动手编译一下。
git clone git://github.com/libopencm3/libopencm3.git
cd libopencm3
make
在lib目录下面编译出来会有相关的xxx.a文件,这里针对你的芯片来做链接,比如你是stm32f1xx系列芯片,项目里面的连接就使用libopencm3_stm32f1.a
二、构建项目
1、现在整个开发库与开发环境都构建完成了,那我们要开始写代码,编译,调试、下载到开发板啊,这里由于涉及到Makefile的编写,这里就直接用我STM32F205项目中的dfu demo做为示例,项目源代码请参考:
https://github.com/ykevin/blog/tree/master/embedded/dfu
2、关于src目录下面,里面有一个memory.ld、Makefile.include文件,其中memory.ld文件是芯片的连接脚本文件,这个根据你的芯片来选择,Makefile.include是用来编译项目的文件,具体的请看Makefile相关手册。
3、进入src目录,直接make就可以编译完成项目(记得要先编译libopencm3库)。
4、下程序,只需要在src目录make flash就可以(当然前提是你的st-link已经正确连接并识别)
三、调试
1、对于linux下的嵌入调试,这里使用的是强大的gdb工具,对于gdb的使用我就不做说明,这里我只演示怎么用gdb调试stm32
2、终端上执行以下命令
sudo st-util
arm-none-eabi-gdb
tar extended-remote :4242
load dfu.elf
3、到上面一步后就跟在x86下面gdb调试一样。
四、资源
1、关于libopencm3的使用网上有一个libopencm3-example的合集里面有各种国外经典开发板的各个模块的小demo,有兴趣的可以自己研究。
https://github.com/libopencm3/libopencm3-examples
[摘要:媒介 玩8位、16位、32位单片机之类的开辟海内根基上皆是用windows操纵体系,用的是keil、iar之类的开辟对象。以stm32为例,开辟有stm32民圆供应的规范库,便是近似于STM32Fxxx_StdPeriph_Lib_]
前言
玩8位、16位、32位单片机之类的开发国内基本上都是用windows操作系统,用的是keil、iar之类的开发工具。以stm32为例,开发有stm32官方提供的标准库,就是类似于STM32Fxxx_StdPeriph_Lib_Vx.x.x这种,配合keil用起来也是相当顺手,而且在这种环境下开发资源丰富,遇到的问题也容易解决。
前段时间公司开发stm32项目,由于有国外现成的开源方案,只是不凑巧国外的大牛开发stm32的项目用的是linux开发环境,用的是libopencm3库,好在以前是在linux下做嵌入式开发的,不然真的抓瞎,这些问题倒腾倒腾整理一下分享给大家。
一、开发环境搭建
这里用的操作系统是ubuntu14.04
1、下载必要的工具
sudo apt-get install git libusb-1.0.0-dev(libusb是st-link要的底层驱动)
2、添加gcc-arm-embedded源,初始化编译器
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi
3、初始化ST-LINK调试与烧写器驱动(有人喜欢用J-LINK,在Linux下也可以,不过安装驱动就是稍微麻烦一点,有兴趣的可以自己研究)
git clone https://github.com/texane/stlink.git
cd stlink/
./autogen.sh
./configure
make && make install
此时连接st-link 这时用lsusb命令就可以查看到相关的设备已经连接上,如下图
![](http://www.ithao123.cn/uploads02/u02/2d/50/2d502ed0642bf52553aec090b614a91f.jpg)
4、此时整个编译环境与下载环境搭建好了,做STM32开发还有一个重要的东西,那就是开发库,用开发库可以帮我们省不少时间嘛。这里我用项目中使用开源的libopencm3库来演示,当然stm32的官库也可以在linux下使用,只是要自己写Makefile来编译,这个有兴趣的可以自己动手编译一下。
git clone git://github.com/libopencm3/libopencm3.git
cd libopencm3
make
在lib目录下面编译出来会有相关的xxx.a文件,这里针对你的芯片来做链接,比如你是stm32f1xx系列芯片,项目里面的连接就使用libopencm3_stm32f1.a
二、构建项目
1、现在整个开发库与开发环境都构建完成了,那我们要开始写代码,编译,调试、下载到开发板啊,这里由于涉及到Makefile的编写,这里就直接用我STM32F205项目中的dfu demo做为示例,项目源代码请参考:
https://github.com/ykevin/blog/tree/master/embedded/dfu
2、关于src目录下面,里面有一个memory.ld、Makefile.include文件,其中memory.ld文件是芯片的连接脚本文件,这个根据你的芯片来选择,Makefile.include是用来编译项目的文件,具体的请看Makefile相关手册。
3、进入src目录,直接make就可以编译完成项目(记得要先编译libopencm3库)。
4、下程序,只需要在src目录make flash就可以(当然前提是你的st-link已经正确连接并识别)
三、调试
1、对于linux下的嵌入调试,这里使用的是强大的gdb工具,对于gdb的使用我就不做说明,这里我只演示怎么用gdb调试stm32
2、终端上执行以下命令
sudo st-util
arm-none-eabi-gdb
tar extended-remote :4242
load dfu.elf
3、到上面一步后就跟在x86下面gdb调试一样。
四、资源
1、关于libopencm3的使用网上有一个libopencm3-example的合集里面有各种国外经典开发板的各个模块的小demo,有兴趣的可以自己研究。
https://github.com/libopencm3/libopencm3-examples
相关文章推荐
- zabbix监控交换机
- shell 中数学计算总结
- 大型网站--负载均衡架构
- 在线定制图标网站
- 1044. Shopping in Mars (25)
- ceph存储 分布式系统设计系列 -- 基本原理及高可用策略
- Hadoop家族学习路线图
- linux下c检查内存泄漏的简单方法
- LNMP(linux+nginx+mysql+php)服务器环境配置
- Hadoop命令大全
- nginx+iis实现负载均衡
- centos7 adb问题解决办法
- openwrt学习计划
- Docker镜像
- 百万级访问量网站的技术准备工作
- 高可用集群heartbeat全攻略
- .Net网站架构设计(四) 缓存技术
- 【云计算】docker三剑客如何支持分布式部署?
- 向前兼容和向后兼容
- linux释放内存