当前位置: 首页 > news >正文

RTOS基础(TODO)

(TODO)

读完FreeRTOS内核源码,需要多久?

有哪些情况下是RTOS满足不了需求,必须得上嵌入式Linux系统的?

============================

如何用树莓派 Pico 学习 RTOS?

树莓派 Pico 使用 RP2040 微控制器,基于 ARM Cortex-M0+ 内核,支持各种 RTOS(实时操作系统)。如果你想学习 RTOS,Pico 是一个很好的平台,以下是系统学习路径:


1. 选择合适的 RTOS

常见的 RTOS 选项:

  • FreeRTOS(最流行,学习资料多)
  • RT-Thread(国产 RTOS,适合 IoT)
  • Zephyr(适用于物联网和工业)
  • ChibiOS(轻量级,适合小型 MCU)

推荐FreeRTOS 最适合作为入门 RTOS,官方支持好,教程多,使用广泛。


2. 准备开发环境

硬件

  • Raspberry Pi Pico
  • Micro-USB 线
  • LED、按钮、传感器(扩展实验)

软件

  • CMake + Ninja + ARM GCC(官方推荐)
  • VS Code + Pico SDK(推荐)
  • 或者 Keil / IAR(传统嵌入式开发工具)

3. 安装 FreeRTOS 并配置开发环境

(1) 下载 FreeRTOS

git clone https://github.com/FreeRTOS/FreeRTOS-Kernel.git

或者使用官方仓库:

git clone --recurse-submodules https://github.com/FreeRTOS/FreeRTOS.git

(2) 安装 Raspberry Pi Pico SDK

git clone -b master https://github.com/raspberrypi/pico-sdk.git
cd pico-sdk
git submodule update --init
export PICO_SDK_PATH=$PWD

(3) 配置 FreeRTOS 任务调度器

FreeRTOSConfig.h 中修改:

#define configUSE_PREEMPTION                    1
#define configUSE_TIME_SLICING                  1
#define configCPU_CLOCK_HZ                      (125000000) // RP2040 125MHz
#define configTICK_RATE_HZ                      (1000)
#define configMAX_PRIORITIES                    (5)
#define configMINIMAL_STACK_SIZE                (configSTACK_DEPTH_TYPE)128
#define configTOTAL_HEAP_SIZE                   ((size_t)(16 * 1024))

4. 编写一个 FreeRTOS 任务

创建 main.c,写入以下代码:

#include <FreeRTOS.h>
#include <task.h>
#include <stdio.h>
#include "pico/stdlib.h"void Task1(void *pvParameters) {while (1) {printf("Task 1 running...\n");vTaskDelay(pdMS_TO_TICKS(1000));}
}void Task2(void *pvParameters) {while (1) {printf("Task 2 running...\n");vTaskDelay(pdMS_TO_TICKS(500));}
}int main() {stdio_init_all();xTaskCreate(Task1, "Task 1", 256, NULL, 1, NULL);xTaskCreate(Task2, "Task 2", 256, NULL, 1, NULL);vTaskStartScheduler();while (1);
}

说明

  • Task1 每 1000ms 运行一次
  • Task2 每 500ms 运行一次
  • vTaskStartScheduler() 启动任务调度器

5. 编译 & 运行

(1) 编译代码

mkdir build
cd build
cmake ..
make -j4

(2) 烧录到 Pico

  • 进入 BOOTSEL 模式(按住 BOOTSEL 按钮,插入 USB)
  • 拷贝生成的 .uf2 文件到 Pico

(3) 观察输出

使用 minicomscreen 读取串口输出:

screen /dev/ttyUSB0 115200

6. 进阶学习

任务同步 & 互斥

  • 队列(Queue): 任务间通信
  • 信号量(Semaphore):资源管理
  • 互斥量(Mutex):防止数据竞争

中断处理

  • 使用 ISR-safe API,如 xQueueSendFromISR()

低功耗管理

  • Tickless Idle 模式降低功耗

移植 & 设备驱动

  • 在 FreeRTOS 上移植 I2C/SPI/UART 设备驱动

联网 & 远程控制

  • 结合 LWIP(轻量级 TCP/IP) 使 Pico 具备联网功能

7. 推荐学习资源

📚 书籍

  • 《Mastering FreeRTOS》
  • 《嵌入式实时操作系统开发》
  • 《实时操作系统(RTOS)基础》

🎥 视频

  • YouTube - FreeRTOS for Beginners

📂 官方文档

  • FreeRTOS 官方文档
  • Pico SDK 文档

总结

🔹 用 Raspberry Pi Pico 学习 FreeRTOS 是个很好的选择! 🔹 从简单的任务调度开始,再深入学习任务间通信、中断管理、功耗优化 🔹 Pico 的双核支持,适合研究 FreeRTOS SMP(多核调度)

你对哪个方面最感兴趣?我可以帮你定制更详细的学习计划!🚀

http://www.lryc.cn/news/532762.html

相关文章:

  • 八、Spring Boot 日志详解
  • Java实战经验分享
  • 前端控制器模式
  • Linux之安装docker
  • BUUCTF_XSS-Lab
  • springBoot使用
  • DS图(中)(19)
  • Vue Dom截图插件,截图转Base64 html2canvas
  • Unity3D仿星露谷物语开发小结1
  • graylog初体验
  • 15.PPT:文静-云计算行业发展【29】
  • 高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案
  • MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致
  • 一文读懂:TCP网络拥塞的应对策略与方案
  • 深度整理总结MySQL——子查询的工作原理
  • 20240824 美团 笔试
  • Windows图形界面(GUI)-QT-C/C++ - QT 文本编辑控件详解
  • IDEA中Resolving Maven dependencies卡着不动解决方案
  • go数据结构学习笔记
  • 【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)
  • Google地图瓦片爬虫——进阶版
  • 免费windows pdf编辑工具
  • 解锁C#数据校验:从基础到实战的进阶之路
  • Redis的通用命令
  • 设计模式六大原则和单例模式
  • Redis性能优化
  • SAM 大模型杂谈
  • openGauss 3.0 数据库在线实训课程2:学习客户端工具gsql的使用
  • B站自研的第二代视频连麦系统(上)
  • 【远程控制】安装虚拟显示器