Computer Science 686 Spring 2007 Special Topic: Intel EM64T and VT Extensions.

Slides:



Advertisements
Similar presentations
Serial Interface Dr. Esam Al_Qaralleh CE Department
Advertisements

INPUT-OUTPUT ORGANIZATION
1 Homework Reading (linked from my web page) –S and S Extracts –National Semiconductor UART Data Sheet Machine Projects –mp2 due at start of class 12 Labs.
The 8051 Microcontroller Chapter 5 SERIAL PORT OPERATION.
Interfacing The Serial/RS-232 Port Hardware Serial Port Registers Programming.
Serial I/O - Programmable Communication Interface
1 Fall 2005 Local Serial Asynchronous Communication Qutaibah Malluhi Computer Science and Engineering Qatar University.
RS-232 Communications. Why Serial Communications? Serial communication is the most simplistic form of communication between two devices. It’s pretty intuitive.
Using x86 “protected mode” on our anchor-cluster’s machines A look at some terminal emulation features utilized in the “console- redirection” mechanism.
On using ‘tasklets’ An example of the Linux kernel’s ‘tasklet’ mechanism for deferring some interrupt-handling work.
Interrupts What is an interrupt? What does an interrupt do to the “flow of control” Interrupts used to overlap computation & I/O – Examples would be console.
Asynchronous Communication Hardware  Data within a DTE is usually stored and moved in a parallel fashion.  Data sent across the channel is generally.
COE 342: Data & Computer Communications (T042) Dr. Marwan Abu-Amara Chapter 6: Digital Data Communications Techniques.
Handling a UART interrupt A look at some recent changes in the Linux kernel’s programming interface for device-interrupts.
The UART project Applying what we’ve learned about Linux device-drivers to the PC’s serial-port controller.
PC Modem Control The 8250 UART supplied with the PC supports a limited number of RS-232-C modem functions: The UART can be programmed to interrupt the.
7-1 Digital Serial Input/Output Two basic approaches  Synchronous shared common clock signal all devices synchronised with the shared clock signal data.
1 The 9-Pin Connector Pin abbreviations (numbers in parentheses are the 25D pin numbers): 1. CD (8) 2. RD (Rx) (3) 3. TD (Tx) (2) 4. DTR (20) 5. SG (Ground)
ECE 371- Unit 11 Introduction to Serial I/O. TWO MAJOR CLASSES OF SERIAL DATA INTERFACES ASYNCHRONOUS SERIAL I/O - USES “FRAMING BITS” (START BIT AND.
INPUT-OUTPUT ORGANIZATION
University of Tehran 1 Interface Design Serial Communications Omid Fatemi.
Dr A Sahu Dept of Comp Sc & Engg. IIT Guwahati. I/O Port Addressing UART Port Basic – Standardized UART UART Programming in C Loop back program.
Transmission Modes Serial Transmission  One bit is transmitted on a circuit at a time  Usually there is one transmit circuit and one receive circuit.
Serial Port I/O Serial port sends and receives data one bit at a time. Serial communication devices are divided into: Data Communications Equipment (DCE),
SC200x Peripherals Broadband Entertainment Division DTV Source Applications July 2001.
Lecture 7 Universal Asynchronous Receiver/Transmitter (UART) NCHUEE 720A Lab Prof. Jichiang Tsai.
MICROPROCESSOR INPUT/OUTPUT
Lecture Set 9 MCS-51 Serial Port.
Universal Synchronous/Asynchronous Receiver/Transmitter (USART)
Unit 4 Design and Synthesis of Datapath Controllers
1 Microprocessor-based Systems Course 9 Design of the input/output interfaces (continue)
Line Coding, Modem, RS232 interfacing sequences.
“Describe the overview of hardware interfacing and the serial communication interface. Describe the PIC18 connections to RS232. Explain the serial port.
Universal Asynchronous Receiver/Transmitter (UART)
Microprocessors 2 lesson Subjects lesson 7 Planning Interrupts Serial communication /USART Questions.
CHAPTER SERIAL PORT PROGRAMMING. Basics of Serial Communication Computers transfer data in two ways: ◦ Parallel  Often 8 or more lines (wire conductors)
Serial Communications
Scott Baker Will Cross Belinda Frieri March 9 th, 2005 Serial Communication Overview ME4447/6405.
Advanced Microprocessor1 I/O Interface Programmable Interval Timer: 8254 Three independent 16-bit programmable counters (timers). Each capable in counting.
 8251A is a USART (Universal Synchronous Asynchronous Receiver Transmitter) for serial data communication.  Programmable peripheral designed for synchronous.
NS Training Hardware. Serial Controller - UART.
Universal Asynchronous Receiver/Transmitter (UART)
Interfaces and Synchronization Martin Weiss. EIA 232D Interface Standard u Synonymous with ITU V.24 u Asynchronous interface u Up to 19.2kbps u 50 foot.
1 Asynchronous voice band modem for IP data protocols overview features.
Extended Uart The High Speed Digital Systems Laboratory, Electrical Engineering Faculty, Technion By: Marganit Fina Supervisor: Rivkin Ina Winter 2007/8.
© 2009, Renesas Technology America, Inc., All Rights Reserved 1 Course Introduction  Purpose:  This course provides an overview of the serial communication.
بسم الله الرحمن الرحيم MEMORY AND I/O.
CE-2810 Dr. Mark L. Hornick 1 Serial Communications Sending and receiving data between devices.
8251 USART.
BASICS OF SERIAL COMMUNICATIONS BIRLA VISHWKARMA MAHAVIDYALAYA ELECTRONICS & TELECOMMUNICATION DEPARTMENT PRESENTING BY: ABHISHEK SINGH AMANDEEP.
Transmitter Interrupts Review of Receiver Interrupts How to Handle Transmitter Interrupts? Critical Regions Text: Tanenbaum
Tiva C TM4C123GH6PM UART Embedded Systems ECE 4437 Fall 2015 Team 2:
Lecture 15. Modem Controller Register 4310 DTR 0 = Polling Operator 1 = Interrupts Enabled RTS 1 =Self Test 0 =Normal.
Lecture # 14. RS – 232C Standard Standard for physical dimensions of the connectors. PC (DTE) Modem RS – 232C Cable Connected via serial port (DCE)
Serial mode of data transfer
RS-232 Communications.
CS-401 Computer Architecture & Assembly Language Programming
Homework Reading (linked from my web page) Machine Projects Labs
SERIAL PORT PROGRAMMING
RS-232 Communications.
E3165 DIGITAL ELECTRONIC SYSTEM
UART Serial Port Programming
Asynchronous Serial Communications
Serial Communication Interface: Using 8251
Serial Communication Interface
Преглед Начин функционисања Имплементације
UART PC16550 (Universal Asynchronous Receiver/Transmitter) By Derwyn Hollobaugh
CHAPTER SERIAL PORT PROGRAMMING. Basics of Serial Communication Computers transfer data in two ways: ◦ Parallel  Often 8 or more lines (wire.
8051SERIAL PORT PROGRAMMING
Introduction Communication Modes Transmission Modes
Presentation transcript:

Computer Science 686 Spring 2007 Special Topic: Intel EM64T and VT Extensions

Recent CPU advances Intel Corporation’s newest CPUs for the Personal Computer market offer a 64-bit architecture and instructions that support ‘Virtual Machine Management’ To maintain ‘backward compatibility’ with previous CPUs, these added capabilities are not automatically turned on System software must be built to enable them -- and then to utilize them

Our course’s purpose We want to study these new capabilities, how to activate them and how to utilize them, from a ‘hands-on’ perspective Our machines have Core-2 Duo CPUs But they are ‘rack-mounted’ boxes (hence no keyboard, mouse, or video display), so we connect with them via the local network But the LAN doesn’t work during ‘boot-up’

Alternate access mechanism We will need to employ a different scheme for receiving output (or transmitting input) to our remote Core-2 Duo machines when no operating system has yet been loaded For this we’ll use the PC’s serial-port, and a special cable known as a ‘null-modem’ But we will need to write our own software to operate the serial communication link

Our remote-access scheme rackmount PC system gateway-server student workstation KVM cable ethernet cables ‘anchor00’ ‘anchor01’ ‘anchor02’ ‘anchor03’ ‘anchor04’ ‘anchor05’ ‘anchor06’ ‘anchor07’ Core 2 Duo systems ‘colby’ CS file-server null-modem serial cables

Universal Asynchronous Receiver-Transmitter (UART) See our CS686 course website at: for links to the UART manufacturer’s documentation and to an in-depth online programming tutorial

Kudlick Classroom Indicates a “null-modem” PC-to-PC serial cable connection lectern

PC-to-PC communications rackmount PC system student workstation KVM cable rackmount PC system student workstation KVM cable ‘ null-modem’ serial cable ethernet cables

Tx and Rx The UART has a transmission engine, and also a reception engine (they can operate simultaneously) Software controls the UART’s operations by accessing several registers, using the CPU’s input and output instructions A little history is needed for understanding some of the UART’s terminology

Serial data-transmission The Transmitter Holding Register (8-bits) The transmitter’s internal ‘shift’ register clock Software outputs a byte of data to the THR The bits are immediately copied into an internal ‘shift’-register The bits are shifted out, one-at-a-time, in sync with a clock-pulse start bit stop bit data-bits clock-pulses trigger bit-shifts

Serial data reception clock input voltage clock-pulses trigger voltage-sampling and bit-shifts at regular intervals The receiver’s internal ‘shift’ register start bit stop bit data-bits The Receiver Buffer Register (8-bits) Software can input the received byte from the RBR

DCE and DTE Original purpose of the UART was for PCs to communicate via the telephone network Telephones were for voice communication (analog signals) whereas computers need so exchange discrete data (digital signals) Special ‘communication equipment’ was needed for doing the signal conversions (i.e. a modulator/demodulator, or modem)

PC with a modem computer terminal modem serial cable phone wire Data Terminal Equipment (DTE) Data Communications Equipment (DCE)

Normal 9-wire serial cable Carrier Detect Rx data Tx data Data Terminal Ready Signal Ground Data Set Ready Request To Send Clear To Send Ring Indicator 5

Signal functions CD: Carrier Detect The modem asserts this signal to indicate that it successfully made its connection to a remote device RI: Ring Indicator The modem asserts this signal to indicate that the phone is ringing at the other end of its connection DSR: Data Set Ready Modem to PC DTR: Data Terminal Ready PC to Modem

Signal functions (continued) RTS: Request To Send PC is ready for the modem to relay some received data CLS: Clear To Send Modem is ready for the PC to begin transmitting some data

9-wire null-modem cable CD RxD TxD GND DSR DTR RTS CTS RI CD RxD TxD GND DSR DTR RTS CTS RI Data Terminal Equipment Data Terminal Equipment no modems

The UART registers Transmit Data Register Received Data Register Interrupt Enable Register Interrupt Identification Register FIFO Control Register Line Control Register Modem Control Register Line Status Register Modem Status Register Scratch Pad Register Divisor Latch Register 16-bits (R/W) 8-bits (Write-only) 8-bits (Read-only) 8-bits (Read/Write) 8-bits (Read-only) 8-bits (Write-only) 8-bits (Read/Write) 8-bits (Read-only) 8-bits (Read/Write) Base+0 Base+1 Base+2 Base+3 Base+4 Base+5 Base+6 Base+7 Base+0

Rate of data-transfer The standard UART clock-frequency for PCs equals 1,843,200 cycles-per-second Each data-bit consumes 16 clock-cycles So the fastest serial bit-rate in PCs would be /16 = bits-per-second With one ‘start’ bit and one ‘stop’ bit, ten bits are required for each ‘byte’ of data Rate is too fast for ‘teletype’ terminals

Divisor Latch The ‘Divisor Latch’ may be used to slow down the UART’s rate of data-transfer Clock-frequency gets divided by the value programmed in the ‘Divisor Latch’ register Older terminals often were operated at a ‘baud rate’ of 300 bits-per-second (which translates into 30 characters-per-second) So Divisor-Latch was set to 0x0180

How timing works Transmitter clock (bit-rate times 16) DATA OUT start-bit data-bit 0 data-bit 1 … receiver detects this high-to-low transition, so it waits 24 clock-cycles, then samples the data-line’s voltage every 16 clock-cycles afterward 24 clock-cycles 16 clock-cycles Receiver clock (bit-rate times 16) sample

Programming interface RxD/TxD IER IIR/FCR LCRMCRLSRMSRSCR The PC uses eight consecutive I/O-ports to access the UART’s registers 0x03F8 0x03F9 0x03FA 0x03FB 0x03FC 0s03FD 0x03FE 0x03FF scratchpad register modem status register line status register modem control register line control register interrupt enable register interrupt identification register and FIFO control register receive buffer register and transmitter holding register (also Divisor Latch register)

Modem Control Register 000 LOOP BACK OUT2OUT1RTSDTR Legend: DTR = Data Terminal Ready (1=yes, 0=no) RTS = Request To Send (1=yes, 0=no) OUT1 = not used (except in loopback mode) OUT2 = enables the UART to issue interrupts LOOPBACK-mode (1=enabled, 0=disabled)

Modem Status Register DCDRIDSRCTS delta DCD delta RI delta DSR delta CTS set if the corresponding bit has changed since the last time this register was read Legend:[---- loopback-mode ----] CTS = Clear To Send (1=yes, 0=no)[bit 0 in Modem Control] DSR = Data Set Ready (1=yes, 0=no) [bit 1 in Modem Control] RI = Ring Indicator (1=yes,0=no)[bit 2 in Modem Control] DCD = Data Carrier Detected (1=yes,0=no)[bit 3 in Modem Control]

Line Status Register Error in Rx FIFO Transmitter idle THR empty Break interrupt Framing error Parity error Overrun error Received Data Ready These status-bits indicate errors in the received data This status-bit indicates that a new byte of data has arrived (or, in FIFO-mode, that the receiver-FIFO has reached its threshold) This status-bit indicates that the data-transmission has been completed This status-bit indicates that the Transmitter Holding Register is ready to accept a new data byte

Line Control Register Divisor Latch access set break stick parity even parity select parity enable number of stop bits word length selection = 5 bits 01 = 6 bits 10 = 7 bits 11 = 8 bits 0 = 1 stop bit 1 = 2 stop bits 0 = no parity bits 1 = one parity bit 1 = even parity 0 = ‘odd’ parity 0 = not accessible 1 = assessible 0 = normal 1 = ‘break’

Interrupt Enable Register 0000 Modem Status change Rx Line Status change THR is empty Received data is available If enabled (by setting the bit to 1), the UART will generate an interrupt: (bit 3) whenever modem status changes (bit 2) whenever a receive-error is detected (bit 1) whenever the transmit-buffer is empty (bit 0) whenever the receive-buffer is nonempty Also, in FIFO mode, a ‘timeout’ interrupt will be generated if neither FIFO has been ‘serviced’ for at least four character-clock times

FIFO Control Register RCVR FIFO trigger-level reserved DMA Mode select XMIT FIFO reset RCVR FIFO reset FIFO enable Writing 0 will disable the UART’s FIFO-mode, writing 1 will enable FIFO-mode Writing 1 empties the FIFO, writing 0 has no effect 00 = 1 byte 01 = 4 bytes 10 = 8 bytes 11 = 14 bytes NOTE: DMA is unsupported for the UART on our systems

Interrupt Identification Register = FIFO-mode has not been enabled 11 = FIFO-mode is currently enabled 1 = No UART interrupts are pending 0 = At least one UART interrupt is pending ‘highest priority’ UART interrupt still pending highest 011 = receiver line-status 010 = received data ready 100 = character timeout 001 = Tx Holding Reg empty 000 = modem-status change lowest

Responding to interrupts You need to ‘clear’ a reported interrupt by taking some action -- depending on which condition was the cause of the interrupt: –Line-Status: read the Line Status Register –Rx Data Ready: read Receiver Data Register –Timeout: read from Receiver Data Register –THRE: read Interrupt Identification Register or write to Transmitter Data Register (or both) –Modem-Status: read Modem Status Register

Usage flexibility A UART can be programmed to operate in “polled” mode or in “interrupt-driven” mode While “Polled Mode” is simple to program (as we shall show on the following slides), it does not make efficient use of the CPU in situations that require ‘multitasking’ (as the CPU is kept busy doing “polling” of the UART’s status instead of useful work

How to transmit a byte Read the Line Status Register Write byte to the Transmitter Data Register Transmit Holding Register is Empty? NO YES DONE

How to receive a byte Read the Line Status Register Read byte from the Receiver Data Register Received Data is Ready? NO YES DONE

How to implement in C/C++ // declare the program’s variables and constants charinch, outch = ‘A’; // Transmitting a byte // wait until the Transmitter Holding Register is empty, // then output the byte to the Transmit Data Register do { } while ( (inb( LINE_STATUS) & 0x20) == 0 ); outb( data, TRANSMIT_DATA_REGISTER ); // Receiving a byte // wait until the Received Data Ready bit becomes true, // then input a byte from the Received Data Register do { } while ( (inb( LINE_STATUS ) & 0x01 ) == 0 ); inch = inb( RECEIVED_DATA_REGISTER );

How to initialize ‘loopback’ mode Set the Divisor Latch Access Bit in the Line Control Register Write a nonzero value to the Divisor Latch Register Clear the Divisor Latch Access Bit and specify the desired data-format in the Line Control Register Set the Loopback bit in the Modem Control Register DONE

How to adjust the cpu’s IOPL Linux provides a system-call (to privileged programs) that need to access I/O ports The header-file prototypes it, and the ‘iopl()’ library-function invokes it The kernel will modify the CPU’s current I/O Permission Level in cpu’s EFLAGS (if the program’s owner has ‘root’ privileges) So you first execute the ‘iopl3’ command

In-class exercise 1 Modify the ‘testuart.cpp’ demo-program by commenting out the instruction that places the UART into ‘loopback’ mode Apply the ideas presented in this lesson to create a program (named ‘uartecho.cpp’) that simply transmits each byte it receives Execute those two programs on a pair of PCs that are connected by a null-modem

In-class exercise 2 Add a pair of counters to ‘testuart.cpp’: –Declare two integer variables (initialized to 0) int txwait = 0, rxwait = 0; –Increment these in the body of your do-loops do { ++txwait; } while ( /* Transmitter is busy */ ); do { ++rxwait; } while ( /* Receiver not ready */ ); –Display their totals at the demo’s conclusion printf( “txwait=%d rxwait=%d \n”, txwait, rxwait );

In-class exercise 3 Modify the ‘testuart.cpp’ demo-program to experiment with using a different baud rate and a different data-format For example, use 300 baud and 7-N-2: – output 0x0180 to the Divisor Latch register – output 0x06 to the Line Control register Then, to better observe the effect, add the statement ‘fflush( stdout );’ in the program loop immediately after ‘printf( “%c”, data);’