当前位置: 首页 > 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(多核调度)

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

相关文章:

RTOS基础(TODO)

&#xff08;TODO&#xff09; 读完FreeRTOS内核源码&#xff0c;需要多久&#xff1f; 有哪些情况下是RTOS满足不了需求&#xff0c;必须得上嵌入式Linux系统的&#xff1f; 如何用树莓派 Pico 学习 RTOS&#xff1f; 树莓派 Pico 使用 RP2040 微控制器&#xff0c;基于 AR…...

八、Spring Boot 日志详解

目录 一、日志的用途 二、日志使用 2.1 打印日志 2.1.1 在程序中获取日志对象 2.1.2 使用日志对象打印日志 2.2、日志框架介绍 2.2.1 门面模式(外观模式) 2.2.2 门面模式的实现 2.2.3 SLF4J 框架介绍 2.3 日志格式的说明 2.4 日志级别 2.4.1 日志级别的分类 2.4.2…...

Java实战经验分享

1. 项目优化与性能提升 面试问题&#xff1a; 聊聊你印象最深刻的项目&#xff0c;或者做了哪些优化 你在项目中如何解决缓存穿透问题&#xff1f; 缓存穿透是我们做缓存优化时最常遇到的问题&#xff0c;特别是当查询的对象在数据库中不存在时&#xff0c;缓存层和数据库都会…...

前端控制器模式

前端控制器模式 概述 前端控制器模式&#xff08;Front Controller Pattern&#xff09;是一种设计模式&#xff0c;它将应用程序中的所有用户请求统一交由一个控制器处理。这种模式在MVC&#xff08;Model-View-Controller&#xff09;架构中尤为常见&#xff0c;它能够简化…...

Linux之安装docker

一、检查版本和内核是否合格 Docker支持64位版本的CentOS 7和CentOS 8及更高版本&#xff0c;它要求Linux内核版本不低于3.10。 检查版本 cat /etc/redhat-release检查内核 uname -r二、Docker的安装 1、自动安装 Docker官方和国内daocloud都提供了一键安装的脚本&#x…...

BUUCTF_XSS-Lab

xss XSS&#xff08;Cross - Site Scripting&#xff09;即跨站脚本攻击&#xff0c;是一种常见的 Web 安全漏洞。攻击者通过在目标网站注入恶意脚本&#xff08;通常是 JavaScript&#xff09;&#xff0c;当其他用户访问该网站时&#xff0c;这些恶意脚本会在用户的浏览器中执…...

springBoot使用

1.什么是SpringBoot SpringBoot是由Pivotal团队提供的一套开源框架&#xff0c;可以简化spring应用的创建及部署。SpringBoot是伴随Spring4.0的时候发布的一个框架。SpringBoot用来简化Spring应用的开发&#xff0c;约定大于配置&#xff0c;去繁从简。 从本质上来说&#xff…...

DS图(中)(19)

文章目录 前言一、图的遍历广度优先遍历深度优先遍历 二、最小生成树Kruskal算法Prim算法两种方法对比 总结 前言 承上启下&#xff0c;我们来学习下图的中篇&#xff01;&#xff01;&#xff01; 一、图的遍历 图的遍历指的是遍历图中的顶点&#xff0c;主要有 广度优先遍历 …...

Vue Dom截图插件,截图转Base64 html2canvas

安装插件 npm install html2canvas --save插件使用 <template><div style"padding: 10px;"><div ref"imageTofile" class"box">发生什么事了</div><button click"toImage" style"margin: 10px;&quo…...

Unity3D仿星露谷物语开发小结1

1、Cinemachine的作用及使用方法 &#xff08;1&#xff09;作用 控制Camera的模块&#xff0c;实现摄像机的复杂控制&#xff0c;比如角色的跟随&#xff0c;限制Camera的区域 &#xff08;2&#xff09;使用方法 在已有Main Camera的情况下&#xff0c; 通过【GameObject -&…...

graylog初体验

