Name
CompactFlash cards in TrueIDE mode — Using CompactFlash cards in TrueIDE mode on the IXP4xx expansion bus
Overview
The IXP4xx processor HAL includes support for CompactFlash IDE devices accessed in True IDE mode directly on the IXP4xx expansion bus.
The hardware configuration for attaching the CF IDE devices must follow the specification described in Intel Application Note 30245603: “Intel IXP42X Product Line of Network Processors and IXC1100 Control Plane Processor: Using CompactFlash”. This describes use of the EXP_CS_N_1 (CS1) and EXP_CS_N_2 (CS2) signals to control the CF IDE device.
Configuration
Support for CF True IDE devices is contained within the IXP4xx
variant HAL and is controlled with the
CYGFUN_HAL_IXP4XX_CF_TRUE_IDE_SUPPORT
configuration
option. It is not possible to include PCI IDE support within the
same configuration - eCos only allows one ID controller driver at the
present time.
The driver requires the presence of the generic disk layer
(CYGPKG_IO_DISK
), as well as the IDE disk driver
(CYGPKG_DEVS_DISK_IDE
).
The block device name used to identify the disk is configured with the
option CYGDAT_HAL_IXP4XX_CF_TRUE_IDE_DISK_NAME
and defaults
to /dev/hd0/
. An MBR is expected to be
present on the CF card, and individual partitions can be accessed as
e.g. /dev/hd0/1
, /dev/hd0/2
,
etc. or the whole device as /dev/hd0/0
.
With this support it is possible to access filesystems on the CF IDE card
with the further inclusion of the generic file I/O layer package
(CYGPKG_IO_FILEIO
) along with a standard eCos filesystem
implementation such as FAT (CYGPKG_FS_FAT
).
Use from RedBoot
Similarly, it is possible for RedBoot to load images from a filesystem using the "file" load method. For example:
RedBoot>fs mount -d /dev/hd0/1 -t fatfs
RedBoot>fs list
2 -rwxrwxrwx 1 size 3961588 VMLINUX 1937 -rwxrwxrwx 1 size 1588984 ZIMAGE RedBoot>load -m file -r -b %{freememlo} /ZIMAGE
Raw file loaded 0x00079800-0x001fd6f7, assumed entry at 0x00079800 RedBoot>exec
Using base address 0x00079800 and length 0x00183ef8 Uncompressing Linux......................................................................................................... done, booting the kernel. Linux version 2.6.12 (root@andy) (gcc version 3.4.4) #43 Tue Nov 15 16:40:04 GMT 2005 CPU: XScale-IXP42x Family [690541c1] revision 1 (ARMv5TE) CPU0: D VIVT undefined 5 cache CPU0: I cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets CPU0: D cache: 32768 bytes, associativity 32, 32 byte lines, 32 sets Machine: Intel IXDP425 Development Platform [etc.]
Implementation details
The implementation assumes that the platform HAL will map memory accesses at 0x51000000 to expansion bus accesses with CS1 enabled, and similarly 0x52000000 to expansion bus accesses with CS2 enabled.
This driver operates in polled mode (PIO) only with no interrupt-driven operation nor DMA, and uses conservative bus configuration timings to allow for maximum compatibility with CF IDE cards. Note that some CF cards are not fully compliant with the CompactFlash standard and do not fully or correctly implement True IDE mode.
2024-03-18 | eCosPro Non-Commercial Public License |