General Information
About the Project | About Ppbus
Framework | Reasons for Ppbus in NetBSD |
About NetBSD and FreeBSD
NetBSD-ppbus is a project on SourceForge.net. The project page on SourceForge
is
http://sourceforge.net/projects/netbsd-ppbus/. This project was created to
port a suite of device drivers from FreeBSD to NetBSD which will provide more
modern and flexible support for the parallel port in NetBSD. These drivers
include:
- atppc
-
Formerly ppc in FreeBSD, atppc provides low level chip set support for
AT-compatible parallel ports that typically attach to the ISA bus.
- ppbus
-
Provides abstraction for parallel port access and sharing between higher-level
device drivers.
- lpt
-
Provides normal services of a printer driver, attaches to ppbus.
- vpo
-
Drives zip drives attached to the parallel port, attaches to ppbus.
- lp
-
Provides PLIP network interface: IP over the parallel port. Attaches to ppbus.
FreeBSD has a device independent framework for parallel port access called
ppbus. This driver provides an abstract interface to the parallel port
and allows multiple device drivers to use this framework so that a number of
devices such as zip disks, data transfer cables, and printers can be used
without recompiling or rebooting the system. IEEE 1284 is a standard
governing the parallel port and allows for several modes of operation as well
as negotiated mode changes and standardized communication protocols: this
standard is supported under ppbus. On FreeBSD, ppbus is
implemented on the chip set-level driver ppc: the AT standard parallel
port chip set. This low-level driver provides support for enhanced modes of
operation such as EPP and ECP modes, interrupt handling, and DMA.
The original author has written some
information on
ppbus (http://people.freebsd.org/~nsouch/ppbus.html).
NetBSD has several additional requirements: the operating system has been
ported to a number of differing architectures and some level of machine and bus
independence is required for a driver like ppbus. A number of
low-level drivers which provide access to the parallel port will need to
support the same ppbus interface across various architectures and
buses. With this in mind, this project is attempting to port ppbus and
ppc, which has has been renamed to atppc because of a name
conflict (ppc in NetBSD refers to the Power PC architecture to which the
operating system has been ported).
- NetBSD's current lpt driver is old
-
The current driver lacks bidirectional support: almost every single printer
available now can send and receive data. The driver also lacks IEEE 1284
support and a way to negotiate faster transfer modes as well as standardized
protocols for things such as error recovery. The driver also does not separate
access to the parallel port from printing: there is no way to attach zip
drives, PLIP cables, or other non-printing devices.
- NetBSD would benefit from a standard parallel port software interface
-
NetBSD has been ported to a number of different architectures. Many have some
implementation of the parallel port and each requires its own driver. While
distinct drivers would still be required under ppbus, there would only be a
need for one printing driver: these multiple drivers would each
implement ppbus. The ppbus printer driver would not need to know hardware
details, just as long as the parallel port line definitions do not change (the
same 25-pin D type connector is used almost universally for example and IEEE
1284 has defined the signals and what they mean). This could result in people
spending less time having to re-implement and maintain drivers that talk to the
same device over and over again and would instead just write a driver to
support ppbus (this would only care about moving bytes in/out using the port).
- Multiple parallel port devices
-
Ppbus also does some access arbitration to the hardware port itself via the
generic interface: this means that multiple devices can be configured into the
kernel that all use the same port. While simultaneous usage may not make
sense, it would be very convenient to be able to for example print out a report
and then attach a zip disk to back up some files without the need to
reboot the machine or have several kernels stored for different "usage
patterns". This was the situation in Linux
for example, until that OS got a ppbus-like implementation for the i386
parallel port.
NetBSD and FreeBSD are operating systems which are both derived from 386BSD,
which in turn was derived from BSD 4.4: these are UNIX operating systems. Both
are open-source systems and are freely available. More information can
be found at the respective project web pages:
Home
2003/09/19 20:53:13