文档首页 > > 最佳实践> 最佳实践> 移植教程> OS移植> STM32 系列(Makefile/GCC)

STM32 系列(Makefile/GCC)

分享
更新时间: 2020/05/26 GMT+08:00

移植工程下载

编译 STM32Cube 生成的裸机工程

默认的裸机工程如下图所示,会按照代码功能组织好。我们可以执行编译检查工程是否 OK。

请务必提前安装好 GNU Arm Embedded Toolchain 工具链。建议使用最新版本的工具链,最低版本要求为gcc-arm-none-eabi_7-2018-q2-update。在 STM32Cube 导出的裸机工程下执行 make 命令。如果能看到下图所示结果,证明您的环境已经部署好。

拷贝 LiteOS Kernel 相关目录到裸机工程

新版本的源码中,使用demos目录替代examples。

我们在 STM32F103RB_NUCLED或者STM32F103VET6_NB_GCC中 发现 OS_CONFIG 目录,将该目录拷贝到本地工程中。

在 STM32Cube 生产的裸机工程中创建 Middlewares 目录,直接拷贝 LiteOS Kernel 相关目录。

├─ Middlewares
│  └─ LiteOS
│     ├─ arch
│     ├─ examples或demos
│     └─ kernel
├─ OS_CONFIG

创建 LiteOS Kernel 相关 makefile 文件

创建 arch.mk 文件,添加 arch 目录下相关的源文件和头文件路径

######################################
# source
######################################
# C sources
ARCH_SRC =  \
${wildcard ../Middlewares/LiteOS/arch/arm/arm-m/src/*.c}
C_SOURCES += $(ARCH_SRC)
# ASM sources
ASM_SOURCES_S +=  \
../Middlewares/LiteOS/arch/arm/arm-m/cortex-m3/gcc/los_dispatch_gcc.S 
# C includes
ARCH_INC = \
        -I../Middlewares/LiteOS/arch/arm/arm-m/include \
        -I../Middlewares/LiteOS/arch/arm/common/cmsis
C_INCLUDES += $(ARCH_INC)

创建 kernel.mk 文件,添加 kernel 目录下相关的源文件和头文件路径

######################################
# C sources
KERNEL_SRC =  \
${wildcard ../Middlewares/LiteOS/kernel/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/core/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/ipc/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/mem/bestfit_little/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/mem/membox/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/mem/common/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/misc/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/base/om/*.c} \
${wildcard ../Middlewares/LiteOS/kernel/extended/tickless/*.c}
C_SOURCES += $(KERNEL_SRC)
# C includes
KERNEL_INC = \
        -I ../Middlewares/LiteOS/kernel/base/include  \
        -I ../Middlewares/LiteOS/kernel/extended/include  \
        -I ../Middlewares/LiteOS/kernel/include
C_INCLUDES += $(KERNEL_INC)

最后修改 Makefile 文件,将刚刚创建好的 arch.mk 和 kernel.mk 包含进来。

OBJECTS += $(addprefix $(BUILD_DIR)/,$(notdir $(ASM_SOURCES_S:.S=.o)))
vpath %.S $(sort $(dir $(ASM_SOURCES_S)))
$(BUILD_DIR)/%.o: %.S Makefile | $(BUILD_DIR)
$(AS) -c $(CFLAGS)$< -o $@

编译无误,OS移植大功告成

可以在 build 目录下找到编译好的 bin 文件

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问