使用 Linux 和 Makefile 而不是使用基于 Windows 的 IDE 在 STM32 上设置 RTOS 应用程序的步骤是什么?

What are the steps to setup an RTOS application on STM32 using Linux and Makefiles instead of using Windows based IDEs?

我正在使用 STM32F4 探索板开发一个简单的板载加速度计应用程序,同时点亮安装在加速度计设备周围的各个 LED。我想使用任何 RTOS,但由于我是 RTOS 的新手,所以我无法决定使用哪一个。

如果有人可以详细说明使用 Linux 和一些 Makefile 启动此项目的步骤,将不胜感激。

以下是使用 Linux 和 Makefile 启动项目的步骤:

第 1 步:获取工具链

在 Ubuntu:

apt-get install gcc-arm-none-eabi

launchpad:

wget https://launchpad.net/gcc-arm-embedded/4.9/4.9-2015-q1-update/+download/gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2
tar xjf gcc-arm-none-eabi-4_9-2015q1-20150306-linux.tar.bz2

第 2 步:获取所需的来源

步骤 2.1:标准库

您可以选择STM32F4 DSP and standard peripherals library

或者,您也可以使用其他库,例如 libopencm3

步骤 2.2:RTOS

最常见的是使用FreeRTOS

第 3 步:创建 Makefile

就这样吧:

CROSS_COMPILE=arm-none-eabi-

SRC := myapp.c
SRC += <the needed library files>
SRC += <the needed freertos files>

myapp.elf: myapp.bin
        $(CROSS_COMPILE)objcopy -Obinary $@ $<

myapp.bin: $(SRC:%.c=%.o)
        $(CROSS_COMPILE)gcc -mthumb -nostartfiles -Wl,--gc-sections $^ -o $@

%.o: %.c
        $(CROSS_COMPILE)gcc -mthumb -ffunction-sections -fdata-sections -fno-common -Os -c $< -o $@

您应该添加一些 -I-L 来修复包含问题。

所需的 FreeRTOS 文件为:list.c, queue.c, tasks.c, portable/MemMang/heap_4.c, portable/GCC/ARM_CM4F/port.c

Demo/CORTEX_M4F_STM32F407ZG-SK里面有个example project可以帮到你

第 4 步:构建

在路径中添加您的工具链目录和运行您的 Makefile:

export PATH="$PATH:/path/to/toochain/bin"
make

第 5 步:闪光灯

你必须使用STM32F4的DFU模式。

使用 apt-get install dfu-util 在 Ubuntu 上安装该工具,然后您可以使用以下命令刷新 elf 文件:

sudo dfu-util -a 0 -s 0x08000000 -D myapp.elf