那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何將FreeRTOS移植到STM32單片機上

汽車電子技術 ? 來源:物聯網知識 ? 作者: 跋扈洋 ? 2023-01-20 17:36 ? 次閱讀

引言

本文詳細介紹如何移植FreeRTOSSTM32單片機上。移植操作系統嵌入式開發的入門基礎,單片機和嵌入式在物理上其實是一摸一樣的,區別就是軟件上嵌入式跑了操作系統而單片機沒有。本文選用市場上最常見的STM32和FreeRTOS,為大家介紹如何移植操作系統到MCU上。

介紹

什么是 RTOS?

實時操作系統(Real-time operating system, RTOS),它會按照排序運行、管理系統資源,并為開發應用程序提供一致的基礎。

實時操作系統與一般的操作系統相比,最大的特色就是“實時性”,如果有一個任務需要執行,實時操作系統會馬上(在較短時間內)執行該任務,不會有較長的延時。這種特性保證了各個任務的及時執行。

只有“實時性”才是RTOS的最大特征,其它的都不算是。

實時運算是計算機科學中對受到“實時約束”的計算機硬件和計算機軟件系統的研究,實時約束像是從事件發生到系統回應之間的最長時間限制。實時程序必須保證在嚴格的時間限制內響應。

實時操作系統中都要包含一個實時任務調度器,這個任務調度器與其它操作系統的最大不同是強調:嚴格按照優先級來分配CPU時間,并且時間片輪轉不是實時調度器的一個必選項。

提出實時操作系統的概念,可以至少解決兩個問題:一個是早期的CPU任務切換的開銷太大,實時調度器可以避免任務頻繁切換導致CPU時間的浪費;另一個是在一些特殊的應用場景中,必須要保證重要的任務優先被執行。

在這樣的背景下,實時操作系統就被設計出來了,典型的實時操作系統有FreeRTOS、VxWorks,RT-ThreaduCOS,QNX,WinCE等。

由于設備性能的發展,原來很多實時性要求高的場景,已經切換到普通的操作系統了。Linux在嵌入式設備上的推廣,使用實時操作系統的很多設備已經改用Linux了,因為硬件性能的提升會讓系統延遲降低到一個用戶可以接受的程度。

但在某些特定的場景下,比如工業自動化、機器人、航空航天、軍工領域等,仍然對實時操作系統有需求,并且應該會長期存在。

為什么嵌入式設備往往使用RTOS?

由于嵌入式設備對資源,功耗很敏感,所以RTOS也具備可裁剪、低功耗、資源占用率低等特點。相對于通用的分時操作系統,如linux,Windows而言,RTOS更強調實時。

RTOS保證了在規定時間內能夠完成某個任務,如果不能在指定時間完成會造成重大事故,所以必須某些場景必須使用RTOS。

FreeRTOS

FreeRTOS應該算是目前最流行的嵌入式操作系統之一,具體原因當然是因為開源,畢竟產品還是要控制成本的。FreeRTOS 十分的小巧,可以在資源有限的微控制器中運行,我們學習中最常用的STM32F103C8T6跑很多RTOS都可能因為內存受限,但FreeRTOS就不會,完全能滿足我們日常的開發需求。當然了,FreeRTOS 不僅局限于在微控制器中使用。但從文件數量上來看 FreeRTOS 要比UCOSII 和 UCOSIII 小的多。

FreeRTOS最開始網站是全英的,我剛入門的時候因為英語不好,飽受折磨?,F在網站已經能切換中文了,算是方便了后面學習的人。

具體步驟

  1. 首先準備一個基礎項目,我們的點燈或者串口收發這種簡單的程序就行,甚至連點燈都沒有的項目也可以。畢竟操作系統也要依托于一個MCU的項目。
  2. 獲取FreeRTOS系統源碼,兩種方法。
  • 公眾號:物聯網知識,后臺回復:FreeRTOS源碼

  • CSDN資源平臺:

    https://download.csdn.net/download/qq_44629109/87354102

  • 官網下載:https://www.freertos.org/zh-cn-cmn-s/

微信截圖_20230105161930.png

微信截圖_20230105161930.png

  1. 解壓我們下載的文件,我們進入FreeRTOSv202112.00,之后進入FreeRTOS,再后進入吧Source文件。一會我們需要用到的文件主要就在這里。

微信截圖_20230105161930.png

微信截圖_20230105161930.png

  1. 我們在我們準備的項目中創建一個文件夾FreeRTOS,將上面一步的文件中的內容復制到剛創建的FreeRTOS中。

