FreeRTOS相關教程


 首先介紹選擇FreeRTOS的原因和入門,然后介紹如何配置FreeRTOS、內存、任務、隊列、信號量、中斷、調度、SysTick、調試等等。

1. FreeRTOS目錄組成

FreeRTOS系列第1篇---為什么選擇FreeRTOS?

FreeRTOS系列第2篇---FreeRTOS入門指南

2. FreeRTOS組件分析

2.1 通用配置

FreeRTOS系列第3篇---FreeRTOS移植指南

FreeRTOS系列第4篇---FreeRTOS編碼標准及風格指南

FreeRTOS系列第5篇---FreeRTOS在Cortex-M3上的移植

FreeRTOS系列第6篇---FreeRTOS內核配置說明

FreeRTOS系列第7篇---Cortex-M內核使用FreeRTOS特別注意事項

FreeRTOS高級篇1---FreeRTOS列表和列表項

2.2 內存管理

 FreeRTOS提供了5中內存管理方案:

  • 都有哪5中內存方案,他們之間的優劣分別是?
  • 這5種內存方案的使用場景分別是?
  • 內存管理接口?效率?

參考文檔:

FreeRTOS系列第8篇---FreeRTOS內存管理

FreeRTOS高級篇7---FreeRTOS內存管理分析

2.3 任務創建、刪除、控制、通知

參考文檔:

FreeRTOS系列第9篇---FreeRTOS任務概述

FreeRTOS系列第10篇---FreeRTOS任務創建和刪除

FreeRTOS系列第11篇---FreeRTOS任務控制

FreeRTOS系列第12篇---FreeRTOS任務應用函數

FreeRTOS系列第14篇---FreeRTOS任務通知

FreeRTOS系列第15篇---使用任務通知實現命令行解釋器

FreeRTOS高級篇2---FreeRTOS任務創建分析

FreeRTOS高級篇3---FreeRTOS調度器啟動過程分析

FreeRTOS高級篇4---FreeRTOS任務切換分析

FreeRTOS高級篇8---FreeRTOS任務通知分析

FreeRTOS高級篇9---FreeRTOS系統延時分析

FreeRTOS高級篇10---系統節拍時鍾分析

FreeRTOS高級篇11---空閑任務分析

2.4 隊列

參考文檔:

FreeRTOS系列第17篇---FreeRTOS隊列
FreeRTOS系列第18篇---FreeRTOS隊列API函數

FreeRTOS高級篇5---FreeRTOS隊列分析

2.5 信號量

參考文檔:

FreeRTOS系列第19篇---FreeRTOS信號量

FreeRTOS系列第20篇---FreeRTOS信號量API函數

FreeRTOS高級篇6---FreeRTOS信號量分析

2.6 內核控制:中斷、調度器、上下文切換、系統Tick

參考文檔:

FreeRTOS系列第13篇---FreeRTOS內核控制 

2.7 可視化跟蹤調試

FreeRTOS系列第16篇---可視化追蹤調試 

3. 鏡像優化

3.1 優化axf文件大小

功能開關FreeRTOSConfig.h

關閉FPU、TrustZone、

尺寸減小

gcc優化

3.2 檢查axf文件大小

分析大小:riscv64-unknown-elf-size FreeRTOSDemo_ns.axf 。 

   text       data        bss        dec        hex    filename
  37312      17032      11252      65596      1003c    FreeRTOSDemo_ns.axf

詳細查看函數和數據大小:arm-none-eabi-readelf -s FreeRTOSDemo_ns.axf  | grep FUNC | sort -n -r -k 3。

riscv64-unknown-elf-readelf -s FreeRTOSDemo_ns.axf | grep OBJECT |  sort -n -r -k 3

   665: 20008000 16384 OBJECT  LOCAL  DEFAULT    2 ucHeap
    97: 2000c2a0   512 OBJECT  LOCAL  DEFAULT    3 uxIdleTaskStack.10409
   261: 2000cb00   512 OBJECT  LOCAL  DEFAULT    3 xSecureCallingTaskStack.5
   249: 2000c8e0   512 OBJECT  LOCAL  DEFAULT    3 xRWAccessTaskStack.5463
   248: 2000c6e0   512 OBJECT  LOCAL  DEFAULT    3 xROAccessTaskStack.5462
   101: 2000c4a0   512 OBJECT  LOCAL  DEFAULT    3 uxTimerTaskStack.10416
   735: 00010000   304 OBJECT  GLOBAL DEFAULT    1 __Vectors
  1166: 00010000   304 OBJECT  GLOBAL DEFAULT    1 g_pfnVectors
...

riscv64-unknown-elf-readelf -s FreeRTOSDemo_ns.axf | grep FUNC |  sort -n -r -k 3
  1223: 00010e85   608 FUNC    GLOBAL DEFAULT    1 _vfprintf_r
  1163: 00010e85   608 FUNC    GLOBAL DEFAULT    1 _vfiprintf_r
  1203: 000110e5   588 FUNC    GLOBAL DEFAULT    1 _printf_i
  1231: 00012c91   532 FUNC    GLOBAL DEFAULT    4 vPortStoreTaskMPUSettings
   832: 00010c85   512 FUNC    GLOBAL DEFAULT    1 _svfprintf_r
  1121: 00010c85   512 FUNC    GLOBAL DEFAULT    1 _svfiprintf_r
...

 

4. 參考文檔

Cortex M33處理器下移植FreeRTOS V10.2.0的操作記錄

FreeRTOS基礎篇

FreeRTOS學習及移植筆記之一:開始FreeRTOS之旅

FreeRTOS學習及移植筆記之二:在IAR和STM32F103VET上移植FreeRTOS

RTOS Demo for RISC-V QEMU sifive_e Model

ARM Cortex-M33 (ARMv8-M) Keil Simulator Demo Using Keil uVision IDE》:使用uVision IDE模擬調試M33+FreeRTOS
ARM Cortex-M33 (ARMv8-M) Demo for NXP LPCXpresso55S69 Development Board Using MCUXpresso IDE》: 使用NXP LPCXpresso55S69 Development Board,在MCUXpressoIDE環境中調試。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM