QEMU LM3S6965 模型移植的 FreeRTOS 演示
[RTOS 移植]
此页面描述了在 LM3S6965 QEMU 模型上构建和运行 FreeRTOS ARM Cortex-M3 GCC 移植的预配置 Eclipse 项目
。
重要提示!使用 ARM Cortex-M3 移植的注意事项
使用此 RTOS 移植之前,请阅读以下所有要点。
- 在 ARM Cortex-M3 核心上使用 FreeRTOS 的说明
- 源代码组织
- 演示应用程序功能
- 在 QEMU 仿真器中使用 LM3S6965 构建和运行 RTOS 演示应用程序
- RTOS 配置和使用详情
另请参见常见问题:我的应用程序未运行,哪里出错了?。
在 ARM Cortex-M3 核心上使用 FreeRTOS
如果您不满足于仅仅运行本页所描述的演示,或者您想创建自己的 ARM Cortex-M
FreeRTOS 项目,还可以参阅运行 FreeRTOS 内核的一般信息
(在 ARM Cortex-M 核心上运行)。
源代码组织
FreeRTOS 内核和演示的代码可从 FreeRTOS.org 的 主下载页面获取。
FreeRTOS zip 文件下载内容包含所有 FreeRTOS 移植和演示应用程序的源代码——因此包含的文件比此项目所需文件多得多。请参阅源
代码组织页面,了解关于目录结构体的信息。
LM3S6965 QEMU 项目位于 /Demo/CORTEX_LM3S6965_GCC_QEMU
目录下。
构建说明部分提供了更多信息。
LM3S6965 QEMU 演示应用程序
功能
由于 QEMU 主要作为开发目标,该演示中(尚)不包含简单的 "blinky" 项目(
在其他项目中可找到)。 但是,main()
会直接创建一个全面的测试和演示应用程序。 演示
将测试(除此之外):
创建的任务来自标准演示任务集。标准演示
任务被所有 FreeRTOS 移植演示应用程序使用。它们没有特定的功能,仅用于演示
如何使用 FreeRTOS API,并测试 RTOS 移植。
tick 钩子函数会定期检查标准演示任务(其中包含自我监控
代码),以确保所有任务都正常运行。然后,它会向任务发送状态消息,该任务会
在仿真 OLED 显示屏上打印状态消息,并将状态消息打印到仿真 UART。 如果状态消息为 "PASS"(通过),
则所有任务都按预期执行。否则,状态消息会显示报错的任务。
注意:如果您在 Windows 主机上(可能在 Linux 上)执行演示数小时,可能会报错
。这可能是一个假阳性,显然是由于写入仿真 IO 引起的。如果删除对仿真 OLED 显示屏和 UART 的写入,
则该演示可以运行数周而不报错。
QEMU 控制台输出。
构建 RTOS 演示应用程序
该项目与带有 Eclipse Embedded CDT 插件的基本 Eclipse 版本配合使用。打开并构建演示项目:
下载并安装 Eclipse Embedded CDT(C/C ++ 开发工具) ,该工具将 Eclipse IDE
for C/C++ Developers 标准版与 Eclipse Embedded CDT 插件打包在一起。
下载并安装
GNU Arm 嵌入式工具链
按照"前提条件"部分的内容进行操作(见在 Eclipse 中导入并
构建演示项目页面),以确保您已正确设置环境。该演示使用的 GCC 编译器
属于
前一步骤中安装的 GNU Arm 嵌入式工具链的一部分。
按照“导入并构建演示项目”部分的内容进行操作(见
在 Eclipse 中导入并构建演示项目页面)。导入位于
FreeRTOS Git 存储库或 FreeRTOS 发布版 zip 文件的 /Demo/CORTEX_LM3S6965_GCC_QEMU
目录中的项目。
在 QEMU 仿真器中运行 RTOS 演示应用程序
在 Windows 环境中:
下载并安装预建的 QEMU Windows 二进制文件。
在开启 Eclipse 之前,请确保含有 QEMU 可执行文件的目录包含在 PATH 环境变量中
。
导入并构建项目,如上所述。
在 Eclipse 项目资源管理器中右键单击 "start_quem_and_debug.launch
" 文件,然后
从弹出菜单中选择 "Debug As->start_quem_and_debug"。QEMU 会启动,然后 GDB 调试器会启动并连接
至 QEMU。
运行调试会话 (Windows)。
所有其他环境(也适用于 Windows ):
按照安装并启动 QEMU 仿真器页面上的说明进行操作,
并从 CORTEX_LM3S6965_GCC_QEMU 演示项目目录中输入以下命令以启动 QEMU:
qemu-system-arm -kernel ./Debug/RTOSDemo.elf -S -s -machine lm3s6965evb
右键单击 Eclipse 项目资源管理器中的 "RTOSDemo Debug.launch" 文件,然后从弹出菜单中选择 "Debug As->RTOSDemo Debug"
。调试器将启动并连接到 QEMU(假设前一步骤已运行 QEMU)。
运行调试会话。
配置和使用详情
RTOS 移植特定配置
本节内容与在 ARM Cortex-M 核心上运行 RTOS 文档页面提供的信息相关联。此演示的特定配置项位于 FreeRTOS/Demo/cortex_LM3S6965_GCC_QEMU/FreeRTOSConfig.h
。
您可编辑该文件中定义的常量,以适应您的应用程序。特别是:
configKERNEL_INTERRUPT_PRIORITY
configKERNEL_INTERRUPT_PRIORITY
应设置为最低优先级。请记住,ARM Cortex-M 核心
使用低数值的优先级数字表示逻辑上的高优先级中断。在
ARM Cortex-M 核心上的最低优先级实际上是 255,不同的 ARM Cortex-M 微控制器制造商会采用不同数量的
优先级位。但是,QEMU 不对优先级位进行建模,因此 LM3S6965 微控制器实际只有三个
优先级位,而 QEMU 模型有八个优先级位,所以将 configKERNEL_INTERRUPT_PRIORITY
设置为 255。
configMAX_SYSCALL_INTERRUPT_PRIORITY
configMAX_SYSCALL_INTRUPT_PRIORITY
不能设置为零。请参阅
在 ARM Cortex-M 核心上运行 RTOS。
其他注意事项:
vPortEndScheduler()
尚未实现。
- QEMU LM3S6965 演示项目会构建
Source/Portable/MemMang/heap_4.c
以提供 RTOS 内核所需的内存分配。请参阅 API 文档的内存管理部分,
以获取完整信息。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.