Asynchronous Serial Performance Notes

As a software-based product, the speed of your computer’s processor affects the Frontline software performance. Overrun errors and buffer overflows are indicators that Frontline is unable to keep up with the data. The information below describes what happens to the data as it comes in the port, what the two types of errors mean, and how various aspects of Frontline affect performance. Also included are suggestions on how to improve performance.

Data captured by the serial port first goes into the buffer of the UART chip of the serial port. The UART generates an interrupt, which tells the Frontline driver to check the port.The driver takes the data from the UART and counts each byte as they are put into the driver’s own buffer. The driver tells Frontline that data is ready to be processed. Frontline takes the data from the driver’s buffer and puts the data into the capture buffer.

Overrun errors occur when the data in the buffer of the UART is not retrieved before new data comes in. In this case, Frontline knows that it has lost information, but it does not know how much. Frontline indicates overrun errors in the Event Display screen by marking a byte near the overrun in red. You can search for overrun errors using the Find feature.

Driver buffer overflow errors occur when the data in the buffer of the driver is not retrieved before new data comes in. Since the driver counts the bytes as it retrieves them from the UART, it not only knows that it has lost data, it also knows how much. Buffer overflows are indicated in the Event Display screen by a plus sign within a circle. Clicking on the buffer overflow symbol shows how many events have been lost. The Statistics window is a good place to check for buffer overflow errors.

Both overrun errors and buffer overflows indicate that data is coming in too quickly for Frontline to process. There are several things that you can do to try and solve this problem.

  • In the Hardware Settings window, select Use Windows Device Manager Settings. This means that Windows does not generate an interrupt every time a byte comes in, but rather waits until several bytes have accumulated in the UART buffer before telling Frontline to retrieve them. This increases performance at the cost of timestamp accuracy, since all the bytes in a group have the same timestamp regardless of when they actually arrived at the UART. Some control signal changes may also be lost.
  • Frontline’s number one priority is capturing data; updating windows is secondary. However, updating windows still takes a certain amount of processor time, and may cause Frontline to lose data while the window is being updated. Some windows require more processing time than others, because the information being displayed in them is constantly changing. Refrain from displaying data live in the Event Display and Frame Display windows. Try closing the Breakout Box and Statistics windows. Frontline can capture data with no windows other than the Control window open.
  • Increase the value of the window refresh rate for any windows you have open while capturing data. This decreases the frequency of window updates, leaving more time for capturing data. Changing the refresh rate can be done from the Options screen in each window.
  • If you suspect or know that your circuit has control signals that are changing very rapidly, go to the Hardware Settings window and choose to Disable Control Signal Interrupts. This prevents Frontline from capturing control signal changes on an interrupt basis, giving more time for capturing byte data. (You can use the counters in the Breakout Box to help determine if a control signal is changing quickly.) Frontline still notes the state of the control signals whenever a byte is captured. You must restart Frontline for this change to take effect.
  • Close all other programs that are working while Frontline is running. Refrain from doing searches in the Event Display window or other processor intensive activities while Frontline is capturing data.
  • Timestamping takes up processor time, primarily not in timestamping the data, but in writing the timestamp to the buffer or file. Try turning off timestamping from the Timestamping Options window.
  • Change the size of the driver buffer. This value is changed from the Advanced System Settings. Go to the Control Window and choose System Settings from the Options menu. Click on the Advanced button. Find the value labeled Driver Receive Buffer Size in Operating System Pages. Take the value listed there and double it.

    Note: This procedure might help buffer overflow errors, but does not help overrun errors.

  • Slow down the speed of the communications circuit, if possible.

If you are still experiencing overruns and/or buffer overflows after trying all of the above options, then you may need to use a faster PC.