微信截圖_20230105161930.png

  1. 進行剪裁,portable 文件夾,我們只需要留下 keil、MemMang 和 RVDS這三個文件夾,其他的都可以刪除掉。
  2. 向工程分組中添加文件,創建兩個組,分別是FreeRTOS_CORE和FreeRTOS_Portable。

微信截圖_20230105161930.png

將FreeRTOS相關的文件添加進來。

微信截圖_20230105161930.png

port.c 是 RVDS 文件夾下的 ARM_CM3 中的文件,因為 STM32F103 是 Cortex-M3 內核的,因此要選擇 ARM_CM3中的 port.c 文件。heap_4.c 是 MemMang 文件夾中的。

  1. 添加頭文件,我們將FreeRTOS相關的頭文件添加進項目。

微信截圖_20230105161930.png

  1. 頭文件路徑添加完成以后編譯一下,看看有沒有什么錯誤,結果會發現提示打不開“FreeRTOSConfig.h”這個文件,因為我們還沒添加這個文件。這個文件最好是自己編寫,當然官方也給我提供了一些例程。打開我們最開始下載的FreeRTOS源碼,里面的Deme文件夾中有一個CORTEX_STM32F103_Keil文件夾,我們可以看到,里面是有這個.h文件的。

微信截圖_20230105161930.png

我們把這個文件復制粘貼放進我們的項目中存放頭文件的文件夾即可。FreeRTOSConfig.h是剪裁RTOS的關鍵,后面的學習中,還會涉及到,讀者也可以在網上查一查相關內容。

  1. 我們編譯一下我們的項目,看看是否出現錯誤,如果出現錯誤就按照錯誤改正就好了,一般情況下不會出現什么錯誤,如果有錯,絕大多數都是因為FreeRTOSConfig.h的配置問題,因為問題種類多樣,這里就不一一列舉,大家可以在網上搜索,我也會總結移植常遇到的問題和解決方法,后面再寫一篇推文給大家分享。
  2. 移植成功,大家可以動手試試了。

微信截圖_20230105161930.png

總結

當裸機開發的實時性差,資源浪費和編寫困難等問題逐漸暴露出來時,RTOS就是我們首選的解決方式。我們也就從單片機工程師轉變成嵌入式工程師了。本文詳細介紹了如何移植FreeRTOS到STM32上,這是嵌入式入門的關鍵,后面會繼續分享更多嵌入式相關內容。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6043

    文章

    44619

    瀏覽量

    638469
  • 嵌入式
    +關注

    關注

    5092

    文章

    19177

    瀏覽量

    307632
  • FreeRTOS
    +關注

    關注

    12

    文章

    484

    瀏覽量

    62391
