下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

内核
最新资讯
简化任何设备的身份验证云连接。
利用 CoAP 设计节能型云连接 IoT 解决方案。
11.0.0 版 FreeRTOS 内核简介:
FreeRTOS 路线图和代码贡献流程。
使用 FreeRTOS 实现 OPC-UA over TSN。

适用于 Raspberry Pi Pico 开发板的 SMP 演示

简介

这些演示使用 FreeRTOS 对称多处理 (SMP) 版本的 内核。演示面向 Raspberry Pi Pico 开发板,该板使用 配备双核 ARM Cortex M0+ 处理器的 RP2040 微控制器 (RP2040 微控制器由 Raspberry Pi 提供) 。

这些演示应用程序使用 GNU ARM 嵌入式工具链构建 FreeRTOS Raspberry Pi Pico 移植。演示了 FreeRTOS 内核中的对称多处理 (SMP) 支持

源代码组织

此演示的项目文件位于 FreeRTOS/Demo/CORTEX_M0+_RP2040 目录, 该目录位于 FreeRTOS SMP Demo Git 存储库。 位于 FreeRTOS/Source/portable/ThirdParty/GCC/RP2040FreeRTOS 目录。

演示应用程序

该项目包括以下演示:

  1. Blinky 演示。
  2. 综合演示。
  3. 多核演示。

Blinky 演示

Blinky 演示使用两个任务和一个队列。

  • 队列发送任务:

    队列发送任务由 prvQueueSendTask() 函数实现。该 任务每 1000 毫秒将值 100 发送 到队列。

  • 队列接收任务:

    队列接收任务由 prvQueueReceiveTask() 函数实现。 该任务位于一个循环中, 该循环会阻塞读取队列的尝试(任务被阻塞时不会消耗 CPU 周期), 队列接收任务每次接收到值 100 时都会切换一次 LED。由于队列发送任务 每 1000 毫秒向队列写一次, 队列接收任务每 1000 毫秒切换一次 LED。

综合演示

综合演示可实现全面的测试和演示应用程序, 除此之外,用于演示和/或测试以下功能:

创建的任务来自标准演示集, 所有 FreeRTOS 移植演示应用程序都使用这些任务。这些任务 没有特定的功能,之所以创建,只是为了演示如何 使用 FreeRTOS API,并测试 RTOS 移植。

创建“检查”任务,定期检查标准演示任务(包含自监控代码), 以确保所有任务 都按预期运行。检查任务在每次执行时都会切换 LED。这直观地反映出了系统的 运行状况。如果 LED 每 3 秒切换一次, 则表示检查任务未发现任何问题。如果 LED 每 200 毫秒切换一次,则表明检查任务 在一个或多个任务中发现潜在问题。

多核演示

多核演示应用程序在一个内核上运行 FreeRTOS 任务, 该任务使用 Raspberry Pico SDK 同步基元与另一个内核上运行的代码 进行交互。同一演示有两个版本:一个版本在内核 0 上运行 FreeRTOS, 另一个版本在内核 1 上运行 FreeRTOS。

构建和运行RTOS演示应用程序

构建

  1. 按照以下说明设置 Raspberry Pi Pico SDK 构建环境: Pico 入门。 确保在您的环境中设置了 PICO_SDK_PATH ,或通过 CMake 命令行上的 -DPICO_SDK_PATH=xxx 进行传递。

  2. 运行以下命令:

    $ cd FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040
    $ mkdir build
    $ cd build
    $ cmake ..
    $ make 

    这将为每个演示应用程序生成 .uf2 文件:

    • Blinky 模式:FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040/build/Standard_smp/main_blinky_smp.uf2

    • 综合演示:FreeRTOS/Demo/CORTEX_M0+_RP2040/build/Standard/main_full.uf2

    • 多核演示

      • FreeRTOS/Demo/CORTEX_M0+_RP2040/build/OnEitherCore/on_core_zero.uf2
      • FreeRTOS/Demo/CORTEX_M0+_RP2040/build/OnEitherCore/on_core_one.uf2

运行

  1. 按住 Bootsel 按钮,将 Raspberry Pi Pico 连接到 计算机。这将强制开发板进入 USB 大容量存储模式。
  2. 将要运行的演示的 .uf2 文件拖放到 大容量存储设备上。

RTOS 配置和使用详情

  • Blinky 演示和全面演示的特定配置项目位于 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040/Standard_smp/FreeRTOSConfig.h 文件以及 多核演示的特定配置项目位于 FreeRTOS/Demo/CORTEX_M0+_RP2040/OnEitherCore/FreeRTOSConfig.h 文件。 可根据应用程序的需要,编辑本文件中定义的常量 。以下配置选项仅适用于 FreeRTOS 内核中对 SMP 的支持:
    • configNUM_CORES - 设置内核数量。
    • configRUN_MULTIPLE_PRIORITIES - 启用/禁用同时运行具有多个优先级的任务。
    • configUSE_CORE_AFFINITY - 启用/禁用设置任务对某些内核的关联。
  • 项目中包含 Source/Portable/MemMang/heap_4.c, 旨在提供 RTOS 内核所需的内存。具体请参阅 API 文档的内存管理部分, 获取完整信息。
  • vPortEndScheduler() 尚未实现。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.