此页面所描述的演示使用……
自此演示创建以来,FreeRTOS 已对 uIP 堆栈做出一些修改。 请参阅嵌入式以太网示例列表页面,获取更多详细信息。
在以下评估套件上进行了测试(仅 LM3S6965 和 LM3S8962 支持以太网):
Eclipse Europa 版本包含有助于交叉开发的增强功能。 FreeRTOS zip 文件包含设置开发环境所需的一切,但不包含 Eclipse 和 GCC 工具本身。 请仔细按照这些说明正确安装和配置 Eclipse, 以用于此演示应用程序。 Luminary Micro 评估套件可以使用 Micro USB 数据线直接连接到主机上,无需使用单独的 JTAG 接口设备。 该 USB 连接用于为微控制器供电、编程和调试。 uIP 和 OpenOCD 需从 FreeRTOS.org 单独授权。 用户必须熟悉相应的许可证。 (OpenOCD 根据 GNU GPL 授予许可)。 虽然所使用的工具均为跨平台工具,但我仅在 Windows 主机上测试了 ARM Cortex-M3/Eclipse 构建。 升级到 FreeRTOS V5.0.3: FreeRTOS V5.0.3 为 ARM Cortex-M3 移植引入了 configMAX_SYSCALL_INTERRUPT_PRIORITY 配置选项。 请参阅 RTOS 内核配置文档以获取有关此功能的完整信息。 升级到 FreeRTOS V4.8.0:在 V4.8.0 之前,FreeRTOS 内核未使用 SVCall 中断。 从 V4.8.0 开始才使用 SVCall 中断。 因此,要将旧项目升级到 V4.8.0 标准,需要稍微编辑一下启动代码。 要执行此操作,只需 将 vPortSVCHandler () 安装到中断向量表(包含在启动源文件中)内的 SVCall 位置。 包含在 FreeRTOS 下载中包含的演示项目已更新,因此可以作为示例。 LM3S2965 和 LM3S6965 用户注意事项:REV C 评估套件板上的显示部件号已更改。 如果使用的是 REV C 评估板,则:
重要提示!Stellaris Web 服务器演示使用说明使用此 RTOS 移植之前,请阅读以下所有要点。另请参阅常见问题:我的应用程序未运行,问题可能出在哪里? 源代码组织Eclipse Stellaris 演示的 Eclipse 工作区位于 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Eclipse 目录中。 在 Eclipse 启动过程中提示选择工作区位置时请选择此目录。 请务必阅读 Eclipse 的安装和配置说明, 然后再构建项目。下载的 FreeRTOS zip 文件包含所有移植文件和演示应用程序项目文件。 因此其包含的文件 远多于此演示使用的文件。 请参阅源代码组织部分,获取 下载文件的描述和有关创建新项目的信息。
演示应用程序演示应用程序设置请注意本页顶部关于选择正确显示驱动程序的注释。使用点对点(交叉)电缆直接将 Stellaris 评估板连接到运行网络浏览器的计算机, Web 浏览器的计算机上。 点对点连接时,原型板也允许使用标准以太网电缆, 但我没有尝试过这种配置。 演示使用的 IP 地址是通过 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/webserver/uIP_Task.c 文件中的 uipIP_ADDR0 到 uipIP_ADDR3 常量设置的。 运行 Web 浏览器的计算机使用的 IP 地址必须和原型板使用的 IP 地址相兼容。 为此,可以将二者 IP 地址中的前三个八位元组设置成相同的值。 例如,如果运行 Web 浏览器的计算机所用 IP 地址是 192.168.100.1,那么原型板的 IP 地址可以使用 192.168.100.2 到 192.168.100.254 范围内的任何地址 (任何网络上的现有地址除外)。 每个评估套件都预先编写了一个唯一的 MAC 地址,不需要再手动配置。 演示应用程序使用内置在评估板上的 LED 和 OLED 显示器,因此不需要其他硬件设置。
构建演示应用程序再次提醒,请参阅 Eclipse 安装和配置说明, 以了解更多详细信息。
运行演示应用程序再次提醒,请参阅 Eclipse 安装和配置说明, 以了解更多详细信息。
功能此演示应用程序创建了 20 个持久性任务,并定期动态创建和销毁另外 2 个任务。 这些任务主要包含标准 演示应用程序任务(有关个别任务的详细信息,请参阅演示应用程序部分)。除了标准演示任务外,应用程序还创建了以下任务和测试:
如果演示应用程序正确执行,其表现如下:
提供的网页(仅限 LM3S6965 和 LM3S8962 套件)每个提供的页面顶部包含一个菜单,其中含有指向其他每个页面的链接。
![]() 提供的 RTOS 统计页面 RTOS 统计页面提供了系统内每个任务状态的运行时信息,包括堆栈高水位线(任务开始执行后, 可随时在此处获取最小数量的堆栈)。 该页面大约每 2 秒重新加载一次,具体取决于网络负载。 此页面分三个部分传输:HTML 标头和菜单、动态生成的内容以及 HTML 页脚。 这样, 页面的加载速度相对较快。 可以通过一次性传输整个页面来进一步优化加载速度。 有时,连续重新加载 RTOS 统计页面会导致无法从该页面离开。
![]() 提供的 IO 页面 IO 页面提供了一个简单的接口,可以将数据发送到开发板上的 LED 和 OLED。 复选框可以设置和查询用户 LED 的状态。 文本框可用于向 OLED 写入消息, 但不会查询当前显示的文本。 点击 "Update IO" 按钮可将变更发送到目标硬件。 TCP 统计信息和连接页面显示运行时网络信息。 请注意,这些页面单独传输每行数据,因此加载速度较慢。 这演示了如何通过牺牲已实现的数据吞吐量来利用小型传输缓冲区优化内存使用。
RTOS 配置和使用详情RTOS 移植特定配置这些演示的特定配置项目位于 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/FreeRTOSConfig.h。 可根据 在本文件中定义的常量,以适配您的应用程序。 特别是-
注意:请记住 ARM Cortex-M3 核心使用低数值数字表示高 优先级中断,这似乎有悖直觉,而且很容易忘记! 如果您希望将中断分配为低优先级,请不要将中断的 优先级指定为 0(或其他较小数值),因为这可能会导致中断实际上在系统中具有最高优先级 - 因此,如果该优先级 高于 configMAX_SYSCALL_INTERRUPT_PRIORITY,则可能会导致系统崩溃。 ARM Cortex-M3 核心的最低优先级实际上是 255,然而,不同的 ARM Cortex-M3 供应商采用了不同数量的优先位, 并提供了优先级指定方式不同的库函数。 请使用提供的示例作为参考。 每个移植 #defines 'BaseType_t' 等于该处理器的最有效数据类型。 本移植将 BaseType_t 定义为长整型。 请注意,vPortEndScheduler() 尚未实现。 中断服务程序在演示应用程序中,向量表保存在闪存。与大多数移植不同,导致上下文切换的中断服务程序没有特殊要求,可以根据编译器文档编写。 宏 portEND_SWITCHING_ISR() 可用于从 ISR 内请求上下文切换。 请注意,portEND_SWITCHING_ISR() 将启用中断。 在抢占式和协同式 RTOS 内核之间切换将 FreeRTOS/Demo/CORTEX_LM3Sxxxx_Eclipse/RTOSDemo/FreeRTOSConfig.h 中的定义 configUSE_PREEMPTION 设置为 1,可使用抢占式, 设置为 0,则可使用协同式。编译器选项与所有的端口一样,使用正确的编译器选项至关重要。 若要确保这一点, 最佳方法是基于提供的演示应用程序文件构建您的应用程序。内存分配Source/Portable/MemMang/heap_2.c 位于 ARM Cortex-M3 演示应用程序项目中, 用于提供 RTOS 内核所需的内存分配。 请参阅 API 文档的内存管理部分, 获取完整信息。Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.
|