下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

TI MSP430FR5969 (MSP430X) RTOS 演示
支持 IAR 和 TI (CCS) 编译器
[RTOS 移植]


Texas Instruments MSP430 MSP-EXP430FR5969 Launchpad 开发工具包
MSP-EXP430FR5969 LaunchPad 开发工具包

简介

此页面记录的 RTOS 演示应用程序面向 Texas Instruments MSP430FR5969 低功率微控制器,该微控制器具有 16 位 MSP430X 内核。

我们提供了面向 MSP-EXP430FR5969 Launchpad 开发工具包的预配置项目, 适用于 IARCode Composer Studio (CCS) MSP430 编译器:

每个项目都可进行编译,以创建简单的 blinky 演示或综合测试和演示应用程序,此类程序可包含 FreeRTOS-Plus-CLI 命令行接口。 此外, 还提供了使用大小数据模型的构建配置。

关于低功率支持的说明

Idle 钩子用于将 MSP430 MCU 设置为低功率模式,这是一种简单的省电方法。 提供 tickless idle 的实现将大大提高节能性, 但未在此演示中配置。


与 FreeRTOS 编译器结合使用的 IAR 内核感知调试器
FreeRTOS 状态查看器插件的屏幕截图
该插件为 IAR IDE 附带。 点击放大。




重要提示!关于使用 MSP430X RTOS 演示的注意事项

使用此 RTOS 移植之前,请阅读以下所有要点。

  1. 源代码组织
  2. 演示应用程序
  3. RTOS 配置和使用详情
另请参阅常见问题我的应用程序 未运行,问题可能出在哪里?



源代码组织

RTOS 源代码下载内容包含用于所有 FreeRTOS 移植和所有演示应用程序的文件,因此包含的文件数量远远超过了 MSP430FR5969 演示所要求的数量。 请参阅本网站源代码组织部分, 章节,了解有关下载文件的描述。

IAR 和 CCS 项目都位于 /FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS 目录:

  • 适用于 MSP430 (EW430) 项目的 IAR 嵌入式工作台称为 RTOSDemo.eww

  • CCS 项目具有通常的 Eclipse 项目名称 .project



构建和运行 MSP430FR5969 MSP430X RTOS 应用程序

RTOS 演示项目可进行配置,以构建 blinky 项目, 或综合测试和演示应用程序。 常量 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 用于在两者之间切换。 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 定义于 main.c 顶部。

  • 如果 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 设置为 1,则创建简单的 blinky 演示。
  • 如果 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 设置为 0,则创建全面的演示。

演示使用构建于 MSP-EXP430FR5969 Launchpad 开发工具包上的 LED , 因此无需进行硬件设置。

以下小节提供了使用工具链的说明, 其中为此类工具链提供了预配置的项目。

  1. 使用 IAR Embedded Workbench 构建
  2. 使用 Code Composer Studio 构建


使用 IAR Embedded Workbench 构建

  1. 打开 FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS/RTOSDemo.eww (位于 IAR 嵌入式工作台 IDE 中)。

  2. 选择如下图所示的大型和小型数据模型构建配置 (请参阅 RTOS 配置和使用说明标题下的数据模型部分章节) , 以了解有关使用 IAR 切换数据模型的具体信息。

  3. 从 IAR 嵌入式工作台的 "Project" 菜单中选择 "Rebuild All"(或按 F7) 以构建演示项目。

  4. 确保 MSP-EXP430FR5969 Launchpad 硬件已连接到主机 。

  5. 在 IAR 嵌入式工作台的 "Project" 菜单中选择 "Download and Debug", 对微控制器闪存进行编程并启动调试会话 。


使用 CCS IDE
用 IAR IDE 选择大数据模型或小数据模型构建配置

注意: 如果在比最初创建项目时所用的版本更早的 EWARM 中打开,IAR 项目可能无法构建并被损坏 (因此它不能再与任何 IAR 版本一起使用) 。


