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

    文章

    10986

    浏览量

    206723
  • STM32
    +关注

    关注

    2239

    文章

    10669

    浏览量

    348709
收藏 人收藏

    评论

    相关推荐

    如何让CYUSBlinux闪存固件?

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

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

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

    如何构建linux开发环境和编译软件工程、应用程序

    前文介绍了如何使用官方提供的镜像文件启动开发板,本文将说明如何构建linux开发环境和编译软件工程、应用程序
    的头像 发表于 01-03 12:31 448次阅读
    如何构建<b class='flag-5'>linux</b><b class='flag-5'>开发</b>环境和编译软件工程、应用<b class='flag-5'>程序</b>

    STM32+Linux开发板应用手册

    STM32 WIFI Linux 安卓智能控制开发板应用手册
    发表于 12-21 11:04 0次下载

    LabVIEW不同操作系统使VI、可执行文件或安装程序

    不同操作系统之前,确保硬件的所需驱动程序该操作系统中受支持。例如,使用DAQmx 9.8开发的应用程序
    发表于 12-02 21:47

    嵌入式Linux应用程序开发详解-第3章

    电子发烧友网站提供《嵌入式Linux应用程序开发详解-第3章.pdf》资料免费下载
    发表于 11-16 11:19 0次下载
    嵌入式<b class='flag-5'>Linux</b>应用<b class='flag-5'>程序</b><b class='flag-5'>开发</b>详解-第3章

    嵌入式Linux应用程序开发详解-第2章

    电子发烧友网站提供《嵌入式Linux应用程序开发详解-第2章.pdf》资料免费下载
    发表于 11-16 11:18 0次下载
    嵌入式<b class='flag-5'>Linux</b>应用<b class='flag-5'>程序</b><b class='flag-5'>开发</b>详解-第2章

    嵌入式Linux应用程序开发详解-第1章

    电子发烧友网站提供《嵌入式Linux应用程序开发详解-第1章.pdf》资料免费下载
    发表于 11-16 11:17 0次下载
    嵌入式<b class='flag-5'>Linux</b>应用<b class='flag-5'>程序</b><b class='flag-5'>开发</b>详解-第1章

    STM32加密问题:怎样预置一段Flash读保护和清除读保护的程序

    STM32加密问题:怎样预置一段Flash读保护和清除读保护的程序STM32加密方案中,为了对芯片进行加密,我们需要加入读保护功能。读保护功能即使未经授权的人无法读取芯片的Flas
    的头像 发表于 10-29 17:24 1286次阅读

    STM32单片机程序编译及下载配置

    当拿到STM32单片机开发板的时候,程序的编译和下载将是我们踏入STM32单片机开发的第一步。本章详细介绍
    发表于 08-11 16:08 3272次阅读
    <b class='flag-5'>STM32</b>单片机<b class='flag-5'>程序</b>编译及下载配置

    ARM-Linux开发和 MCU开发的不同点 ARM-Linux的基本开发环境

    针对 ARM-Linux 程序开发,主要分为三类:应用程序开发、驱动程序
    的头像 发表于 08-07 16:23 524次阅读

    看看ARM-Linux开发和MCU开发的不同点

    针对ARM-Linux程序开发,主要分为三类:应用程序开发、驱动程序
    发表于 07-25 09:25 758次阅读

    ARM-Linux开发和MCU开发的不同点

    针对ARM-Linux程序开发,主要分为三类:应用程序开发、驱动程序
    的头像 发表于 06-22 11:46 668次阅读

    STM32 Linux开发板丨STM32MP157开发板资料手册+实战教程+视频教程

    Linux系统庞大而丰富的软件组件处理复杂应用。M4内核运行对于实时性要求严格的应用。 开发板既有A7核,又有M4核,从学习者角度来看,既可以学习嵌入式Linux又可以学习
    发表于 05-31 10:16

    ARM-Linux开发和MCU开发的不同点

    针对ARM-Linux程序开发,主要分为三类:应用程序开发、驱动程序
    的头像 发表于 05-30 09:01 481次阅读