ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

【freertos】001-linux环境准备

2022-03-27 12:33:43  阅读:236  来源: 互联网

标签:文件 FreeRTOS freertos 接口 编译 001 posix linux


目录

前言

主要是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. 编译&运行

编译成功

运行:

标签:文件,FreeRTOS,freertos,接口,编译,001,posix,linux
来源: https://www.cnblogs.com/lizhuming/p/16062433.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有