The kernel already includes device drivers for the on-chip serial and ethernet ports.
For helpful MPC8xx-specific device driver examples, see: http://lists.linuxppc.org/listarcs/linuxppc-embedded/200001/msg00221.html
ftp://ftp.denx.de/pub/LinuxPPC/usr/src/drivers.tar.gz
ftp://ftp.denx.de/pub/LinuxPPC/usr/src/CDK.tar.gz
A flash driver will give you access to /dev/flash
devices, which are useful during development, for field upgrades and are ideal for storing fixed size persistent configuration data like your board's Ethernet MAC address. Includes drivers supporting a number of vendor's devices.
The flash driver does auto-erase when the length of data written per write() is exactly the corresponding erase block size. So usually you just need to do:
open (/dev/flash???) lseek(specific erase region) write(data, region size)
http://qslinux.org/ ftp://qslinux.org/
QSLinux contains a fully functioning FLASH driver, and an interface to the Ext2FS filesystem, with compression.
http://www.linux-mtd.infradead.org/
The MTD subsystem offers a more general solution which allows you to treat the flash as a regular block device on which you can mount a filesystem. It's ideal for large amounts of variable sized data or applications requiring a traditional writable filesystem, provided by the Journaling Flash Filesystem.
http://www.linux-mtd.infradead.org/doc2000.html
This is supported via the Memory Technology Device Subsystem.
For a PCMCIA driver, see: http://lists.linuxppc.org/listarcs/linuxppc-embedded/200002/msg00093.html
There are also some fairly detailed notes available at: ftp://ftp.absoval.com/pub/rpxlite/ and http://lists.linuxppc.org/listarcs/linuxppc-embedded/200005/msg00227.html
For generic Linux PCMCIA info, see: http://pcmcia.sourceforge.org/ftp/doc/PCMCIA-PROG.html
There are lots of options for connecting IDE drives. You need to at least configure CONFIG_BLK_DEV_IDE and CONFIG_BLK_DEV_IDEDISK. Search for IDE.
Also, see: http://www.bluebutton.com/proj/mbxlinux/.
Search for QSPAN or PowerSpan.
Using the on-chip watchdog to provide the basic "write kicked" /dev/watchdog
interface described in Documentation/watchdog.txt
is problematic, because the SYPCR register controlling it can only be written once after reset to both set the timeout and enable the watchdog. Once enabled, the boot loader and kernel must keep it from expiring up until the point where the user application opens /dev/watchdog
. Littering the generic kernel decompress and startup code with watchdog kicks to do this isn't acceptable to other Linux users. Hence, hardware watchdog support hasn't been implemented yet.
The general plan to solve this problem is described in: http://lists.linuxppc.org/listarcs/linuxppc-embedded/199910/msg00026.html
You can probably use Linux's software watchdog in the mean time.
http://www.honeywell.se/inu/usb/ and http://lists.suse.com/archives/linux-usb/2000-Mar/0234.html
These devices can be made to operate as a USB host or slave. Search for USB.
Also see the Programming Guide for Linux USB Device Drivers at http://usb.in.tum.de/usbdoc/
Use something that "frames" the data and the SI/TDM interface works really sweet. Take a look at the CS4218 audio codec driver for the Embedded Planet boards. It's floating around in the 2.2.13 kernels on the MontaVista site.
ftp://vlab1.iram.es/pub/linux-vme/
Patches and tarballs to use Linux on VME boards and simplify the access to the VME bus.
http://qslinux.org/docs/snmc/hdlc/index.html
Provides support for the HDLC protocol, running the PPP layer in order to transport IP packets across a synchronous serial link.