最近graylog比较火&#xff0c;部署了一个来测试下&#xff0c;看下后续能不能代替目前占用资源比较多的elk&#xff0c;目前未对graylog性能进行深入测试&#xff0c;只是简单体验了下&#xff0c;graylog的UI比较简陋&#xff0c;但是在报警以及权限方面优于ELK&#xff0c;整…...

15.PPT:文静-云计算行业发展【29】

目录 NO123​ NO345​ NO6​ NO78 NO9/10/11/12​ NO123 设计→幻灯片大小→自定义幻灯片大小→ 全屏显示&#xff08;16&#xff1a;9&#xff09;→最大化 NO345 SmartArt 主题颜色2/6/9&#xff1a;形状样式&#xff1a;样式 加大行距加宽间距 NO6 NO78 设计→设置背景…...

高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案

目录 一、Ollama 介绍 二、Ollama下载 2.1 官网下载 2.2 GitHub下载 三、模型库 四、Ollmal 使用 4.1 模型运行&#xff08;下载&#xff09; 4.2 模型提问 五、Ollama 常用命令 相关推荐 一、Ollama 介绍 Ollama是一个专为在本地机器上便捷部署和运行大型语言模型&…...

MFC 的 CListCtrl 控件,使用SetItemState 方法来设置选中某个 item,如何达到效果和鼠标点击一致

1&#xff09;查询到的方法如下&#xff1a; // 假设你要选中第 2 行&#xff08;索引从 0 开始&#xff09; int nItem 1; // 取消所有其他选中项 m_ListCtrl.SetItemState(-1, 0, LVIS_SELECTED); // 设置选中状态&#xff0c;并确保它具有焦点 m_ListCtrl.SetItemStat…...

一文读懂:TCP网络拥塞的应对策略与方案

TCP&#xff08;传输控制协议&#xff09;是互联网中广泛使用的可靠传输协议&#xff0c;它通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制确保数据的可靠传输。然而&#xff0c;在网络环境中&#xff0c;由于多个主机共享网络资源&#xff0c;网络拥塞成为了一个…...

深度整理总结MySQL——子查询的工作原理

子查询的工作原理 前言为什么开发人员喜欢写子查询查询重写条件化简移除不必要的括号常量传递&#xff08;constant_propagation&#xff09;移除没用的条件&#xff08;trivial_condition_removal&#xff09;HAVING子句和WHERE子句的合并 常量表检测外连接消除 子查询子查询语…...

20240824 美团 笔试

文章目录 1、单选题1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.151.161.171.181.191.202、编程题2.12.2岗位:硬件开发工程师(嵌入式系统软件开发方向) 题型:20 道单选题,2 道编程题题 1、单选题 1.1 C 语言中,如果输入整数 v 是 2 的幂,下面表达式中哪个会返…...

Windows图形界面(GUI)-QT-C/C++ - QT 文本编辑控件详解

公开视频 -> 链接点击跳转公开课程博客首页 -> ​​​链接点击跳转博客主页 目录 概述 1. QLineEdit 1.1 特点 1.2 属性 1.3 常用方法 1.4 拓展应用 2. QTextEdit 2.1 特点 2.2 属性 2.3 常用方法 2.4 拓展应用 3. QPlainTextEdit 3.1 特点 3.2 属性 3.3…...

IDEA中Resolving Maven dependencies卡着不动解决方案

一、修改settings.xml Maven配置阿里云仓库主要通过修改Maven的settings.xml文件来实现‌。以下是具体步骤: ‌1、找到settings.xml文件‌: 通常位于Maven安装目录下的conf文件夹中,或者在用户目录下的.m2文件夹中(如果用户自定义了settings.xml的位置)。 2、‌编辑se…...

go数据结构学习笔记

本博文较为完整的实现了go的链表、栈&#xff0c;队列&#xff0c;树&#xff0c;排序&#xff0c;链表包括顺序链表&#xff0c;双向链表&#xff0c;循环链表&#xff0c;队列是循环队列&#xff0c;排序包含冒牌、选择 1.链表 1.1 顺序链表 type LNode struct {data intn…...

监控与日志:Prometheus+Grafana实时追踪GPU、显存、推理延迟与错误率

