CS452 - Real-Time Programming - Spring 2010

Public Interest Announcements


Lecture 17 - Serial I/O: Implementation

Implementation

The simplest way to handle the interrupts is to turn on only the combined interrupt and then look at the registers of the device.

To identify the current interrupt

Read UARTxIntIDIntClr at 0x800[bc]001c

When service is required

Transmitting

  1. Initialization
  2. When bytes arrive to transmit
  3. On transmit interrupt
  4. On modem status interrupt

Receiving

  1. Getting started
  2. Receive interrupt

Task Structure

We are supposed to support

int Get( int port )

and

int Put( int port, char c )

These are wrappers for sends to one or more serial servers.

How many servers and notifiers?

one server two servers four servers
one

notifier

likely queue

congestion in

server

likely queue

congestion

in notifer

two

notifiers

one per channel?

one per direction?

how should they

be paired?

four

notifiers

certain queue

congestion

in server

likely queue

congestion in

server

best performance,

most tasks

How should we handle a terminal?

Issues

  1. Line editing
  2. Echo

    Either

    Or

Many other issues come up below as we consider possible task structures.


Return to: