怎样在Linux上开发STM32程序

发布时间:2024-02-27  

步骤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以查看所有可用参数。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>