This is the mail archive of the mailing list for the eCos project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

problem with generic serial driver?

I am using (as of recently) the generic serial driver package (16x5x compatible serial device drivers).

The application was sending data to the port using the
file i/o interface:

   /* output string to serial port */
   err = cyg_io_write( serHandle, writeBuffer, length );

Nothing came out the serial port! That is, until, the app
output a 'diag_printf()'. That was a head-scratcher until
looking at the pc_serial_start_xmit() routine, I noticed
that the trasmitter wasn't being 'kicked' with a character
to the transmit register.

  // Enable the transmitter on the device
  static void
  pc_serial_start_xmit(serial_channel *chan)
      pc_serial_info *ser_chan = (pc_serial_info *)chan->dev_priv;
      cyg_addrword_t base = ser_chan->base;
      cyg_uint8 _ier;

      HAL_READ_UINT8(base+REG_ier, _ier);
      _ier |= IER_XMT;                    // Enable xmit interrupt
      HAL_WRITE_UINT8(base+REG_ier, _ier);

      /* kick transmitter */              // **!! added !!**
      (chan->callbacks->xmt_char)(chan);  // **!! added !!**

My questions:
 1) is the generic serial package still being used?
 2) is this a bug or are things configured incorrectly?


-- Before posting, please read the FAQ: and search the list archive:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]