AI智能
改变未来

【freertos】001-linux环境准备

[toc]

前言

主要是freertos。为啥突然要写这玩意的笔记?因为工作需要,所以在空闲时间抽时间写下,这个系列可能随时断更,因为作者在学和在做的主要还是网络协议栈。

特别提示:有条件的同学们建议使用keil来在线仿真freertos,方便学习,可以直观地看到CPU寄存器组信息、实时栈信息、各个任务详细信息、各个任务占用CPU的时间轴图表等等。作者因为想在公司空闲时间和在家里空闲时间都能写下这些笔记,所以就不用keil了,因为版权原因。

资源

  1. 用于FreeRTOS的Posix/Linux模拟器演示
  2. freertos学习官网
  3. 李柱明博客:https://www.cnblogs.com/lizhuming/p/16062433.html

说明

本系列是在 posix/linux 模拟器上跑freertos;所以本次freertos实现的接口层是使用posix标准实现。本节环境搭建对新手不太友好,偏向理论化,但是遇到的问题都比较简单,所以搭建环境不做细致教程。后面代码分析可以比较细化。

注意:

  • 不要与freertos+posix library混淆,因为两者是相反的。
  • freertos+posix library 是freertos本地的一个接口库,是为了让posix标准的原因程序在freertos上跑。
  • 而 posix/linux 接口是为了让freertos在posix操作系统上跑。

大概思路

编译一个可跑的出现主要需要以下文件:

  1. 内核:freertos kernel相关文件;
  2. 接口:portable;
  3. 用户文件:main.c、freertos_config.h文件;
  4. 编译脚本:在linux使用GCC。

提示:

  1. 其实上述资料都可以在freertos官网上,下载源码,在源码中找出。
  2. 其中接口文件只需要找到对应编译器下的即可。
  3. makefile可以自己写。

实战

1. 获取源码

去官网或者github下。

注意:如果去官网下,可能找不到

githubusercontent.com

相关的服务器;那可以在ipaddress.com查找,然后ping一下,能ping通就把这个IP和对应的域名写到本地设备的hosts文件中固定下来。

2. 组建自己的工程

先创建两个文件夹:

  1. kernel:
      参考命令:

      mkdir kernel
    • 存放freertos内核相关文件,包括内核源码、接口文件等。
  2. user:
      参考命令:

      mkdir user
    • 存放用户文件。

创建好文件夹后,拉取相关文件:

  1. kernel:
      把内核的头文件全部拉取:FreeRTOS/Source/include
    • 把内核中源文件全部拉取(这部分可以按需拉取):FreeRTOS/Source/*.c
    • 拉取对应接口文件和内存管理文件到kernel/portable下:GCC的Posix标准接口:FreeRTOS/Source/portable/ThirdParty/GCC/Posix/
    • FreeRTOS/Source/portable/MemMang/
  2. user:
      创建main.c;(记得写上基本内容、可参考freertos提供的demo中的main.c)
    • 拷贝
      FreeRTOS/Demo/POSIX_GCC

      下的FreeRTOSConfig.h

准备好相关文件后,准备编译脚本。编译脚本的实现有很多种,按自己习惯实现。在编译过程中遇到问题,按提示解决即可。

最终工程大致布局如下:

3. 编译&运行

编译成功

运行:

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 【freertos】001-linux环境准备