说到STM32,大家不陌生,mdk环境+开发板+jlink即可搞定,但对于mdk开发环境,大部分人并不能说清楚。对于一个工程的编译,链接,烧写,调试过程完完全全集成在一个软件里,一键即可实现,这当然方便开发,但我们想要了解的编译、链接规则,调试原理等,却一无所知,所以当MDK出现一些奇怪的BUG时无从下手,明明是软件问题我们却查找代码错误。本文介绍一种原始的stm32开发方式,在linux操作系统下,所有的编译,链接,调试工作都是由你自己去决定完成,包括makefile的编写,以后对于高级嵌入式开发有需求的开发者可以先用stm32这种易上手的系统试试水,了解这种linux下的嵌入式开发的一般流程,这样,以后不管遇到任何平台的任何芯片,都有一个大体开发思路可以遵循,不至于一头雾水。进入正题,直接开始操作吧。

一.linux系统安装

建议安装ubuntu虚拟机,教程百度。

二.gcc-arm-none-eabi交叉编译器的安装

对于交叉编译这一概念,很多人陌生,在windows下几乎没有这一概念(实际就是交叉编译),所谓交叉即为pc端编译好的工程拿去嵌入式端直接运行,因为嵌入式系统资源有限,没有能力自己编译自己的工程再运行,试想以下MDK不就是这样吗,实际上MDK也用类似的编译器,功能完全一样。ps:pc端编译pc端运行的程序叫做本机编译,例如vs,vc等工具。所以,让我们先在linux下安装交叉编译工具链吧。

打开下载页面 https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads/5-2016-q3-update

这是一个嵌入式交叉编译开发者项目团队的官网,如下有几个下载链接

顾名思义,我们选linux下的download(Source为工具链的源码,需要经过编译后才能生成交叉编译工具链,捋一捋关系),而我们选择下载现成工具链,有兴趣的可以查阅相关资料自己编译Source生成工具链。

下载到Windows上之后我们可以将其拷贝到linux下的/opt/gcc-arm-none-eabi/下(自建文件夹),解压。

进入bin:       cd  /opt/gcc-arm-none-eabi/gcc-arm-none-eabi-5_4-2016q3/bin/

可以看到我们已经安装的工具了。其中后缀为gcc的为C编译器,后缀为g++的为c++编译器,ld为链接器,gdb为debug等

设置环境变量:export PATH=$PATH:/opt/gcc-arm-none-eabi/gcc-arm-none-eabi-5_4-2016q3/bin

这样你只需要以后键入gcc-arm然后按Tab键系统就会按照此路径寻找到bin下的各个工具,然后自动补齐为

gcc-arm-none-eabi-

到此我们的交叉编译工具链已经安装好(包括编译器和链接器)。

三.openocd安装

openecd是一个集成了stlink,ulink,jlink等多种协议的调试软件,相当于mdk的烧写和debug功能,因此不用问为什么,想要烧程序,必须安装。

下载地址:https://sourceforge.net/projects/openocd/

同样下载完成后拷贝至linux下,路径随意,我的是/opt/openocd/

解压,进入openocd-0.10.0,cd  /opt/openocd/openocd-0.10.0/

因为下载的是源码工程,所以要先后经过配置(主要配置调试器的类型),编译,安装流程

配置之前安装两个包:sudo  apt-get  install  libusb++-dev  libusb-1.0.0-dev

配置:  ./configure

稍等片刻即可列出调试器,如果你想要的调试器处于关闭状态,比如我这里想要配置jlink,则重新配置加上参数:

./configure --enable-jlink

稍等片刻即可,如图:

可以看到已经配置好了segger的jlink

编译:   make

安装:   make install

至此调试器安装完成,默认安装路径是/usr/local/share下的openocd

四.调试器的驱动安装(jlink)

我使用的是jlink,所以介绍jlink的安装,其他调试器可以自行查找资料。

下载jlink驱动的官网地址:http://www.segger.com/cms/jlink-software.html

选择downloadJ-Link Software and Documentation pack for Linux, TGZ archive, 32-bit

拷贝至linux下的/opt/jlink_driver/

解压,进入文件夹后执行 cat README.txt查看安装说明,按照要求执行命令后重启系统。

然后执行以下命令:

cp libjlinkarm.so.* /usr/lib

cp JLinkGDBServer* /usr/bin/

cp JLinkExe /usr/bin/

usermod -a -G plugdev <Username>

至此jlink的驱动安装完毕。

所有准备工作以完成,下一节开始应用实践。

