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.