0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

怎样在Linux上开发STM32程序

454398 来源:网络整理 作者:网络整理 2019-11-19 17:44 次阅读

步骤1:下载所需的一切

怎样在Linux上开发STM32程序

您需要下载三个部分才能正常工作:

用于ARM的GCC编译器

STM32固件文件

St-link实用程序

Sample Project

编译器是将我们的C代码和所有其他库文件编译成stm32控制器可以理解的机器语言的主要软件。下载此编译器的最新预编译版本。

包含STM32固件的文件夹是保存主处理器运行所需的所有启动文件和核心文件的文件夹。我们将使用HAL已超越的标准外围设备库。我更喜欢StPeriphLibrary,因为使用该处理器的公司都在使用它们,因为它功能强大,更老旧并且受支持。它也更坚固。它不会减少初始化外围设备或打开LED所需的工作,但是会迫使您学习这些处理器的工作方式。这样一来,您将对内部工作有更多的了解,从而可以对任何任务进行编程

最后一个下载的软件是st-link实用程序。它在github上维护,用于通过板上的stlink IC作为SWD/JTAG编程器/调试器将编译的二进制文件传输到处理器。

我还提供了一个示例项目文件夹稍后再下载。它位于第一个VIDEO1文件夹中。

步骤2:安装软件

下载后我建议您将所有文件都放在一个公用文件夹中,因为它们都出于相同的目的而一起使用。我将所有文件夹放在HOME目录中一个名为“ Embedded”的文件夹中。

我们将从最简单的STM32库开始。您下载的文件夹可以留在这里。只需确保四处挖掘以查看适当文件的存储位置。因此,您可以更改和编辑主MakeFile,使其可以在您的平台上使用。

第二个最简单的是编译器。您也不需要执行任何操作,但是我们将使编译器成为可全局访问的函数,因此您可以从任何文件夹调用编译器,而无需考虑路径。所有步骤都可以在终端机或gui中完成,但是我喜欢使用终端机,因为当您有经验时,它会变得越来越快,更容易,如果您担心的话,建议您多使用终端机。步骤如下:

进入主文件夹“/home/YOURUSERNAME/”或“〜/”,或在终端中输入 cd

通过键入以下内容来打开文件“ .bashrc”: nano .bashrc

向下滚动到文件末尾并添加以下行:

export PATH = $路径:〜/Embedded/gcc-arm-none-eabi-8-2018-q4/bin

通过保存退出: CTRL + X,单击Y,ENTER

运行命令: source .bashrc 刷新终端源

通过键入以下命令检查是否一切正常: arm-none-eabi-gcc --version,它应该显示编译器的最新版

要安装st-link,请将已下载的存档解压缩到Embedded文件夹中。然后执行以下步骤:

运行: make

进入文件夹“ build/Release”: cd build/Release

键入 ls ,您将看到两个名为“ st-flash”和“ st-util”的可执行文件

将这两个可执行文件移动到父目录中stlink: mv st-flash st-util 。./。./

可以,如果您想使用这两个功能,可以通过以下方式再次全局编辑“ .bashrc”文件添加:

导出PATH = $ PATH:〜/Embedded/stlink/

仅此而已!您拥有所需的一切。现在,抓住您自己喜欢的文本编辑器。我只使用标准的,像SublimeText或Atom这样的更智能的标准。

第3步:建立示例项目

我们现在将创建一个示例项目,您可以使用该示例项目来启动每个项目。就像一个模板,已经处理了所有主要设置。

您可以将其下载到我的MEGA中,该链接位于本教程的第一步,并且在我的所有youtube视频下。里面是空的main.c文件,以及此处理器和Makefile的一些启动文件。 Makefile可以告诉C编译器在哪里找到arm编译器,如何编译以及所有库在哪里。为了获得适合您项目的这些文件,您可以进入STM32库文件夹并检查“ project”或“ examples”文件夹。在内部,您将看到并复制以下文件: main.c , Makefile 和 XXX_conf.h , system_XXX.c。

此外,您还需要 stm32_flash.ld 链接程序文件,该文件可在示例文件夹或以下文件夹中找到:

“/FLASH_Program/TrueSTUDIO/FLASH_Program/”或只需搜索文件即可。

