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

时间:2015-06-19 06:39:20

标签: makefile arm embedded-linux stm32 rtos

我正在使用STM32F4 Discovery板开发一个简单的应用程序到板载加速度计,同时点亮安装在加速度计设备周围的各个LED。我想使用任何RTOS,但由于我不熟悉使用RTOS,因此我无法确定哪一个。

如果有人能够通过使用Linux和一些Makefile来详细说明启动这个项目的步骤,那将不胜感激。

1 个答案:

答案 0 :(得分:2)

以下是使用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步:Flash

您必须使用STM32F4的DFU模式。

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

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