使用基于 TI Eclipse 的 Code Composer Studio (CCS) 构建

  1. 启动 CCS Eclipse IDE,然后按照提示创建一个新的或选择一个现有的 工作区。

  2. 在 IDE 的 "File" 菜单中选择 "Import"。 系统将显示 如下对话框。 选择 "Code Composer Studio->CCS Projects"(如下所示)。

    将 MSP430 RTOS 演示项目导入 CCS Eclipse IDE
    首次单击 "Import" 时显示的对话框


  3. 在下一个对话框中,选择 /FreeRTOS/Demo/MSP430X_MSP430FR5969_LaunchPad_IAR_CCS 作为根目录。 确保 RTOSDemo 项目在 "Projects" 区域中已勾选, 并确保 “Copy Projects Into Workspace” 勾选,然后单击 "Finish" 按钮(请参阅下图查看正确的复选框状态)。

    导入到 Eclipse CDT 时选择 RTOS 源代码
    确保 RTOSDemo 已勾选,并确保 "Copy projects into workspace" 未勾选


  4. 选择大型和小型数据模型构建配置。 如下图所示 。

  5. 从 CCS Eclipse 的 "Project" 菜单中选择 "Build All", 以构建演示项目。

  6. 确保 MSP-EXP430FR5969 Launchpad 硬件已连接到主机 。

  7. 从 Eclipse 的 "Run" 菜单中选择 "Debug", 对微控制器闪存进行编程并启动调试 会话。


使用 CCS IDE 选择大数据模型 或小数据模型

注意:CCS 项目引用了使用相对路径的文件,包括 /FreeRTOS-Plus 目录中的 FreeRTOS-Plus-CLI 文件。 如果目录路径已更改或文件已移动, 则无法构建项目。 Eclipse 的 'export' 功能可用于将项目转换为独立项目, 此项目只能使用 .project 文件所在目录下的目录。


演示应用程序功能

关于简单的 blinky 的示例

mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 定义于 main.c 顶部。 当 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 设置为 1 时,main() 将调用 main_blinky()。
  • main_blinky() 函数:

    main_blinky() 在启动调度器前会创建队列、队列发送任务和队列接收任务 。

  • 队列发送任务:

    队列发送任务由 main_blinky.c 中的 prvQueueSendTask() 函数实现。

    prvQueueSendTask() 每 200 毫秒向 队列发送一次值 100。

  • 队列接收任务:

    队列接收任务由 main_blinky.c 中的 prvQueueReceiveTask() 函数实现 该函数位于 main_blinky.c。

    prvQueueReceiveTask() 在数据达到队列前保持阻塞状态, 并且在队列发送任务写入队列时,取消阻塞并在切换 LED 。 由于队列发送任务每 200 毫秒向队列写入一次, 队列接收任务将每隔 200 毫秒取消阻塞并切换 LED。


综合测试和演示应用


CLI 会话示例
综合演示包括一个 命令行接口 (CLI),在其中可查看任务和运行时统计信息。 下文提供了 CLI 的连接和使用说明。

注意: 当演示应用程序在 调试器中执行时,CLI 输出比较分散,而当演示应用程序独立执行时,CLI 输出比较流畅。

mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 定义于 main.c 顶部。 当 mainCREATE_SIMPLE_BLINKY_DEMO_ONLY 设置为 1 时,main() 将调用 main_full()。

  • Main_full () 函数:

    main_full() 创建一组标准演示任务、 CLI、Check 任务、Register Test 任务,并启动了 调度器。

  • "Reg Test" 任务:

    Reg Test 任务用于测试上下文切换机制, 通过向 MCU 寄存器填入已知的值,然后连续检查每个 寄存器在整个任务生命周期内是否保持其预期值。

  • "Check" 任务:

    "Check" 任务监测系统内所有其他任务的状态, 寻找停滞的任务或报告错误的任务。 它每次被调用时都会切换 LED。

    如果 LED 每 3 秒钟切换一次,则 check 任务确定 演示正在按预期运行。 如果 LED 每 200 毫秒切换一次,则至少发现了一个潜在错误。


