下载 FreeRTOS
 

出色的 RTOS & 嵌入式软件

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

uIP 嵌入式 Web 服务器演示
在 LPC2368 上使用 CrossStudio 和 GCC
[嵌入式以太网示例]



请注意: 由于早期 LPC2368 设备存在问题,MAM(内存加速器)模式必须设置为零, 演示才能正确执行。

本页描述了在 NXP LPC2368 ARM7 微控制器上运行的 FreeRTOS uIP 演示。 此演示创建了一个简单的 Web 服务器, 可以用于查看运行时间信息并将数据写入目标硬件上的 LED 和 LCD 显示器中。

此演示使用:

请注意,uIP 与 FreeRTOS.org 分开授权。 用户必须熟悉 uIP 许可

自此演示创建以来,FreeRTOS 已对 uIP 堆栈做了一些修改。 详情请参阅嵌入式以太网示例列表页面。

Hitex 提供了适用于 LPC2378 (使用 HiTOP 开发工具)的替代演示。


重要提示!LPC23xx Web 服务器演示的使用说明

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

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

源代码组织

FreeRTOS 下载包含所有 FreeRTOS 移植的源代码,因此包含的文件远多于此演示使用的文件。 请参阅源代码组织部分,获取 了解下载文件的说明和创建新项目的信息。

LPC2368 演示的 CrossWorks 解决方案(工作区)位于 FreeRTOS/Demo/ARM7_LPC2368_ROWLEY 目录。


演示应用程序

演示应用程序设置

直接使用点对点(交叉)电缆或通过使用标准以太网电缆的集线器/路由器将 MCB2300 开发板连接到运行 Web 浏览器的计算机上。 点对点连接时,原型板也允许使用标准以太网电缆, 但我没有尝试过这种配置。

演示使用的 IP 地址是通过 FreeRTOS/Demo/ARM7_LPC2368_Rowley/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 范围内的任何地址 (任何网络上的现有地址除外)。

同一文件中的 uipMAC_ADDR0 到 uipMAC_ADDR5 常量定义了目标硬件使用的 MAC 地址。 请务必确保所配置的 MAC 地址在原型板所连接的网络上具有唯一性。

此演示应用程序使用了在原型板上构建的 LED 和 LCD,因此无需使用其他硬件设置。


构建演示应用程序

目前提供三种项目配置。 "THUMB Flash Debug" 和 "ARM Flash Debug" 执行最少优化,可轻松与 CrossConnect JTAG 调试接口结合使用。 "ARM Flash Release" 执行更多优化,不便于调试器操作,还会在上电复位时直接启动。

  1. 确保您拥有安装 CrossWorks 所需的 LPC2000 和 MCB2300 支持包

  2. 在 CrossWorks IDE 中打开 FreeRTOS/Demo/ARM7_LPC2368_Rowley/RTOSDemo.hzp 项目。

  3. 选择要使用的配置。


    选择要构建的配置

  4. 在 IDE 的 'Build' 菜单中选择 'Build Solution'。


运行演示应用程序

  1. 确保 CrossConnect JTAG 调试接口已连接,并且 MCB2300 开发板已接通电源。

  2. 确保以太网电缆已按上文所述完成连接。

  3. 从 'Target' 菜单中选择 'Connect USB CrossConnect for ARM',将 CrossConnect JTAG 接口连接到目标硬件 (通常可以跳过此步骤,因为系统会自动检测接口)。

  4. 在 IDE 的 'Debug' 菜单中选择 'Start Debugging'。

  5. 微控制器闪存将使用演示应用程序进行编程,并且调试器会在 main() 函数开始处中断。

  6. 在 IDE 的 "Debug" 菜单中选择 "Go" 以开始执行应用程序。


功能性

此演示应用程序创建了 23 个持久性任务,并定期动态创建和销毁另外 4 个任务。 这些任务主要包含标准 演示应用程序任务(有关个别任务的详细信息,请参阅演示应用程序部分)。

除了标准演示任务外,还创建了以下任务:

  • uIP 任务

    此任务操作所有的网络处理。 它大部分时间都阻塞在某个信号量上, 等待被传入的网络数据包生成的中断唤醒。

  • LCD 任务

    此任务是一项“网关守卫”任务。 它是唯一允许写入 LCD 的任务,从而确保访问的一致性。 其他想要写入 LCD 的任务会将要显示的字符串发送到 LCD 任务,而非直接访问 LCD。

  • 'check' 任务

    'check' 任务负责确保所有标准演示任务都按预期执行。它只每隔 5 秒执行一次,但由于其在系统内拥有最高优先级,因此保证能够获得执行时间。check 任务发现的任何错误都会被锁定, 直到处理器重置。check 任务在每个执行周期结束时会向 'LCD' 任务发送通过或失败的消息, 以显示在 LCD 上。

如果演示应用程序正确执行,将实现以下效果:

  • LED P2.0、P2.1 和 P2.3 由 'flash' 任务控制。 每个 LED 将以恒定频率闪烁,LED P2.0 的闪烁频率最快,LED P2.3 的闪烁频率最慢。

  • 'check' 任务每 5 秒向显示器写入一次 "PASS"。

  • 目标硬件将向标准 Web 浏览器提供下述网页。 要连接到目标,请执行下列操作:

    1. 在连接的计算机上打开浏览器。
    2. 先在浏览器地址栏中输入 "HTTP://",再输入目标 IP 地址。


      在浏览器中输入 IP 地址
      (当然,根据您的系统,使用正确的 IP 地址)


提供的网页

每个提供的页面顶部包含一个菜单,其中含有指向其他每个页面的链接。


提供的 RTOS 统计页面

RTOS 统计页面提供了系统内每个任务状态的运行时信息,包括堆栈高水位线(任务开始执行后, 可随时在此处获取最小数量的堆栈)。 该页面大约每 2 秒重新加载一次,具体取决于网络负载。

此页面分三个部分传输:HTML 标头和菜单、动态生成的内容以及 HTML 页脚。 这样, 页面的加载速度相对较快。 可以通过一次性传输整个页面来进一步优化加载速度。

有时,连续重新加载 RTOS 统计页面会导致无法从该页面离开。


提供的 IO 页面

IO 页面提供了一个简单的接口,允许将数据发送到 MCB2300 开发板上的 LED 和 LCD。

三个复选框支持设置和查询 P2.5、P2.6 和 P2.7 输出口上的 LED 状态。 文本框可用于向 LCD 写入消息, 但不会查询当前显示的文本。 点击 "Update IO" 按钮可将变更发送到目标硬件。

请注意,'check' 任务每 5 秒更新一次显示内容,因此从 Web 客户端发送的任何文本会很快被覆盖。

TCP 统计和连接页面显示运行时网络信息。 请注意,这些页面单独传输每行数据,因此加载速度较慢。 这演示了如何通过牺牲已实现的数据吞吐量来利用小型传输缓冲区优化内存使用。



RTOS 配置和使用详情

此演示使用了 FreeRTOS LPC2000 GCC 移植,重要使用信息详见标准 LPC2000 GCC 演示文档页面




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