天天看點

【freertos】001-linux環境準備

目錄

  • 前言
  • 資源
  • 說明
  • 大概思路
  • 實戰
    • 1. 擷取源碼
    • 2. 組建自己的工程
    • 3. 編譯&運作

前言

主要是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

準備好相關檔案後,準備編譯腳本。

編譯腳本的實作有很多種,按自己習慣實作。

在編譯過程中遇到問題,按提示解決即可。

最終工程大緻布局如下:

【freertos】001-linux環境準備

3. 編譯&運作

編譯成功

【freertos】001-linux環境準備

運作:

【freertos】001-linux環境準備