连接到 CLI 之前需执行以下操作:

  1. 运行综合演示。 MPS430FR5969 上的 UART 将在主机上枚举 为一个名为 "MSP Application UART1" 的虚拟 COM 移植 。

  2. 打开 Tera Term 或 Hyper Terminal 等哑终端程序, 并以 19200 波特率连接到枚举的 COM 端口。

  3. 与 FreeRTOS-Plus-CLI 一样,在控制台中键入 "help" 以查看 已注册命令列表。 右侧显示了 CLI 会话示例。



RTOS 配置和使用详情

数据模型

RTOS 支持大数据模型和小数据模型。 使用所选 IDE 中的构建选项选择数据模型 。

IAR 用户注意事项: 如果当前使用的是 IAR 工具, 那么在配置 FreeRTOS 时另外还必须执行如下步骤:

  • 如果使用的是大数据模型,则必须将 __DATA_MODEL_LARGE__ 定义为 汇编器 (而不是编译器) 符号。 请参见下图 。

  • 如果使用的是小数据模型,则必须将 __DATA_MODEL_SMALL__ 定义为 汇编器 (而不是编译器) 符号。 请参见下图 。


定义必要的汇编器符号

配置 RTOS 滴答中断

FreeRTOS 需要独占使用定时器, 该定时器能够生成称为 RTOS 'tick' 中断的周期性中断。 定时器配置在用户可定义的钩子 (或回调)函数中, 因此应用程序编写器可以灵活决定实际使用哪个定时器外围设备。钩子函数的名称和原型如下图所示 :
void vApplicationSetupTimerInterrupt( void );
须将常量 configTICK_VECTOR 设置为所选外围设备的中断向量数量。configTICK_VECTOR 在 FreeRTOSConfig.h 头文件中定义。 此演示项目包括 vApplicationSetupTimerInterrupt () 的实现,该实现通过配置定时器 TA0 生成滴答中断, 从而将 configTICK_VECTOR 设置为 TIMER0_A0_VECTOR。 仅当开发的应用程序需要 TA0 空闲用于其他目的时, 才需要修改提供的代码 。


中断服务程序

与大多数移植不同,导致上下文切换的中断服务程序 导致上下文切换的中断服务程序无特殊要求,可根据编译器文档编写。 宏 portYIELD_FROM_ISR () 可用于从 ISR 内要求上下文切换。 注意: portYIELD_FROM_ISR() 必须是 ISR 中的最后一个语句。

此演示项目提供了 FreeRTOS 中断服务程序示例, 包括在 serial.c 中定义的 prvUSCI_A0_ISR()。 请注意,prvUSCI_A0_ISR() 的实现旨在强调移植并演示中断中使用的队列, 而不是为了演示高效或通用的中断服务程序 !


RTOS 移植专用配置

这些演示的特定配置项目位于 FreeRTOSConfig.h 文件中,该文件位于项目文件所在的目录。 您可以 编辑 FreeRTOSConfig.h 中定义的常量,使其适合您的应用程序。 尤其是以下常量:
  • configTICK_RATE_HZ

    此常量设置了 RTOS 滴答中断的频率。 提供的数值 1 Hz 可用于测试 RTOS 内核功能,但比大多数应用程序要求的速度更快。 降低此值可提高效率。

每个移植都将 "BaseType_t" 定义为 #定义为处理器最有效的数据类型。 MSP430X RTOS 移植将 BaseType_t 定义为短整型。

请注意, vPortEndScheduler() 尚未实现。


内存分配

MSP430X 演示应用程序项目中内置 Source/Portable/MemMang/heap_4.c, 以提供 RTOS 内核所需的内存分配。 请参阅 API 文档的内存管理部分, 获取完整信息。




Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.