英特尔 IXP4xx 网络处理器上的 Linux 发行说明

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

  1. 概述

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

有关 CPU 各个版本的更多信息,请参阅

英特尔还曾经制造过 IXCP1100 CPU,它是 IXP4xx 的一个版本,其中剥离了大部分网络智能。

  1. Linux 支持

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

  • 双串口

  • PCI 接口

  • 闪存访问 (MTD/JFFS)

  • IXP42x 上通过 GPIO 的 I2C

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

  • 定时器(看门狗、操作系统)

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

  • USB 设备接口

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

  • 网络卸载功能

如果您需要使用上述任何功能,则需要从以下位置下载英特尔的软件

请勿向 Linux 邮件列表发布有关专有软件的问题。

有几个网站提供了有关使用英特尔软件的指导/提示

  1. 已知问题/限制

3a. 有限的入站 PCI 窗口

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

3b. 有限的出站 PCI 窗口

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

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

  2. 如果需要 > 64MB 的内存空间,则可以将 IXP4xx 配置为使用间接寄存器来访问 PCI。 这允许总线上最多 128MB 的内存(0x48000000 到 0x4fffffff)。 这样做的缺点是,每次 PCI 访问都需要三次本地寄存器访问和一个自旋锁,但在某些情况下,性能损失是可以接受的。 此外,由于 PCI 窗口的间接性质,在这种情况下您无法 mmap() 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] 卡的迷你 PCI 插槽。 最后,扩展总线上挂有一个 IDE 端口。

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

Avila 平台基本上是一个 IXDP425,其中 4 个 PCI 插槽被迷你 PCI 插槽替换,并且一个 CF IDE 接口挂在扩展总线上。

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

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

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

这基本上是一个 IXDP425,其中包含一个 IXP465 和 32M 的闪存,而不是仅 16M。

英特尔 IXDPG425 开发平台

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

摩托罗拉 PrPMC1100 处理器夹层卡 http://www.fountainsys.com

PrPMC1100 基于 IXCP1100,旨在插入 IXP2400/2800 系统中充当系统控制器。 它仅包含一个 CPU 和板上的 16MB 闪存,需要插入载板才能工作。 目前,Linux 仅支持该平台的摩托罗拉 PrPMC 载板。

  1. 待办事项列表

  • 添加对 Coyote IDE 的支持

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

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

  1. 鸣谢

IXP4xx 的工作由英特尔公司和 MontaVista Software, Inc. 资助。

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

  • Lennerty Buytenhek

  • Lutz Jaenicke

  • Justin Mayfield

  • Robert E. Ranslam

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


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