Makefile可以在线找到,也可以从我的文件夹中复制,但是您需要做一些更改。让我们来看看我的make文件以及可以更改的内容。

# Path to stlink folder for uploading code to board

STLINK=~/Embedded/stlink

# Put your source files here (*.c)

SRCS=main.c system_stm32f4xx.c

# Libraries source files

#SRCS += stm32f4xx_rcc.c

#SRCS += stm32f4xx_gpio.c

# Binaries will be generated with this name (.elf, .bin, .hex)

PROJ_NAME=test

# Put your STM32F4 library code directory here, change YOURUSERNAME to yours

STM_COMMON=/home/matej/Embedded/STM32F4-Discovery_FW_V1.1.0

# Compiler settings. Only edit CFLAGS to include other header files.

CC=arm-none-eabi-gcc

OBJCOPY=arm-none-eabi-objcopy

# Compiler flags

CFLAGS = -g -O2 -Wall -Tstm32_flash.ld

CFLAGS += -DUSE_STDPERIPH_DRIVER

CFLAGS += -mlittle-endian -mthumb -mcpu=cortex-m4 -mthumb-interwork

CFLAGS += -mfloat-abi=hard -mfpu=fpv4-sp-d16

CFLAGS += -I.

# Include files from STM libraries

CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/Include

