Linux on Intel IXP4xx 网络处理器发行说明

维护者:Deepak Saxena <dsaxena@plexity.net>

  1. 概述

Intel 的 IXP4xx 网络处理器是一款高度集成的 SOC,主要面向网络应用,但由于其低成本和低功耗,已在工业控制和其他领域变得流行。IXP4xx 系列目前包含多个处理器,这些处理器支持不同的网络卸载功能,例如加密、路由、防火墙等。IXP46x 系列是更新的版本,支持更快的速度、新的内存和闪存配置以及更多的集成,例如片上 I2C 控制器。

有关 CPU 的各种版本的更多信息,请参见

Intel 还制造了 IXCP1100 CPU 一段时间,它是 IXP4xx 的精简版,去除了许多网络智能。

  1. Linux 支持

Linux 目前在 IXP4xx 芯片上支持以下功能

  • 双串口

  • PCI 接口

  • 闪存访问 (MTD/JFFS)

  • IXP42x 上通过 GPIO 的 I2C

  • 用于输入/输出/中断的 GPIO。有关访问函数,请参见 arch/arm/mach-ixp4xx/include/mach/platform.h。

  • 定时器(看门狗、OS)

芯片的以下组件不受 Linux 支持,需要使用 Intel 的专有 CSR 软件

  • USB 设备接口

  • 网络接口(HSS、Utopia、NPE 等)

  • 网络卸载功能

如果您需要使用上述任何一项,则需要从以下位置下载 Intel 的软件

请勿将有关专有软件的问题发布到 LINUX 邮件列表。

有几个网站提供了有关使用 Intel 软件的说明/指针

  1. 已知问题/限制

3a. 有限的入站 PCI 窗口

IXP4xx 系列允许最大 256MB 的内存,但 PCI 接口只能将其中 64MB 的内存暴露给 PCI 总线。这意味着,如果您运行的内存 > 64MB,则超出可访问范围的所有 PCI 缓冲区都将使用 arch/arm/common/dmabounce.c 中的例程进行反弹。

3b. 有限的出站 PCI 窗口

IXP4xx 提供了两种访问 PCI 内存空间的方法

  1. 从 0x48000000 到 0x4bffffff (64MB) 的直接映射窗口。要通过此空间访问 PCI,我们只需使用 ioremap() 将 BAR 重新映射到内核,然后我们可以使用标准 read[bwl]/write[bwl] 宏。由于速度原因,这是首选方法,但它将系统限制为仅 64MB 的 PCI 内存。如果使用视频卡和其他内存密集型设备,这可能会有问题。

  2. 如果需要 > 64MB 的内存空间,则可以将 IXP4xx 配置为使用间接寄存器来访问 PCI。这允许总线上最多 128MB(0x48000000 到 0x4fffffff)的内存。缺点是每次 PCI 访问都需要三个本地寄存器访问和一个自旋锁,但在某些情况下,性能损失是可以接受的。此外,在这种情况下,您无法 mmap() PCI 设备,因为 PCI 窗口是间接的。

默认情况下,出于性能原因,使用直接方法。如果您需要更多 PCI 内存,请启用 IXP4XX_INDIRECT_PCI 配置选项。

3c. GPIO 作为中断

当前代码仅处理电平敏感的 GPIO 中断

  1. 支持的平台

ADI Engineering Coyote 网关参考平台 http://www.adiengineering.com/productsCoyote.html

ADI Coyote 平台是为构建小型住宅/办公室网关的用户提供的参考设计。一个 NPE 连接到 10/100 接口,一个连接到 4 端口 10/100 交换机,第三个连接到 ADSL 接口。此外,它还支持通过 SLIC 连接的 POT 接口。请注意,Linux ATM 不支持这些接口。最后,该平台有两个用于 802.11[bga] 卡的 mini-PCI 插槽。最后,有一个 IDE 端口挂在扩展总线上。

Gateworks Avila 网络平台 http://www.gateworks.com/support/overview.php

Avila 平台基本上是一个 IXDP425,其中 4 个 PCI 插槽被 mini-PCI 插槽取代,并且有一个 CF IDE 接口挂在扩展总线上。

Intel IXDP425 开发平台 http://www.intel.com/design/network/products/npfamily/ixdpg425.htm

这是 Intel 用于 IXDP425 的标准参考平台,也称为 Richfield 板。它包含 4 个 PCI 插槽、16MB 闪存、两个 10/100 端口和一个 ADSL 端口。

Intel IXDP465 开发平台 http://www.intel.com/design/network/products/npfamily/ixdp465.htm

这基本上是一个带有 IXP465 的 IXDP425,具有 32M 闪存而不是 16M。

Intel IXDPG425 开发平台

这基本上是一个添加了 NEC EHCI 控制器的 ADI Coyote 板。此板的一个问题是 mini-PCI 插槽仅连接了 3.3v 线,因此您不能将带有 E100 卡的 PCI 转 mini-PCI 适配器一起使用。因此,要 NFS root,您需要使用 CSR 或 WiFi 卡和一个 ramdisk,该 ramdisk 执行 BOOTP,然后执行 pivot_root 到 NFS。

Motorola PrPMC1100 处理器夹层卡 http://www.fountainsys.com

PrPMC1100 基于 IXCP1100,旨在插入 IXP2400/2800 系统以充当系统控制器。它仅包含一个 CPU 和板上的 16MB 闪存,需要插入载板才能运行。目前,Linux 仅支持此平台的 Motorola PrPMC 载板。

  1. TODO 列表

  • 添加对 Coyote IDE 的支持

  • 添加对基于边缘的 GPIO 中断的支持

  • 添加对扩展总线上 CF IDE 的支持

  1. 致谢

IXP4xx 工作由 Intel Corp. 和 MontaVista Software, Inc. 资助。

以下人员贡献了补丁/评论等

  • Lennerty Buytenhek

  • Lutz Jaenicke

  • Justin Mayfield

  • Robert E. Ranslam

[我知道我忘记了其他人,请给我发送电子邮件以添加]


上次更新时间:2005 年 1 月 4 日