收藏 人收藏

    評論

    相關推薦

    如何將freemodbus移植stm32平臺

    modbus是一個非常好的串口協議(當然也能用在網口上),它簡潔、規范、強大。可以滿足大部分的工業、嵌入式需求。這里詳細說下如何將freemodbus移植stm32平臺。我之前下載的
    發表于 08-16 06:59

    FreeRTOS系統在STM32系列單片機移植

    STM32F103C8T6及其系列的FreeRTOS移植本文所提到的所有軟件、驅動、代碼百度參考自正點原子手冊。1.前言?嵌入式系統是實時性強、宏觀上多線程運行、且在單片機上運行的操作
    發表于 08-17 09:15

    FreeRTOS移植STM32F103中的步驟

    目錄一、FreeRTOS的介紹二、FreeRTOS移植STM32F103中的步驟1.前期準備
    發表于 08-24 07:26

    FreeRTOS系統在STM32單片機上是怎樣去移植

    FreeRTOS的主要特性有哪些呢?FreeRTOS系統在STM32單片機上是怎樣去移植的?
    發表于 11-18 06:54

    STM32不同型號單片機keil工程移植方法

    STM32系列單片機如果庫函數開發的話,那么不同型號單片機的工程是可以直接移植的。這樣的話如果項目中更換了芯片,工程就可以直接移植過去,不用
    發表于 11-29 06:41

    如何將FreeRTOS實時操作系統移植STM32單片機

    前言本文主要講解如何將FreeRTOS實時操作系統移植STM32單片機中,在本文之前已經基于M
    發表于 01-11 08:15

    如何將FreeRTOS移植stm32上呢

    目錄一、FreeRTOS介紹1、初識FreeRTOS,什么是 FreeRTOS2、FreeRTOS的特點二、FreeRTOS
    發表于 02-10 06:01

    如何在STM32單片機上移植FreeRTOS

    首先在網上看到大部分移植FreeRTOS 都是選擇修改他的啟動文件,我個人感覺這樣不是很好,畢竟是匯編,當你采用不同的芯片型號時,又要修改不同的xx.S文件,所以我選擇修改FreeRTOSconfig.h文件。
    發表于 12-28 15:31 ?5412次閱讀
    如何在<b class='flag-5'>STM32</b><b class='flag-5'>單片機上</b><b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>

    如何將FreeRTOS移植STM32F103上詳細步驟和注意事項詳細說明

    由于之前聽過太多人抱怨移植FreeRTOSSTM32有各種各樣的問題,小燈經過一年多對FreeRTOS的研究并在公司產品中應用, 多少有些
    發表于 03-09 16:59 ?20次下載
    <b class='flag-5'>如何將</b><b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32</b>F103上詳細步驟和注意事項詳細說明

    STM32不同型號單片機keil工程移植說明

    STM32系列單片機如果庫函數開發的話,那么不同型號單片機的工程是可以直接移植的。這樣的話如果項目中更換了芯片,工程就可以直接移植過去,不用
    發表于 11-19 11:36 ?14次下載
    <b class='flag-5'>STM32</b>不同型號<b class='flag-5'>單片機</b>keil工程<b class='flag-5'>移植</b>說明

    轉發:stm32 移植 freertos

    轉發:stm32 移植 freertos
    發表于 11-20 12:36 ?14次下載
    轉發:<b class='flag-5'>stm32</b> <b class='flag-5'>移植</b> <b class='flag-5'>freertos</b>

    從01學習FreeRTOSFreeRTOS 內核應用開發:(一)移植FreeRTOSSTM32第一部分

    從01學習FreeRTOSFreeRTOS 內核應用開發:(一)移植FreeRTOS
    發表于 12-04 12:51 ?22次下載
    從0<b class='flag-5'>到</b>1學習<b class='flag-5'>FreeRTOS</b>:<b class='flag-5'>FreeRTOS</b> 內核應用開發:(一)<b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b><b class='flag-5'>到</b><b class='flag-5'>STM32</b>第一部分

    FreeRTOS移植—基于STM32

    FreeRTOS移植—基于STM32
    發表于 12-04 12:51 ?18次下載
    <b class='flag-5'>FreeRTOS</b><b class='flag-5'>移植</b>—基于<b class='flag-5'>STM32</b>

    STM32F103單片機上移植FreeRTOS

    移植 FreeRTOS 以正點原子的跑馬燈工程為基礎,在上面擴展。在基礎工程中新建一個名為 FreeRTOS 的文件夾: 創建 FreeRTOS 文件夾以后就可以
    的頭像 發表于 09-28 14:39 ?1777次閱讀
    在<b class='flag-5'>STM32</b>F103<b class='flag-5'>單片機上</b><b class='flag-5'>移植</b><b class='flag-5'>FreeRTOS</b>

    如何將FreeMODBUS協議棧移植AT32F43x單片機方法

    電子發燒友網站提供《如何將FreeMODBUS協議棧移植AT32F43x單片機方法.pdf》資料免費下載
    發表于 12-18 11:15 ?0次下載
    <b class='flag-5'>如何將</b>FreeMODBUS協議棧<b class='flag-5'>移植</b><b class='flag-5'>到</b>AT32F43x<b class='flag-5'>單片機</b>方法
    大发888娱乐场下载iypu rd| 昭平县| 百家乐官网分析网| 百家乐赌场娱乐城| 卡卡湾网上娱乐| 百家乐官网必胜法技巧| 澳门百家乐单注下| 百家乐官网投注系统| 百家乐赌场娱乐城| 百家乐官网赌牌技巧| 真人百家乐娱乐好玩| 新葡京网上娱乐| 风水24山那个排第一| bet365体育开户| 24山 分金 水口 论 吉凶| 德州扑克锦标赛| 发中发百家乐官网的玩法技巧和规则 | 二八杠 | 实战百家乐官网十大取胜原因百分百战胜百家乐官网不买币不吹牛只你能做到按我说的.百家乐官网基本规则 | 老k百家乐官网的玩法技巧和规则 KTV百家乐官网的玩法技巧和规则 | 大发888客户端| 鑫鼎百家乐官网娱乐城| 威尼斯人娱乐天上人间| 百家乐官网系列抢庄龙| 水果机定位器| 先锋百家乐官网的玩法技巧和规则| 太阳城巧克力社区怎么样| 百家乐官网五湖四海娱乐城| 威尼斯人娱乐城信誉最好| 闲和庄百家乐官网娱乐网| 大发888线上| 金城百家乐玩法| 大足县| 游戏百家乐押金| 百家乐官网推广| 赌神网百家乐2| 百家乐官网官网7scs| 棋牌室标语| 百家乐庄闲的概率| 百家乐官网路单纸下载| 百家乐技巧心|