使用makefile编译freeRTOS

freeRTOS的文件结构

  • FreeRTOS-Labs
  • FreeRTOS-Plus 包含freeRTOS+的组件和demo项目
  • FreeRTOS 包含内核和demo项目
    • Source目录:
      1. 三个必须文件list.c queue.c task.c和其他的一些附加的文件
      2. include目录存放内核的头文件
      3. portable目录存放与内存管理相关的内容、与架构和编译器相关的内容,前者里面关注的是heap_x.c文件。后者里面需要关注的文件只有port.c和protmacro.h

freeRTOS的移植

需要关注的文件:

  • Source文件下主要存放的是freeRTOS内核的文件

Makefile文件的编写

可以分为多个makefile文件构建系统

内核文件列表

输入文件列表

FREERTOS_DIR:以FreeRTOS目录为项目的基目录

FREERTOS_SOURCE_DIR:该目录指定freertos的内核文件存放的目录

FREERTOS_INC:该目录指定freertos的头文件

FREERTOS_SRC:内核文件列表

输出文件列表

FREERTOS_OBJS:freertos中所有与底层相关的代码生成的目标文件。依赖于FREERTOS_SRC、PORT_OBJS和SDK_OBJS

体系结构相关的文件列表的声明

输入文件列表

ARCH_PORTABLE_INC:体系结构相关的头文件,例如CMSIS头文件等

ARCH_PORTABLE_SRC:一般是port.c

ARCH_PORTABLE_ASM:与cpu移植相关的汇编程序文件(一般是异常处理函数的实现,线程上下文的切换)

输出文件列表

PORT_OBJS:依赖于ARCH_PORTABLE_SRC和ARCH_PORTABLE_ASM

bsp文件的声明

输入文件列表

SDK_DIR:bsp文件存放的目录

SDK_SRC:c语言的引导程序,自己实现的标准库文件,驱动代码文件的列表

SDK_ASM:汇编的boot代码,和异常向量表的汇编程序的文件列表

输出文件列表

SDK_OBJS:依赖于SDK_SRC和SDK_ASM

应用文件的声明

输入文件列表

APP_SRC:应用的c文件列表

APP_ASM:应用的汇编文件列表

APP_INCLUDES:应用的头文件

输出文件列表

APP_OBJS:依赖于APP_SRC和APP_ASM

编译环境的构建

该文件中应该建立的变量有

LINKER_SCRIPT:链接脚本相关,链接脚本存放的位置

GCC工具链相关的变量:
GCC、OBJCOPY、OBJDUMP、AR、RANLIB、GDB

编译标志:
CFLAG、ASMFLAGS和LDFLAGS

makefile中VPATH和vpath的使用

makefile中patsubst的使用:用于文件模式的替换

patsubst 原模式, 目标模式, 文件列表

makefile中notdir的使用:去掉文件的绝对路径只保留文件名

gcc中–wrap选项的使用:使用方式–wrap==symbol。作用是在调用symbol函数时会替换为__wrap_symbol函数,就是为了替换系统函数。

起编译作用的makefile

输出文件:

OUT_ELF:最后的输出文件,依赖于OUT_ELF中指定的文件,由gcc直接编译输出为elf文件

OUT_OBJS:依赖APP_OBJS和FREERTOS_OBJS

APP_OBJS:依赖于APP_SRC和APP_ASM

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值