stm32在linux下开发(一)相关推荐

  1. Android Linux下开发环境搭建

    开发环境--这个没有要求你一定得在什么系统下开发,你对哪个环境熟悉就用哪个. 如果习惯Windows的话,那在Windows下开发:如果对Linux比较熟,那你就用Linux. 不过,话说回来,Lin ...

  2. 在Linux下开发多语言软件: Hello GetText!

    在Linux下开发多语言软件: Hello GetText! 转自:http://www.groad.net/bbs/read.php?tid-906.html 开发多语言软件是一件非常困难的事,各个 ...

  3. Go语言 linux下开发 IDE -SpaceVim\NeoVim

    文章目录 Go语言 linux下开发 IDE -SpaceVim 一.NeoVim和SpaceVim区别 二.NeoVim 安装 NeoVim Neovim GitHub Copilot插件安装 常见 ...

  4. 在 Linux 下开发和下载8051单片机程序

    在 Linux 下开发和下载8051单片机程序 在 Linux 下需要用 sdcc 开发8051单片机程序,用 stcgal 这个 python 程序将编译好的8051单片机程序下载到裸机上. sdc ...

  5. 在Linux下开发简易通讯录

    通过这一段时间的学习,这两天花了不少时间巩固理解,终于完成了在Linux下开发简易通讯录,由于时间仓促,该程序有着不少bug,对于用户的输入容错率也不高,只做了开始菜单的输入容错,功能也只实现了基本的 ...

  6. linux下如何开发php,在linux下开发PHP,用哪个系统?该如何解决

    在linux下开发PHP,用哪个系统? 用 ubuntu还是centos呢? 求指导. O(∩_∩)O谢谢 ------解决方案-------------------- 这倒是无所谓的,不过建议与线上 ...

  7. 如何在linux下开发java程序

    背景 如何在linux下开发java程序,或者更具体一点在linux开发java SDK, 首先明确一下几点 开发工具 如果编译 如何运行 如果写单侧 开发工具 编辑器: 可以直接安装PowerVim ...

  8. Linux下开发环境搭建---2. emacs篇

    Linux下开发环境搭建---2. emacs篇 本节主要参考:      曹乐的<在Emacs下用C/C++编程>      王纯业的<Emacs 一个强大的平台>      ...

  9. Linux下开发常用的CVS使用手册

    CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件同步的目的.工作模式如下: CVS服务器(文件版本库) / | \ (版 本 同 步) / | \ 开发者1 ...

最新文章

  1. YII显示sql进行调试
  2. JDK13 GA发布:5大特性解读
  3. Portlet开发指南第二章
  4. java 文件内容排序_在Java中对2个大型文本文件进行排序的最佳方法是什么?
  5. CentOS6.x下GitLab安装
  6. php柱形图 数据sql,ThinkPHP 5.1 读取数据库中的图片
  7. 03-java学习-基本数据类型-运算符-键盘接收用户输入
  8. 【转】sharepoint foundation 2013升级sp1补丁后无法使用搜索功能
  9. 电脑有没有蓝牙_手机蓝牙没什么用?那是因为你不会用!这9种用法,你用过几种?...
  10. 每周更新:Markdown1.1.7 、Nacos1.0.0 GA 、CKFinder3.5、Apache POI 4.1.0等新版本发布
  11. 一段看不懂的乱码字符_字符乱码的解读
  12. 学前教育计算机课程设置,计算机网络背景下学前教育专业课程设置分析
  13. OSS(一):OSS工具类
  14. 计算机网络手写笔记图片,一键收藏!清华学子这样记笔记!
  15. 拉依达准则剔除数据异常
  16. PTA(接口)用java写 7-10 房屋、住宅、写字楼类
  17. 购买服务器的个人经验
  18. Ajax--概述、xhr对象的常用属性和方法、xhr的常用事件、xhr对象发送POST请求、xhr对象发送GET请求、xhr对象的兼容性问题、数据交换格式(XML、JSON)
  19. 强烈推荐!10个超高质量Python数据分析公众号!
  20. NI LABVIEW 2019安装教程,ATECLOUD免安装可在线使用

热门文章

  1. 207.课程表(java)
  2. stm32f429基于ymodem传输的bootloader
  3. Activity has leaked window DecorView@992a599[XXXActivity] that was originally add
  4. vue video播放m3u8源
  5. 一直都是技术,今天来点儿文艺范儿……
  6. Mansory 基本用法
  7. 吉林华微电子: 自主研发砥砺行 助力打造“中国芯”
  8. Network problems last Friday
  9. sketchup 计算机配置,草图大师sketchup电脑要求配置高吗?
  10. CAS到底是怎么回事