使用makefile编译freeRTOS

2023-05-16

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用makefile编译freeRTOS 的相关文章

  • 在 makefile 中,当我在 bash 函数内部使用 if 语句时,它会抛出错误

    在 makefile 中 当我在 bash 函数内部使用 if 语句时 它会抛出错误 test foo if a a then echo 1 fi foo hello ERROR bin sh 1 未找到 或与一个 test foo if
  • Makefile 和通配符

    好吧 这是我当前的 makefile 设置 有一些文件名为public01 c public02 c等等 我正在尝试使用以下方法为每个人制作目标文件public o带有通配符的标签 public o public c hashtable h
  • bash 函数保留制表符补全

    我把函数 make color make 1 ccze A in bashrc获得彩色的 make 输出 他的作品很好 但是make用于选择目标的制表符补全功能丢失 有什么方法可以保留函数中命令的制表符完成 或者我可以做其他事情来实现制表符
  • 我怎样才能强制Make一直执行一个菜谱

    当前的 Makefile 有这样的内容 target1 lib1 a lib2 a target2 lib1 a lib3 a target3 lib3 a lib1 a MAKE C sub dir all 我想更改此 Makefile
  • 如何调用位于其他目录的Makefile?

    我正在尝试这样做 我想打电话给 make Makefile存在于其他目录中 abc可以使用位于不同目录中的 shell 脚本的路径 我该怎么做呢 由于 shell 脚本不允许我cd进入Makefile目录并执行make 我怎样才能编写she
  • 构建 makefile 依赖/继承树

    如果我解释得不好或者问了一些明显的问题 我很抱歉 但我是 Linux 内核的新手 而且有点深入 我们有一个嵌入式 Linux 系统 它附带一个 文档非常糟糕的 SDK 其中包含数百个文件夹stuff 大多数文件夹包含rules make m
  • 用于发布和调试目标的 Makefile

    我正在尝试构建一个 Makefile 它可以通过指定目标而不是变量 例如make debug 1 不太好 我这里有一个精简的简化示例 它模拟了我想要实现的目标 ifdef debug BINARY my binary debug MODUL
  • 什么是“制定目标”?

    为什么我需要制作一个make target在能够构建我的源代码之前 更具体地说 什么是制定目标 http publib boulder ibm com infocenter rsdvhelp v6r0m1 index jsp topic o
  • 如何调用使用 Define 创建的 GNU make 宏?

    在我的 Makefile 中调用 GREP 的两种方式有什么区别吗 我有什么理由应该使用其中之一 两者似乎产生相同的结果 define GREP word 3 shell echo define FOO 0xfff00100 endef a
  • 将环境变量从 Makefile 导出到用户态环境

    我正在研究如何从 Makefile 环境变量导出以在用户环境中公开 因此应该可以从用户 shell 访问从 Makefile 导出这些变量 我努力了make s export https www gnu org software make
  • MinGW Make 抛出“系统找不到指定的路径。”错误

    我正在尝试在 Windows 7 上使用 cmake 生成一个 c 项目 在实际创建项目之前 cmake 会对您的工具链进行快速测试 我正在使用 MinGW 这就是我的问题所在 Cmake 触发 make 构建 最终失败并返回 系统找不到指
  • 具有两个同名目标的 Makefile

    我有一个包含包含语句的 makefile 我无法控制包含的 makefile 的内容 不过 我希望能够在 某些 不是全部 目标之前添加一些预处理步骤 考虑以下示例 install echo install target include ot
  • Makefile 和 .Mak 文件 + CodeBlocks 和 VStudio

    我对整个 makefile 概念有点陌生 所以我对此有一些疑问 我正在 Linux 中使用 CodeBlocks 创建一个项目 我使用一个名为 cbp2mak 的工具从 CodeBlocks 项目创建一个 make 文件 如果有人知道更好的
  • 在 Mac 上更新 Make 版本

    我正在尝试更新 mac 上的 make 版本 但遇到了问题 最小项目依赖项是 4 1 但我的版本似乎是 3 81 我已将 Xcode 更新到最新版本并安装了命令行工具 但它似乎仍然是旧版本 有谁遇到过这个问题或知道解决方法吗 这是我所做的
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何通过仅调用一个命令来构建多个目标?

    我得到了一个像下面这样的 Makefile PHONY all all aaa 2 bbb 2 aaa 2 aaa 1 common 1 create 2 bbb 2 bbb 1 common 1 create 2 程序 create 2
  • Makefile:没有规则来制作目标

    我正在关注本指南makefile http www cs colby edu maxwell courses tutorials maketutor 但我根本不理解最后一个例子 并且我无法让我的 makefile 工作 因为我收到了错误ma
  • makefile 中的预构建步骤

    如何运行必须在所有其他 makefile 命令之前执行的脚本 如果没有要构建的内容 则不执行脚本会很好 但不是强制性的 我搜索过 SO 和 Google 但找不到任何东西 我有这个解决方法 myscript bat output is em
  • 是否可以在 Mac OS X 上构建 FreeGLUT?

    我正在做一些关于 OpenGL 的教程 http www arcsynthesis org gltut Basics Tutorial 2001 html那个使用FreeGLUT http freeglut sourceforge net

