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
    +关注

    关注

    88

    文章

    11628

    浏览量

    217980
  • STM32
    +关注

    关注

    2305

    文章

    11121

    浏览量

    371167
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Linux 下交叉编译实战:跑起来你的第一个 STM32 程序

    很多开发者第一次接触STM32,总会被“交叉编译”、“烧录程序”等概念绕晕。其实方法很简单:Linux下配置交叉编译环境,编写简单
    的头像 发表于 11-24 19:04 242次阅读
    <b class='flag-5'>Linux</b> 下交叉编译实战:跑起来你的第一个 <b class='flag-5'>STM32</b> <b class='flag-5'>程序</b>

    【免费送书】成为硬核Linux开发者:《Linux 设备驱动开发(第 2 版)》

    Linux系统的设备驱动开发,一直给人门槛较高的印象,主要因内核机制抽象、需深度理解硬件原理、开发调试难度大所致。2021年,一本讲解驱动开发的专著问世即获市场青睐,畅销近万册——这便
    的头像 发表于 11-18 08:06 436次阅读
    【免费送书】成为硬核<b class='flag-5'>Linux</b><b class='flag-5'>开发</b>者:《<b class='flag-5'>Linux</b> 设备驱动<b class='flag-5'>开发</b>(第 2 版)》

    【书籍评测活动NO.67】成为硬核Linux开发者:《Linux 设备驱动开发(第 2 版)》

    Linux驱动开发在当下也有着重要意义,从工业物联网(IIoT)的传感器控制、智能汽车的车载系统硬件适配,到边缘计算节点的资源调度,都需要Linux驱动深度参与。具备驱动开发能力,正是
    发表于 11-17 17:52

    Windows和Linux环境下分别使用Olimex和蜂鸟调试器下载程序

    本队伍编号CICC3042,本篇文章介绍Windows和Linux环境下分别使用Olimex和蜂鸟调试器下载程序,和一篇Hbirdv2的移植配合使用。 使用过第一版蜂鸟的同学
    发表于 10-31 08:26

    如何在rt-thread studio开发STM32H747这类双核的单片机?

    如题,我希望rt-thread studio开发STM32H747IIT6这款双核单片机,keil里两个核的代码是完全隔离的,分别在两
    发表于 09-19 08:08

    STM32程序的烧录方式

    电子发烧友网站提供《STM32程序的烧录方式.pdf》资料免费下载
    发表于 08-28 16:03 6次下载

    Linux 应用开发手册

    T507linux应用开发手册
    发表于 08-22 17:01 10次下载

    如何在rt-thread studio开发STM32H747IIT6?

    如题,我希望rt-thread studio开发STM32H747IIT6这款双核单片机,keil里两个核的代码是完全隔离的,分别在两
    发表于 06-11 06:24

    【米尔-STM32MP257开发板试用体验】初次体验米尔-STM32MP257开发

    接口。 为了帮助开发者更好地理解与应用STM32MP257D处理器和MYD-LD25X开发板,米尔将与ST2025年1月7日和2025年1月10日分别于南京、北京联合举办线下培训会,
    发表于 04-30 16:21

    硬核升级!华清远见STM32MP157驱动开发课程助力嵌入式Linux底层开发入门进阶

    嵌入式Linux系统开发中,驱动程序开发是一项关键技术,它作为硬件与软件之间的桥梁,实现了操作系统对硬件设备的控制。相较于嵌入式
    的头像 发表于 04-03 16:40 707次阅读
    硬核升级!华清远见<b class='flag-5'>STM32</b>MP157驱动<b class='flag-5'>开发</b>课程助力嵌入式<b class='flag-5'>Linux</b>底层<b class='flag-5'>开发</b>入门进阶

    [迅为]Linux开发小技巧:Remote - SSH插件

    [迅为]Linux开发小技巧:Remote - SSH插件
    的头像 发表于 04-01 15:46 946次阅读
    [迅为]<b class='flag-5'>Linux</b><b class='flag-5'>开发</b>小技巧:Remote - SSH插件

    STM32开发板教程之STM32开发指南免费下载

    介绍了几个常用的系统文件(程序);3,实战篇,主要通过 56 个实例(绝大部分是直接操作寄存器完成的)带领大家一步步深入 STM32 的学习。   本指南为 ALIENTEK 战舰 STM32
    发表于 02-28 09:08 179次下载

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

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

    嵌入式开发必备-RK3562演示Linux常用系统查询命令()触觉智能出品

    实用干货!嵌入式开发学习必备-RK3562演示Linux常用系统查询命令()关注触觉智能持续为大家带来更多嵌入式开发内容
    的头像 发表于 12-31 10:51 117次阅读
    嵌入式<b class='flag-5'>开发</b>必备-RK3562演示<b class='flag-5'>Linux</b>常用系统查询命令(<b class='flag-5'>上</b>)触觉智能出品

    RZ T2H PCIe裸机程序开发Linux下的配置介绍

    ,还提供2个PCIe Gen3通道等高速外设。本文主要介绍PCIe外设的功能、裸机下EP模式的程序开发、以及Linux下,如何编译网卡的流程。
    的头像 发表于 12-18 11:14 2489次阅读
    RZ T2H PCIe裸机<b class='flag-5'>程序</b><b class='flag-5'>开发</b>和<b class='flag-5'>Linux</b>下的配置介绍