与其他开源 TCP/IP 堆栈一起使用的旧版演示
请注意,本页发布时间早于 FreeRTOS-Plus-TCP,即 FreeRTOS
自带嵌入式 TCP/IP 堆栈的 引入时间。
本页列出了旧版 FreeRTOS 演示项目,其中包括一个完全抢占式多任务环境中的嵌入式 web
服务器。 一些演示使用 uIP 和
lwIP 作为底层嵌入式 TCP/IP 堆栈——并且早于
FreeRTOS-Plus-TCP(FreeRTOS 自带的可扩展 TCP/IP 堆栈)的推出。 这些项目的开发时长不一样,
因此,所使用的堆栈版本也不尽相同。 如需了解更多信息,
请直接参考下方提供的堆栈。 演示本身
按以下微控制器制造商列出。
uIP (和主要基于 uIP 的 FreeTCPIP )
uIP 在用于合适的应用程序时是一款很好用的软件,
原因有如下几点。 它在单个任务中运行,
因此不会发生重入相关的问题。
并且它允许在非常小的 RAM 和 ROM 占用空间内实现诸多功能。
uIP 的最大缺点是在未经修改的情况下(见下文) ,
在任何一个时刻网络上都只能有一个未完成的数据包。 这意味着
与台式机通信非常缓慢。这是因为台式机使用的是
ACK 延迟算法,进而导致在接收数据包和确认数据包之间产生
200 毫秒的时延。 这是非实时
TCP/IP 堆栈中将网络流量降至最低的标准做法——收到一个数据包后,堆栈将等待查看是否还有其他数据包
将到达,希望能够发出单个 ACK
来一次确认多个传入数据包。
虽然可以在不改变
桌面 TCP/IP 堆栈配置的情况下采用一些方法提高通信速度,但就像工程中的其他事物一样——
需要进行权衡取舍。 在这种情况下,需要权衡的是:
- 吞吐速度。
- RAM 的使用。
- CPU 的使用。
FreeRTOS 下载包含
uIP 的修改版本,代码名为 FreeTCPIP。 与基础(未修改) 的 uIP 代码相比,
修改版本极大地提高了吞吐量性能。 虽然吞吐量仍将低于功能更全的堆栈所能实现的速度,
但对于许多基于深度嵌入式微控制器的应用程序来说,
这也绰绰有余了。
只有后来开发的 FreeRTOS uIP 演示使用的是 FreeTCPIP,未来将会继续开发 FreeTCPIP
。
lwIP
当在其预期的、内存受限的环境中使用时, lwIP 协议栈也是一个不错的选择。
相较于 uIP,它的吞吐量更高,但同时 ROM 和 RAM 占用空间也更大。
尽管占用空间比 uIP 大,但也仍然比大多数商业
TCP/IP 产品要小。 特别是,LwIP 通过将较小的缓冲区链接在一起来创建较大的数据缓冲区,从而节省 RAM
。
这里列出的大多数(即便不是全部)
FreeRTOS 演示使用的 LwIP 版本非常旧 。
然而,也有人在
FreeRTOS 互动论坛贡献了有关如何使用最新
LWIP 代码库的相关演示。 欢迎大家上传投稿 lwIP
相关内容!
另一方面, lwIP 一开始操作起来的确比较复杂,
但只要投入时间使用就会在将来的项目中有所回报。
lwIP 也是一个移动式目标,因为它在不断
更新换代(这不一定是一件坏事情)。
包含 TCP/IP 功能的 FreeRTOS 演示
Atmel 微控制器示例
-
AVR32 AT32UC3A lwIP web 和 TFTP 服务器:
此示例使用 lwIP 在 AVR32 闪存微控制器上创建简单的 web 和 TFTP 服务器。
-
AT91SAM7X 上运行开源 uIP TCP/IP 堆栈:
包括用于 SAM7X 集成 EMAC 外设的简单中断驱动式驱动程序。
-
再次在 AT91SAM7X 上运行开源 uIP TCP/IP 堆栈(这一次使用 Eclipse 工具) :
提供简单的鼠标驱动程序以及 web 服务器演示。
-
在 AT91SAM7X 上运行开源 lwIP TCP/IP 堆栈:
包括用于 SAM7X 集成 EMAC 外设的更全面的中断驱动式驱动程序。
Freescale 微控制器示例
-
使用 IAR 和 uIP 运行 Freescale Kinetis K60
本页提供的 IAR 项目预配置为在 TWR-K60N512
控制器模块上运行。 TWR-K60N512 本身并不包含以太网连接器,
因此还需要一个 TWR-SER 外设模块
才能使用嵌入式 web 服务器的功能。 这两个模块
可以在
TWR-K60N512-KIT 塔式套件中一起购买。
-
在 Coldfire MCF52233 ColdFire V2 上运行开源 uIP TCP/IP 堆栈:
演示在所提供网页生成动态内容及控制目标硬件 IO。
-
在 Coldfire MCF51CN128 ColdFire V1 上运行开源 uIP TCP/IP 堆栈:
演示在所提供网页生成动态内容及控制目标硬件 IO,这次是在 V1 核心上操作。
Luminary Micro/Texas Instruments 微控制器示例
-
在 LM3S6965 和 LM3S8962 ARM Cortex-M3 上运行开源 uIP TCP/IP 堆栈:
允许从 web 浏览器向目标发送命令。 还允许显示动态生成的运行时数据。 此外,还提供了与
Eclipse 配合使用的版本
集成有 ARM Cortex-M3 微控制器子系统的 Microsemi(原 Actel )FPGA 示例
-
使用 IAR 和 Keil 在 SmartFusion A2F200M3 上运行开源 uIP TCP/IP 堆栈:
允许从 web 浏览器向目标发送命令。 还允许显示动态生成的运行时数据。
-
使用 GCC 和 SoftConsole 在 SmartFusion A2F200M3 上运行开源 uIP TCP/IP 堆栈:
允许从 web 浏览器向目标发送命令。 还允许显示动态生成的运行时数据。
NXP 微控制器示例
-
NXP LPC17xx ARM Cortex-M3 微控制器上的 RedSuite uIP TCP/IP 堆栈:
本页的演示在 LPC1768 上开发,该微控制器安装在
Code Red 的 CRB1768 开发板上。
它显示动态生成的运行时信息,并允许从 web 浏览器向目标发送命令。
-
NXP LPC17xx ARM Cortex-M3 微控制器上的 Rowley CrossWorks uIP TCP/IP 堆栈:
本演示与 RedSuite LPC1768 演示类似,不过使用的工具是 Rowley CrossWorks,并且是针对
Keil MCB1700 开发板。
-
NXP LPC17xx ARM Cortex-M3 微控制器上的 IAR 嵌入式工作台 uIP TCP/IP 堆栈:
本演示与 RedSuite LPC1768 演示类似,不过使用的工具是 IAR 嵌入式工作台,并且是针对
IAR Kickstart 评估板。
-
在 LPC2368 上运行开源 uIP TCP/IP 堆栈:
演示对所提供网页的目标硬件 IO 的控制。
-
再次运行 LPC2368 项目,不过这次使用的工具是 Eclipse :
使用完全开源开发工具创建的 LPC2368 嵌入式 web 服务器示例。
-
在 LPC2124 上运行开源 uIP TCP/IP 堆栈:
包括轮询模式
Crystal LAN CS8900 驱动程序(在这里致谢 Paul Curtis 的贡献 )。
Renesas 处理器示例
-
RX62N 微控制器的开源免费 FreeTCPIP (主要基于 uIP )示例:
RX62N 微控制器有六个 FreeRTOS 演示应用程序。 一个用于
Renesas 编译器,
一个用于 GCC 编译器,
还有一个用于 IAR 编译器。
另外两个项目是为每个编译器提供的,其中一个用于
Renesas 入门套件 (RSK) ,另一个用于 Renesas 演示套件 (RDK)。
web 服务器示例包括使用 CGI
脚本显示任务和运行时统计信息。
-
在 SH7216 (SuperH SH-2A FPU) 上运行 uIP TCP/IP 堆栈:
web 服务器示例包括基本的 CGI 脚本功能。 用于生成页面以显示 TCP/IP
和任务运行时统计。
ST 微控制器示例
-
在 STR912 (ARM9) 上运行 uIP TCP/IP 堆栈和 lwIP TCP/IP 堆栈:
此演示包括使用 uIP 或 lwIP 堆栈的选项,此次是针对 ARM9 处理器。
-
在 STM32 (ARM Cortex-M3) 上运行开源 uIP TCP/IP 堆栈:
Rowley CrossWorks 演示包括嵌入式 web 服务器。
使用 WizNET 接口的示例
-
WizNET 硬件 TCP/IP 堆栈—— I2C 接口:
此示例中,TCP/IP 协处理器通过 I2C 端口生成嵌入式 web 服务器。
-
WizNET 硬件 TCP/IP 堆栈——内存映射接口:
此示例中,使用相同的 TCP/IP 协处理器,但在 Tern E-Engine 控制器上使用内存映射接口。
Copyright (C) Amazon Web Services, Inc. or its affiliates. All rights reserved.