随机推荐

  • 【Ubuntu-Tensorflow】GPU设置及显存资源分配

    最近笔者在做GPU显存资源分配的研究 xff0c 发现在tf中gpu一些实用的方法和接口 xff0c 共享出来 xff0c 供大家参考学习 xff0c 如有问题 xff0c 欢迎留言讨论 1 运行程序时 xff0c 控制台设置GPU运行参数
  • 为了解决jetson tx2的内存不足。挂载sd卡,并且使用docker在sd中安装jetPack的镜像。

    1 xff0c 使用nvidia官方的sdkmanager工具给jetson tx2刷机 xff0c 并且将sd卡挂载在系统目录下 参考ubuntu18 04主机 43 Jetson TX2 NX刷机 lgh15897723511的博客 C
  • 链表反转 - 链表排序 算法

    链表反转 xff1a 想象有1个新链表 xff0c 每次从旧链表取出一个元素 xff0c 然后插入到新链表的头部 链表排序 xff1a 先将链表拆分为2个子链表 使用快慢指针 xff0c 快指针每次走2步 xff0c 当快指针走到尾部时 x
  • 如何在Ubuntu服务器上安装桌面环境(GUI)

    本文转载至网络 原作者Chris Patrick Carias 你想在你的 Ubuntu 服务器上安装 GUI 吗 xff1f 大部分情况下你是可以安装的 xff0c 在本教程中我会详细介绍安装的步骤 在正式开始之前 xff0c 我来告诉你
  • 平衡小车PID学习

    离散式PID xff1a 位置环 xff1a 入口参数 xff1a 位置测量值 xff0c 编码器的位置测量值 系统的参数调定要求 xff1a 目标 xff1a 准确性 xff0c 稳定性 xff0c 快速性 指标 xff1a 最大超调量
  • arm64汇编篇-04堆与栈的关系

    栈 xff1a 栈是一种具有特殊的访问方式的存储空间 xff08 后进先出 xff0c Last In Out Firt xff0c LIFO xff09 堆 xff1a 堆用于动态分配和释放程序所使用的对象 xff08 这边不详细介绍堆
  • 关于STM32平衡小车的几个关键疑问

    引用文章 一 关于姿态融合 首先需要提一点关键的 xff0c 如果是采用卡尔曼滤波或者互补滤波 xff0c 尽可能把采样时间调小 xff0c 这样可以增加滤波的效果 建议采样时间不要高于10ms xff0c 起初我在测试的时候采样时间设置为
  • STM32F103C8T6系统板

    目录 组成1 电源部分2 复位3 晶振4 电源部分电源电路 防反接电源电路 电源芯片输入滤波电容的作用 xff1a 输出滤波电容的作用 xff1a 大电容和小电容并联的作用 xff1a 电源电路 MCU引脚部分等VCC3 3与VCC3 3M
  • PyTorch实现 | 车牌OCR识别,《PyTorch深度学习之目标检测》

    注 xff1a 本文选自中国水利水电出版社出版 PyTorch深度学习之目标检测 一书 xff0c 有改动 福利 xff01 免费寄送图书 xff01 xff01 公众号 机器学习与AI生成创作 后台回复 xff1a 168 即可参与免费寄
  • putty不能连接vultr服务器,提示network error:connection refused怎么解决

    部署服务器时第四个选项的第1个和第4个选中重新部署 如下图
  • 推荐一些IEDA,Eclipse十分好用的插件

    推荐一些IEDA xff0c Eclipse十分好用的插件 一 IDEA插件1 常用插件 xff1a 2 代码质量插件 xff1a 3 其他插件 xff1a 二 Eclipse 插件 xff1a 一 IDEA插件 1 常用插件 xff1a
  • VSCode git 配置心得

    一 Git是一个分布式的代码版本管理工具 类似的常用工具还有SVN CVS 最大的特点也是优点在于提供分布式的代码管理 1 分支代码只有一份 xff01 使用过svn的童鞋想必都知道 xff0c 当我们要开发一个新功能或者增加一个新版本或者
  • AD、PADS、Cadence哪个最好用?

    用哪个工具不是你说了算 案例1 xff1a 老板 xff0c Allegro我不会用啊 xff0c 我只会用Power PCB 好 xff0c 你去找财务结算工资吧 xff01 案例2 xff1a 小伙子 xff0c 你会用什么工具啊 xf
  • git 使用规则

    Linus为Linux Kernel Project发起的版本控制项目 HEAD代表当前最新状态 tag为某个状态的标签 SHA1为每个提交日志的唯一标识 install apt get install git core git clone
  • 两分钟教你学会用示波器测量串口波特率

    首先接好线 xff0c 黑表笔接地线 xff0c 灰表笔接串口TX数据线 接着打开示波器 xff0c 按下AUTO xff0c 自动测量波形 接着按下AUTO上面的STOP键 xff0c 冻结画面 按下CURSORS xff0c 打开光标模
  • Visual Studio 与Visual C++ 有什么区别

    Visual C 43 43 是 Visual Studio的一个部分 xff0c 此外还有 Visual Basic xff08 VB xff09 Visual C 等 VC 43 43 6 0 是VS6的 VC 43 43 2003 是
  • STM32Cube的串口设置(一)即学即用

    串口系列 STM32Cube的串口设置 xff08 一 xff09 即学即用 STM32Cube的串口设置 xff08 二 xff09 一个串口接收另一个串口发送 串口实战 STM32Cube的串口实战 xff08 一 xff09 GPS
  • C++中构造函数后面接单冒号是什么意思?

    构造函数后 xff0c 接单冒号表示初始化列表 具体形式为 对于class TEST xff0c 存在成员变量int a b c 那么 TEST int x int y a x b y c 0 的效果就是用括号内的值 xff0c 来初始化成
  • 训练神经网络中最基本的三个概念:Epoch, Batch, Iteration

    转载地址 xff1a https zhuanlan zhihu com p 29409502 原作者 xff1a Michael Yuan 作者主页 xff1a https www zhihu com people mikeyuan 今天让
  • 使用makefile编译freeRTOS

    freeRTOS的文件结构 FreeRTOS LabsFreeRTOS Plus 包含freeRTOS 43 的组件和demo项目FreeRTOS 包含内核和demo项目 Source目录 xff1a 三个必须文件list c queue