CFLAGS += -I$(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Include

CFLAGS += -I$(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/inc

CFLAGS += -I$(STM_COMMON)/Utilities/STM32F4-Discovery

# add startup file to build

SRCS += $(STM_COMMON)/Libraries/CMSIS/ST/STM32F4xx/Source/Templates/TrueSTUDIO/startup_stm32f4xx.s

OBJS = $(SRCS:.c=.o)

vpath %.c $(STM_COMMON)/Libraries/STM32F4xx_StdPeriph_Driver/src \

.PHONY: proj

all: proj

proj: $(PROJ_NAME).elf

$(PROJ_NAME).elf: $(SRCS)

$(CC) $(CFLAGS) $^ -o $@

$(OBJCOPY) -O ihex $(PROJ_NAME).elf $(PROJ_NAME).hex

$(OBJCOPY) -O binary $(PROJ_NAME).elf $(PROJ_NAME).bin

clean:

rm -f *.o $(PROJ_NAME).elf $(PROJ_NAME).hex $(PROJ_NAME).bin

# Flash the STM32F4

burn: proj

$(STLINK)/st-flash write $(PROJ_NAME).bin 0x80000000

您可以编辑第一行以将路径更改为stlink实用程序文件夹

您可以使用库和YOURUSERNAME

STM_COMMON=/home/YOURUSERNAME/Embedded/STM32F4-Discovery_FW_V1.1.0

将行更改为文件夹的目的地,也可以检出链接所有库的部分。这可能会根据您使用的平台而有所不同,因此请检查文件树中的更改。包括指向某些文件的路径在内的所有其他内容,都可以更改,例如带有启动文件的下一行。

在Makefile中编辑完所有这些内容之后,您可以检查其是否正常运行在目录内打开一个终端,然后输入: make 。如果它可以毫无问题地编译所有东西,那么您就设置好了。如果没有,请查看编译器错误并编辑Makefile。

此外,当我使用Atom时,我并排放置了两段代码。通常main.c和Makefile在左侧,因为您只需要编辑一次Makefile,在右侧编辑库。您可以在图片上看到我打开了包含每个库的.c和.h文件的文件夹。您可以在视频中看到所有这些内容。

第4步:完成!

现在,您已经配置了Makefile并编译器正常工作时,您可以将该文件夹用于所有项目作为模板,因此请确保保存此文件夹的副本。

还可以测试 st-flash 和《通过插入开发板并在终端中键入 st-info 程序:st-info --probe

您可以看到stlink软件可以识别的平台以及IC系列以及缓存和其他东西。您可以键入:st-info以查看所有可用参数

责任编辑:wv

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11331

    浏览量

    210020
  • STM32
    +关注

    关注

    2270

    文章

    10918

    浏览量

    356882
收藏 人收藏

    评论

    相关推荐

    JetBrains IDE开发微信小程序的官方插件

    一直以来,小程序开发者必须安装第三方插件,才能在 JetBrains IDE 中进行小程序开发 JetBrains Marketplac
    的头像 发表于 01-16 17:15 80次阅读
    JetBrains IDE<b class='flag-5'>上</b>架<b class='flag-5'>开发</b>微信小<b class='flag-5'>程序</b>的官方插件

    Linux应用编程的基本概念

    Linux应用编程涉及到Linux环境下开发和运行应用程序的一系列概念。以下是一些涵盖Linux
    的头像 发表于 10-24 17:19 265次阅读

    如何在STM32运行AI应用

    1.X-Linux-AI概述X-LINUX-AI是STM32MPUOpenSTLinux扩展包,面向STM32MP1和STM32MP2系列微
    的头像 发表于 09-30 08:00 2635次阅读
    如何在<b class='flag-5'>STM32</b><b class='flag-5'>上</b>运行AI应用

    TM4C MCU用FreeRTOS开发通用应用程序应用说明

    电子发烧友网站提供《TM4C MCU用FreeRTOS开发通用应用程序应用说明.pdf》资料免费下载
    发表于 09-11 14:15 0次下载
    <b class='flag-5'>在</b>TM4C MCU<b class='flag-5'>上</b>用FreeRTOS<b class='flag-5'>开发</b>通用应用<b class='flag-5'>程序</b>应用说明

    【北京迅为】《stm32mp157开发板嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载

    【北京迅为】《stm32mp157开发板嵌入式linux开发指南》第五章 Ubuntu使用apt-get下载
    的头像 发表于 09-03 16:26 829次阅读
    【北京迅为】《<b class='flag-5'>stm32</b>mp157<b class='flag-5'>开发</b>板嵌入式<b class='flag-5'>linux</b><b class='flag-5'>开发</b>指南》第五章 Ubuntu使用apt-get下载

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式
    的头像 发表于 09-02 09:11 568次阅读

    linux开发板如何编译curl

    Linux开发编译 curl 库通常涉及到几个步骤,包括准备开发环境、下载源代码、配置编译选项以及执行编译和安装过程。以下是一个基本的
    的头像 发表于 08-30 15:33 744次阅读

    linux驱动程序如何加载进内核

    Linux系统中,驱动程序是内核与硬件设备之间的桥梁。它们允许内核与硬件设备进行通信,从而实现对硬件设备的控制和管理。 驱动程序的编写 驱动程序
    的头像 发表于 08-30 15:02 539次阅读

    Linux 驱动开发与应用开发,你知道多少?

    一、Linux驱动开发与应用开发的区别开发层次不同:Linux驱动开发主要是针对硬件设备进行编程
    的头像 发表于 08-30 12:16 876次阅读
    <b class='flag-5'>Linux</b> 驱动<b class='flag-5'>开发</b>与应用<b class='flag-5'>开发</b>,你知道多少?

    小白也会的,linux跑android应用的方案

    介绍一个可以linux跑安卓应用的linux桌面——OpenFDE
    的头像 发表于 08-23 11:14 738次阅读
    小白也会的,<b class='flag-5'>在</b><b class='flag-5'>linux</b><b class='flag-5'>上</b>跑android应用的方案

    stm32程序烧录的几种方法?

    STM32是一款由STMicroelectronics公司推出的32位微控制器,广泛应用于嵌入式系统开发。烧录STM32程序开发过程中的重
    的头像 发表于 08-22 09:35 4802次阅读

    STM32F103电路板怎样做配套的电路设计呢?

    新手求助: 小弟正在用STM32F103做一个开发,现在正在做硬件部分的电路设计,想求助一下大婶们如果程序用JLink来下载的话,电路板
    发表于 05-11 08:14

    如何让CYUSBlinux闪存固件?

    不起作用。 我能知道其他支持 linux 中刷新固件的应用程序吗,或者如何让 CYUSB linux
    发表于 02-22 06:23

    盘点那些硬件+项目学习套件:STM32MP157 Linux开发板及入门常见问题解答

    来盘点一下,比较受欢迎几款“硬件+项目”学习套件,以及一些初学者比较关注的问题。 盘点一:STM32MP157 Linux开发板 ▋开发板标识图 ▋
    发表于 02-01 14:25

    如何使用linux下gdb来调试python程序

    如何使用linux下gdb来调试python程序  Linux下,可以使用GDB(GNU调试器)来调试Python程序。GDB是一个强大的
    的头像 发表于 01-31 10:41 2697次阅读