系列导读 你现在看到的是《本地大模型私有化部署与优化:从入门到生产级实战》的第 8/10 篇,当前这篇会重点解决:让你的本地大模型服务像云服务一样可观测,提前发现并解决性能问题。 上一篇回顾:第 7 篇《量化部署终极指南:从GPTQ到AWQ,精度损失与显存节省的平衡艺术》…...

Harness Open Source 与 GitLab 的区别:一个轻量一体化 DevOps 平台,一个完整 DevSecOps 平台

Harness:https://github.com/harness/harness 一、先给结论 Harness Open Source 和 GitLab 都可以做代码托管、代码协作、CI/CD 和制品管理,但二者的产品边界不同。 Harness Open Source 官方定位是一个开源的一体化开发平台,集成源码管理、CI/CD pipelines、托管开发环…...

QuickBMS深度剖析:游戏资源提取的终极解决方案与实战指南

QuickBMS深度剖析&#xff1a;游戏资源提取的终极解决方案与实战指南 【免费下载链接】QuickBMS QuickBMS by aluigi - Github Mirror 项目地址: https://gitcode.com/gh_mirrors/qui/QuickBMS QuickBMS是一款强大的开源游戏资源处理引擎&#xff0c;专为游戏开发者、逆…...

3分钟搞定容器镜像加速:public-image-mirror 终极实战指南

3分钟搞定容器镜像加速&#xff1a;public-image-mirror 终极实战指南 【免费下载链接】public-image-mirror 很多镜像都在国外。比如 gcr 。国内下载很慢&#xff0c;需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。 项目地址: https://gitcode.com/GitHub_T…...

让 SACF 自动捕获授权对象,把新授权检查安全带进生产系统

很多 ABAP 老系统里,最敏感的改造不是性能优化,也不是把一个古早 FORM 重构成类方法,而是在已经稳定运行多年的业务代码里补授权检查。原因很直接,少一次授权检查,审计和安全团队会觉得风险很大,多一次授权检查,生产用户可能第二天就打不开业务功能。SACF,也就是 Switc…...

Pine Script V6核心特性解析与量化策略迁移实战指南

1. 项目概述&#xff1a;Pine Script V6 与交易策略开发如果你在TradingView社区里泡过一段时间&#xff0c;或者对量化交易策略开发感兴趣&#xff0c;那么“Pine Script”这个名字你一定不陌生。它就像是TradingView这个全球最大图表分析平台的“官方编程语言”&#xff0c;让…...

游戏后台记录器开发:从低开销捕获到硬件编码的工程实践

1. 项目概述&#xff1a;一个为游戏玩家设计的“后台记录器”如果你是一名资深游戏玩家&#xff0c;或者正在从事游戏相关的开发、测试、数据分析工作&#xff0c;那么你很可能遇到过这样的场景&#xff1a;在《艾尔登法环》里被某个Boss虐了上百次&#xff0c;却记不清每次失败…...

技能同步工具:跨平台开发环境配置自动化管理方案

1. 项目概述&#xff1a;技能同步&#xff0c;一个被低估的开发者效率工具如果你和我一样&#xff0c;每天需要在多台电脑&#xff08;比如公司的台式机、家里的笔记本、甚至偶尔应急的平板&#xff09;之间切换&#xff0c;并且每台设备上都配置了不同的开发环境、安装了不同的…...

基于容器化与微服务架构的无限路由器:云原生网络控制平台实践

1. 项目概述&#xff1a;一个“无限”路由器的诞生最近在折腾家庭网络和边缘计算项目时&#xff0c;我遇到了一个经典难题&#xff1a;如何在资源受限的硬件上&#xff0c;实现一个功能强大、可扩展且易于管理的网络路由与策略中心&#xff1f;市面上的成品路由器固件&#xff…...

5个步骤快速上手:空洞骑士Scarab模组管理器完整使用指南

5个步骤快速上手&#xff1a;空洞骑士Scarab模组管理器完整使用指南 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》玩家设计的免费开源模组管…...