PSC UART serial communications manager for MPC5200 (QNX Neutrino)

Note: You must be root to start this driver.


devc-serpsc [options] 
            port[^shift],intr... &

Runs on:



The options are position-dependent and affect the subsequent ports.

-b number
The initial baud rate (default 57600).
-C size
The size of the canonical buffer in bytes (default 256).
Start in raw mode (the default). Software flow control is disabled by default.
Start in edited mode (default raw). Software flow control is enabled by default.
Disable hardware flow control (default to hardware flow control enabled). Hardware flow control isn't supported in edited mode.
Enable hardware flow control (default). Hardware flow control isn't supported in edited mode.
-I number
The size of the interrupt input buffer in bytes (default 2048).
-i {0|1}
Set the interrupt mode (0 means event; 1 means ISR). The default is 1.
-l {0|1}
("el") Enable loopback mode (1 means on, 0 means off).
-O number
The size of the interrupt output buffer in bytes (default 2048).
-r number
The data-ready timeout, in units of 50 ms (i.e. the timeout is number * 50 ms). The default is 5 (i.e. 250 ms).
Disable / enable software flow control. The default depends on the mode: in raw mode (-E, the default), it's disabled; in edited mode (-e), it's enabled.

The order in which you specify the -E or -e, and -S or -s options matters:

Options Mode Software flow control
-e Edited Enabled
-S -e Edited Enabled
-e -S Edited Disabled
-E Raw Disabled
-s -E Raw Disabled
-E -s Raw Enabled
-t number
Set the Receive trigger level; number must be in the range from 5 through 500. The default is 0.
Be verbose.
The physical memory address of a serial port.
The spacing of the device registers as a power of 2. For example:
Registers are 1 byte apart.
Registers are 2 bytes apart.
Registers are 4 bytes apart.


Registers are 2n bytes apart.

The default shift is 0.

The interrupt used by this port; specified in hex if prefixed with 0x, otherwise it's decimal.


The devc-serpsc manager is a small serial device manager for QNX Neutrino. It can support any number of serial ports using PSC UART driver for MPC5200. Each device can be assigned its own interrupt, or share an interrupt if the hardware supports interrupt sharing. You must specify an I/O port and IRQ.

The serial driver's priority floats to the priority of the client. All internal events are processed at priority 24 (inherited from the internal pulse). The event handling priority is hard coded and isn't configurable by any of the options listed. (The driver's main.c program would need modification in order to change the priority).

When the driver talks to a client application, it's running at the priority of the client. All other processing takes place either at priority 24r or at interrupt time.

Each device is given a name in the pathname space of /dev/sern, where n starts at 1 (unless changed via the -u option) and increases.

Note: If your application uses /dev/console, you should create a link from it to one of /dev/ser1, /dev/ser2, ... by adding a line like this to the buildfile used by mkifs:
[type=link] /dev/console = /dev/ser1

All devices are fully interrupt driven and by default support standard hardware flow control on input and output (RTS/CTS). This can be disabled by the -F option.

Note: Hardware flow control isn't supported in edited mode.

A read request by default returns when at least 1 character is available. To increase efficiency, you can control three parameters to control when a read is satisfied:

Return after a specified amount of time has elapsed.
Return when this number of characters are in the input buffer.
Return if this forwarding character is in the input buffer.

Note: If the Min value is greater than the size of the input buffer, the Min value is clipped to the size of the buffer. To avoid this, the size of the input buffer can be changed with the -I option.

These parameters are set using library routines (see tcgetattr(), tcsetattr(), readcond() and TimerTimeout() in the Library Reference).

The devc-serpsc manager supports both raw and edited modes, making it a real tty device.

The following fields and flags are supported in the termios structure:

Field Supported flags
c_cc All characters
c_oflag OPOST


Start devc-serpsc for the Freescale Lite5200 EVB:

devc-serpsc -c 132000000 -u 1 -e -F -S -b 115200 0xf0002000,65 &

Start devc-serpsc for the Freescale Total5200 SDP:

devc-serpsc -c 132000000 -u 3 -e -F -S -b 115200 0xf0002400,67 &

See also:

Character I/O drivers (devc-*) in the Utilities Summary

Connecting Hardware in the Neutrino User's Guide