此演示应用程序已经过以下评估套件测试:
LM3S6965 和 LM3S8962 演示创建了(除其他任务外)一个简单的 Web 服务器,可用于查看运行时信息, 并将数据写入 EVB-LM3S6965/EVB-LM3S8962 评估板上的 LED 和 OLED 显示屏。 提供了一个单独的文档页面,描述如何使用 Eclipse Workbench 和 OpenOCD 构建和调试此演示的 GCC 版本。 这两款工具都属于 开源软件。 此演示使用:
自此演示创建以来,FreeRTOS 已对 uIP 堆栈做了一些修改。 请参阅嵌入式以太网示例列表页面,获取更多详细信息。 LM3S2965 和 LM3S6965 用户注意事项:REV C 评估套件板上的显示部件号已更改。 如果使用的是 REV C 评估板,则:
注意:如果项目构建失败,可能是使用的 IAR 嵌入式工作台版本过低。 如果构建失败, 那么也可能是项目文件(在无提示的情况下)已经损坏,因此需要 将其恢复至初始状态,然后才能使用新版本的 IAR 构建项目。
重要提示!使用 ARM Cortex-M3 Web 服务器演示的注意事项使用此 RTOS 移植之前,请阅读以下所有要点。另请参阅常见问题:我的应用程序未运行,问题可能出在哪里? 源代码组织请参阅 FreeRTOS 网站的源代码组织部分,获取 下载文件的描述和有关创建新项目的信息。
IAR 项目文件
Keil uVision 项目文件
演示应用程序LM3S6965/LM3S8962 演示应用程序设置只有在 main.c 中将 mainINCLUDE_WEB_server 设置为 1 时,构建才会包含 Web 服务器。 如果不包含 Web 服务器, 可使用 IAR Embedded Workbench 的 KickStart 版本构建应用程序。 直接使用点对点(交叉)电缆,或使用标准以太网电缆通过集线器或交换机,将 EVB-LM3S6965 或 EVB-LM3S8962 开发板连接到运行 Web 浏览器的计算机上。 点对点连接时,原型板也允许使用标准以太网电缆, 但我没有尝试过这种配置。 演示使用的 IP 地址 由 FreeRTOS/Demo/CORTEX_LM3Sxxxx_IAR_Keil/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,因此无需使用其他硬件设置。 EVB-LM3S6965/EVB-LM3S8962 通过单个微型 USB 连接器供电、编程以及调试。 第一次用 USB 连接评估板和 PC 时, 系统会提示您安装各种 USB 驱动器。 可 从 Luminary Micro CD 或 Luminary Micro 网站获取所需的 USB 驱动程序。
EVB-LM3S2965/EVB-LM3S1968 演示应用程序设置请注意本页顶部关于选择正确显示驱动程序的注释。LM3S2965 和 LM3S1968 演示不需要任何特定配置。
构建和执行演示应用程序
功能此演示应用程序创建了 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_IAR_Keil/FreeRTOSConfig.h。 可根据 在本文件中定义的常量,以适配您的应用程序。 特别是-
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_IAR_Keil/FreeRTOSConfig.h 内的定义 configUSE_PREMPTION 设置为 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.
|