英特尔 IXP4xx 网络处理器上的 Linux 发行说明¶
维护者:Deepak Saxena <dsaxena@plexity.net>¶
概述
英特尔的 IXP4xx 网络处理器是一款高度集成的 SOC,面向网络应用,但由于其低成本和低功耗,在工业控制和其他领域也变得很受欢迎。 IXP4xx 系列目前包括几个支持不同网络卸载功能的处理器,例如加密、路由、防火墙等。 IXP46x 系列是更新的版本,支持更快的速度、新的内存和闪存配置,以及更多的集成,例如片上 I2C 控制器。
有关 CPU 各个版本的更多信息,请参阅
英特尔还曾经制造过 IXCP1100 CPU,它是 IXP4xx 的一个版本,其中剥离了大部分网络智能。
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 邮件列表发布有关专有软件的问题。
有几个网站提供了有关使用英特尔软件的指导/提示
http://sourceforge.net/projects/ixp4xx-osdg/ 用于使用 uClinux 和英特尔库的开源开发者指南
http://gatewaymaker.sourceforge.net/ 使用 IXP425 和 Linux 构建网关的简单单页摘要
http://ixp425.sourceforge.net/ 依赖于英特尔库的 IXP425 ATM 设备驱动程序
已知问题/限制
3a. 有限的入站 PCI 窗口
IXP4xx 系列允许高达 256MB 的内存,但 PCI 接口只能向 PCI 总线公开 64MB 的内存。这意味着,如果您的运行内存 > 64MB,则超出可访问范围的所有 PCI 缓冲区都将使用 arch/arm/common/dmabounce.c 中的例程进行反弹。
3b. 有限的出站 PCI 窗口
IXP4xx 提供两种访问 PCI 内存空间的方法
从 0x48000000 到 0x4bffffff (64MB) 的直接映射窗口。 要通过此空间访问 PCI,我们只需将 BAR
ioremap()
映射到内核中,然后我们可以使用标准的 read[bwl]/write[bwl] 宏。 这是首选方法,因为速度快,但它将系统限制为仅 64MB 的 PCI 内存。 如果使用显卡和其他内存密集型设备,这可能会有问题。如果需要 > 64MB 的内存空间,则可以将 IXP4xx 配置为使用间接寄存器来访问 PCI。 这允许总线上最多 128MB 的内存(0x48000000 到 0x4fffffff)。 这样做的缺点是,每次 PCI 访问都需要三次本地寄存器访问和一个自旋锁,但在某些情况下,性能损失是可以接受的。 此外,由于 PCI 窗口的间接性质,在这种情况下您无法 mmap() PCI 设备。
默认情况下,出于性能原因,使用直接方法。 如果您需要更多 PCI 内存,请启用 IXP4XX_INDIRECT_PCI 配置选项。
3c. 作为中断的 GPIO
当前代码仅处理电平敏感的 GPIO 中断
支持的平台
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 载板。
待办事项列表
添加对 Coyote IDE 的支持
添加对基于边缘的 GPIO 中断的支持
添加对扩展总线上 CF IDE 的支持
鸣谢
IXP4xx 的工作由英特尔公司和 MontaVista Software, Inc. 资助。
以下人员贡献了补丁/评论等
Lennerty Buytenhek
Lutz Jaenicke
Justin Mayfield
Robert E. Ranslam
[我知道我忘记了其他人,请发送电子邮件给我以进行添加]
上次更新时间:2005 年 4 月 1 日