Solaris Driver for the General Standards PCI-16SDI Adapter

Size: px
Start display at page:

Download "Solaris Driver for the General Standards PCI-16SDI Adapter"

Transcription

1 Solaris Driver for the General Standards PCI-16SDI Adapter Software Design Document 1.1 Prepared by WireSpeed Communications Corporation WIRESPEED COMMUNICATIONS CORPORATION

2 Revision History Revision Date Reason for Change Initials 0.1 June 5, 2000 Initial Composition BN 0.2 June 8, 2000 Changes from initial review BN 1.0 June 9, 2000 Initially Released Document BN 1.1 Aug 29, 2000 Include customer questions BN WIRESPEED COMMUNICATIONS CORPORATION 2

3 Introduction This document is the detailed design document for the Solaris driver for the General Standards PCI-16SDI adapter. Solaris is the UNIX operating system sold by Sun Microsystems which runs on their Sun SPARC and generic Intel workstations. The 16SDI adapter is a PCI card manufactured by the General Standards Corporation, which implements the PLX technology for PCI 9080 bus. This document is ended for use by experienced system level programmers, and testers. No attempt is made to explain basic OS concepts. Concepts specific to Solaris will be documented and explained. Throughout this document, references to Solaris will be assumed to mean Solaris version 5.7. When referring to other versions of Solaris, explicit version numbers will be used. System Overview The PCI-16SDI Solaris driver will be developed for the General Standards PCI-16SDI adapter. It will be a standard Solaris Device Driver as defined by the Solaris DDI/DKI. The driver will be developed and tested on SPARC Solaris running the 32-bit kernel. The PCI-16SDI adapter is a 16-channel analog input PCI Sigma-Delta I/O board, which provides 16-bit analog input capability for the PCI bus at sample rates up to 220 kilo samples per second, per channel. The board has several special purpose registers that can be read from or written to. The PCI-16SDI board does analog to digital signal conversion. When a user application requests a certain operation, the board gets the request in the form of an ioctl operation. When the board receives the request, it does a DMA operation to obtain the data requested and makes it available to the user process. The analog signal input to the board is stored in a FIFO data buffer. The DMA operation will transfer the data from the data buffer, with the board operating as bus master. A PCI errupt will be generated when the transfer is completed. It must be noted that all the communication between the PCI bus and the board takes place through the control and the data registers. Our test environment will consist of two systems, a Solaris system that has a PCI- 16SDI adapter installed with the Solaris driver loaded and an AO12 demo unit that provides the inputs to the PCI-16SDI board. More details are provided in the testing section. WIRESPEED COMMUNICATIONS CORPORATION 3

4 Design Considerations Goals and Guidelines The existing PCI-16SDI NT driver will be referred to as much as possible to facilitate timely development. However, since the driver initialization mechanisms, driver installation mechanisms, methods of accessing the data structures in Solaris are all very different from Windows NT, this will not be a direct porting effort. The design emphasis will be to make the driver conform to the Solaris driver standard.. Solaris Issues Assumptions None currently. The device will support exclusive open only. Only one process can open the device at any given time. System Architecture A Solaris PCI-16SDI character-mode driver has the following basic structure: 1. An install routine, where a driver s erest in a set of PCI identifiers is registered with the kernel. The PCI-16SDI install routine is called pcisdi_install. 2. An attach routine, where the kernel s PCI discovery logic has located a PCI id which was previously registered. In this routine, a driver is allowed to claim a device. The PCI-16SDI attach routine is called pcisdi_attach. 3. An initialization routine which runs after PCI discovery. This is where a driver places its hardware o a sane state, allocates memory for state structures, and maps any address spaces o kernel virtual memory. The PCI-16SDI initialization routine is called pcisdi_init. 4. An open routine, where a user-space process requests access to the board. The PCI-16SDI open routine is called pcisdi_open. 5. A close routine, where a user-space process releases resources allocated in an open. The PCI-16SDI close routine is called pcisdi_close. WIRESPEED COMMUNICATIONS CORPORATION 4

5 6. A read routine, where a user-space process reads data from the board. The PCI- 16SDI read routine is called pcisdi_read. 7. An ioctl routine, where the bulk of operations are performed in this driver. This entry po is used to control the specialized functions of the 16SDI board. The PCI-16SDI ioctl routine is called pcisdi_ioctl. 8. An isr routine, is an errupt handler, where the cause of an errupt is determined and appropriate action is taken. The PCI-16SDI isr routine is called pcisdi_isr. A write routine will not be implemented to manipulate register values. Instead ioctl functions will be used, as recommended in the PCI-16SDI Windows NT Device Driver s User Manual. Initialization Initialization of a Solaris PCI-16SDI driver is performed by the first three entry pos listed; install, attach, and initialization. The routine pcisdi_install is called when the kernel starts to initialize at boot time. The pcisdi_install routine hooks the driver s PCI recognition routine o the kernel s list of recognizers. Then this install routine registers the driver with the kernel. The routine pcisdi_attach is called by the kernel because of the PCI discovery logic detecting a PCI ID in a PCI slot. The pcisdi_attach routine verifies the device ID is correct, and that the content of the PCI device registers is as expected. It then schedules the initialization routine and claims the device. The kernel then calls the pcisdi_init routine after PCI discovery is complete. This is the po where the driver allocates a device control block, and maps any address spaces required to manipulate the device. It also registers the errupt handler. Operation The main operation of the driver will be done in the pcisdi_open, pcisdi_close, pcisdi_read and pcisdi_ioctl entry pos. The pcisdi_open routine will check the state structure for the adapter in question, and if opening is allowed, the open flag will be set. The pcisdi_close routine will essentially undo the initialization and open process. It will verify that the device is open, disable board, reset controller, unmap memory, deallocate memory and undo errupt handler and mark the device as closed. The analog input values are acquired through the analog input FIFO data buffer, which has a capacity of 256Kbytes. The pcisdi_read routine extracts data from this buffer, during a DMA operation, o the user s buffer. When an application requests data, WIRESPEED COMMUNICATIONS CORPORATION 5

6 the read routine initiates the DMA operation. Once the DMA is completed, an ISR indicates completion. Then the data is passed to the user process. The pcisdi_ioctl routine does the bulk of the work in this driver. Ioctl codes will be defined to request services from the driver. Those codes are: 1. IOCTL_SDI_NO_COMMAND 2. IOCTL_SDI_READ_REGISTER 3. IOCTL_SDI_WRITE_REGISTER 4. IOCTL_SDI_REQ_INT_NOTIFY 5. IOCTL_SDI_SET_INPUT_RANGE 6. IOCTL_SDI_SET_INPUT_MODE 7. IOCTL_SDI_SET_SW_SYNC 8. IOCTL_SDI_AUTO_CAL 9. IOCTL_SDI_INITIALIZE 10. IOCTL_SDI_SET_DATA_FORMAT 11. IOCTL_SDI_SET_INITIATOR_MODE 12. IOCTL_SDI_SET_BUFFER_THRESHOLD 13. IOCTL_SDI_CLEAR_BUFFER 14. IOCTL_SDI_SET_ACQUIRE_MODE 15. IOCTL_SDI_SET_GEN_RATE 16. IOCTL_SDI_ASSIGN_GEN_TO_GROUP 17. IOCTL_SDI_SET_RATE_DIVISOR 18. IOCTL_SDI_GET_DEVICE_ERROR 19. IOCTL_SDI_READ_PCI_CONFIG 20. IOCTL_SDI_READ_LOCAL_CONFIG 21. IOCTL_SDI_WRITE_PCI_CONFIG_REG 22. IOCTL_SDI_WRITE_LOCAL_CONFIG_REG WIRESPEED COMMUNICATIONS CORPORATION 6

7 23. IOCTL_SDI_SET_TIMEOUT 24. IOCTL_SDI_SET_DMA_ENABLE These ioctls represent the complete set of functionality of the PCI-16SDI board, and will be implemented for the sake of completeness. For definitions of all the ioctls refer the PCI-16SDI Windows NT Device Driver User s Manual. Detailed System Design Initialization Code Install The install routine is invoked by the operating system during the early stages of the system boot procedure. The prototype for the install routine is: static pci16sdi_install(); The purpose of this routine is to place the driver attach routine on the list of routines to be called when checking a PCI slot for drivers. The install routine first saves the address in the kernel global variable pci_attach, in a static variable, then places the address of its own attach routine in pci_attach. This action adds our attach routine to the head of a chain of attach routines. Note that Solaris PCI drivers form a cooperative chain of attach routines. Each driver that adds its attach routine to the head of the list is responsible for saving the address of its predecessor and calling that attach routine when required. Attach This routine is where the PCI-16SDI adapter is recognized and claimed by the driver. The prototype for the attach routine is: static pcisdi_attach (dev_info_t *dip, ddi_attach_cmd_t cmd); The attach routine is called when the kernel is attempting to match a driver to a device that has been discovered in a PCI slot. The PCI identifier is passed in, and if it matches the driver s set of identifiers, the driver claims the board for itself. The attach routine allocates a soft state structure for the instance and registers an errupt handler. It also maps device registers, initializes per- instance mutexes and condition variables. Finally, it creates minor device nodes for the instance. A potential race condition could exist between adding the errupt handler and initializing the mutexes. If the ISR were called before the mutex is initialized, the WIRESPEED COMMUNICATIONS CORPORATION 7

8 behavior would be unpredictable. Hence, the errupts will not be enabled until everything is setup. Initialization This routine is where the PCI-16SDI adapter performs hardware specific initialization for the PCI device. The prototype for the initialization routine is: static pcisdi_init(dev_info_t *dip); The function of the initialization routine includes enabling the device, obtaining configuration data and mapping the device registers and memory o the kernel address space, and allocating memory for driver specific data storage. After this routine completes, the driver will be ready to accept requests from a user process. Operations Code Open The open routine will verify that an open is allowed and will return success or status based on that fact. Its prototype is: static pcisdi_open(dev_t *devp, flag, otyp, cred_t *credp); The adapter will be marked as open and a success status will be returned. As noted earlier in the Assumptions section, only one process will be allowed to open the device at a given time. Close This function marks the adapter as closed and returns success. Its prototype is: static pcisdi_close(dev_t *devp, flag, otyp, cred_t *credp); The close function examines the adapter s state variable. If the adapter is not marked as open, a failure status is returned. If the adapter is open, it is marked as closed and a success status is returned. Read This function is used by the user process to read appropriate data from the board. Its prototype is: static pcisdi_read(dev_t dev, uio_t *uio, WIRESPEED COMMUNICATIONS CORPORATION 8

9 cred_t *credp); The user can read PCI registers and Local Configuration registers from the board. Attention will be given to error handling as needed. This driver will only do DMA read. The read works in close association with the high water mark errupts. The buffer threshold is set in the buffer threshold register. Then the errupt event errupt condition for the high low transition is set. During the DMA read, when the threshold value is reached, a local errupt is generated and the errupt request flag is set high. The Interrupt service routine (ISR) will clear the generated errupt and perform the necessary operations. Ioctl This routine is where most of the work for the driver is done. Its prototype is: static pcisdi_ioctl(dev_t dev, cmd, arg, mode, cred_t *credp, *rvalp); The dev parameter identifies the adapter for which the command is bound. The cmd parameter specifies the device control operation, which is requested. The arg parameter may po to a structure containing parameters for the command. The rvalp stores any eger value to be returned when the request succeeds. The ioctl routines handles the twenty-four commands mentioned in the System Architecture section: 1. IOCTL_SDI_NO_COMMAND 2. IOCTL_SDI_READ_REGISTER 3. IOCTL_SDI_WRITE_REGISTER 4. IOCTL_SDI_REQ_INT_NOTIFY 5. IOCTL_SDI_SET_INPUT_RANGE 6. IOCTL_SDI_SET_INPUT_MODE 7. IOCTL_SDI_SET_SW_SYNC 8. IOCTL_SDI_AUTO_CAL 9. IOCTL_SDI_INITIALIZE 10. IOCTL_SDI_SET_DATA_FORMAT WIRESPEED COMMUNICATIONS CORPORATION 9

10 11. IOCTL_SDI_SET_INITIATOR_MODE 12. IOCTL_SDI_SET_BUFFER_THRESHOLD 13. IOCTL_SDI_CLEAR_BUFFER 14. IOCTL_SDI_SET_ACQUIRE_MODE 15. IOCTL_SDI_SET_GEN_RATE 16. IOCTL_SDI_ASSIGN_GEN_TO_GROUP 17. IOCTL_SDI_SET_RATE_DIVISOR 18. IOCTL_SDI_GET_DEVICE_ERROR 19. IOCTL_SDI_READ_PCI_CONFIG 20. IOCTL_SDI_READ_LOCAL_CONFIG 21. IOCTL_SDI_WRITE_PCI_CONFIG_REG 22. IOCTL_SDI_WRITE_LOCAL_CONFIG_REG 23. IOCTL_SDI_SET_TIMEOUT 24. IOCTL_SDI_SET_DMA_ENABLE This represents the entire set of functionality of the PCI-16SDI board. All these commands are present in the NT implementation as well and will behave the same as they do under NT. It should be noted that certain ioctls should not be used unless it is necessary. The limitations of their use will be briefly mentioned. IOCTL_SDI_WRITE_REGISTER This command is a request from the user process to write a value to one of the PCI- 16SDI registers. In general, the user should take care when using the write function not to modify certain registers. IOCTL_SDI_REQ_INT_NOTIFY This command will request that the driver notify the application via an event when a specified errupt occurs. If the application requests an errupt notification and then performs an operation that requires the driver to use the errupts, the driver may miss the notification errupt and not notify the application. WIRESPEED COMMUNICATIONS CORPORATION 10

11 IOCTL_SDI_SET_INPUT_RANGE If the board is accessed before the settling time, results may be indeterminate. The board should not be accessed when sampling is in progress. IOCTL_SDI_WRITE_PCI_CONFIG_REG This command will write a value to one of the PCI Configuration Registers. The user should take care in modifying certain registers. ISR The isr routine will check if the card was initialized, and determine what caused the errupt. It will then proceed to process the errupt. The prototype of the isr routine is: pcisdi_isr(caddr_t arg); There are two kinds of errupts the PCI board generates, DMA errupts and non- DMA errupts. The DMA operation generates an errupt when the operation completes. Local or non-dma errupts are generated due to a variety of reasons, like if the high water mark is reached, initialization is completed etc. The isr will determine if the device is errupting and possibly reject the errupt. It will inform the device that it is being serviced, and will perform any I/O related processing. It also does any additional processing that could save another errupt. It then returns DDI_INTR_CLAIMED in Solaris. Data Structures The following are the system defined data structures: Modlinkage Modlinkage Modldrv Dev_ops Cb_ops_t Dev_info This structure is defined by Solaris in the file /usr/include/sys/modctl.h to be the following: struct modlinkage { ml_rev; WIRESPEED COMMUNICATIONS CORPORATION 11

12 ; void *ml_linkage[4]; The modlinkage structure is used to install, remove, and stat a module. The ml_rev field indicates the revision number of the loadable module system. The ml_linkage element is an array of poers to linkage structures. The value in the ml_linkage field is a poer to modldrv data structure shown below. Only one linkage structure is needed for the PCI-16SDI driver. Modldrv This structure is defined by Solaris in the file /usr/include/sys/modctl.h to be the following: struct modldrv { struct mod_ops char struct dev_ops ; *drv_modops; *drv_linkinfo; *drv_dev_ops; extern struct mod_ops mod_driverops; This structure describes the module in more detail. The drv_modops field, which is a Solaris supplied value, pos to a structure describing the module operation, which is &mod_driverops for a device driver. The drv_linkinfo field, which is an information string identifying the device driver, is displayed by the modinfo command. The drv_dev_ops field pos to the next structure in the chain, the dev_ops structure. This is how the modlinkage and modldrv work together: Modldrv contains poers to various driver entry pos. The ml_linkage field in the modlinkage structure pos to modldrv. During initialization phase, the linkage structure passes the entry pos to the operating system. Dev_ops This structure is defined by Solaris in the file /usr/include/sys/devops.h to be the following: Static struct dev_ops { devo_rev; devo_refcnt; (*devo_getinfo)(); (*devo_identify)(); (*devo_probe)(); (*devo_attach)(); WIRESPEED COMMUNICATIONS CORPORATION 12

13 ; struct cb_ops struct bus_ops (*devo_detach)(); (*devo_reset)(); *devo_cb_ops; *devo_bus_ops; (*devo_power)(); The dev_ops structure allows the kernel to find the autoconfiguration entry pos of the device driver. The function address fields should be filled in with the address of the appropriate driver entry po. The devo_cb_ops member should contain the address of the cb_ops structure. The PCI-16SDI driver will fill in the required entry pos getinfo() and attach() that will be used by the kernel for device configuration. The optional entry po probe(),will be initialized to nulldev, since the PCI-16SDI adapter is a selfidentifying device. The entry po detach() will however be filled, as it is a good idea to free resources, and a driver that can be unloaded is easier to test and debug. The prototypes for the getinfo(), attach(), detach() entry pos are as follows: static pcisdi_getinfo(dev_info_t *dip, ddi_info_cmd_t cmd, void *arg, void **result); static pcisdi_attach (dev_info_t *dip, ddi_attach_cmd_t cmd); static pcisdi_detach(dev_info_t *dip, ddi_detach_cmd_t cmd); Cb_ops_t This structure is defined by Solaris in the file /usr/include/sys/devops.h to be the following: Static struct cb_ops { struct streamtab (*cb_open)(); (*cb_close)(); (*cb_strategy)(); (*cb_pr)(); (*cb_dump)(); (*cb_read)(); (*cb_write)(); (*cb_ioctl)(); (*cb_devmap)(); (*cb_mmap)(); (*cb_segmap)(); (*cb_chpoll)(); (*cb_prop_op)(); *cb_str; WIRESPEED COMMUNICATIONS CORPORATION 13

14 ; cb_flag; cb_rev; (*cb_aread)(); (*cb_awrite)(); It is used by the kernel to invoke specific functions from a driver. The PCI_16SDI driver will only fill in the open, close, read and ioctl entry pos. Dev_info This is the main device information structure and is ended to be opaque to the drivers. The driver will use ddi functions defined in the Solaris DDI/DKI to access all driver accessible fields. dev_info_t *dip; In addition, the following data structures are needed to implement the PCI-16SDI Solaris driver and will be added : SDIRegParams SDIINTNotifyParams SDIGenParams SDIGenAssignParams SDIRateDivParams SDIReadPCIConfigParams ConfigRegsParams State_Info SDIRegParams This structure is used to store information about a register. The IOCTL_SDI_READ_REGISTER and IOCTL_SDI_WRITE_REGISTER ioctl commands use this structure to read a particular register and to write a value o a particular register. RegValue stores the value of the register, range being 0-94, and SDIReg stores the register type, range being 0x0-0xFFFFFFFF. typedef struct SDIRegParams { WIRESPEED COMMUNICATIONS CORPORATION 14

15 unsigned long SDIReg; unsigned long RegValue; SDIRegParams_t; WIRESPEED COMMUNICATIONS CORPORATION 15

16 The register type, SDIReg, will be one of the following: #define BOARD_CTRL_REG 0 #define RATE_CTRL_A_REG 1 #define RATE_CTRL_B_REG 2 #define RATE_CTRL_C_REG 3 #define RATE_CTRL_D_REG 4 #define RATE_ASSIGN_REG 5 #define RATE_DIVISOR_00_01_REG 6 #define RATE_DIVISOR_02_03_REG 7 #define RATE_DIVISOR_04_05_REG 8 #define RATE_DIVISOR_06_07_REG 9 #define RATE_DIVISOR_08_09_REG 10 #define RATE_DIVISOR_10_11_REG 11 #define RATE_DIVISOR_12_13_REG 12 #define RATE_DIVISOR_14_15_REG 13 #define BUFFER_THRESHOLD_REG 14 #define INPUT_DATA_BUFFER_REG 18 SDIINTNotifyParams This structure stores information about an event to be signaled at the time of an errupt. The IOCTL_SDI_REQ_INT_NOTIFY ioctl command uses this structure to notify a particular event that an errupt occurred and to pass on the condition. IntCond contains a condition to be notified, range being 0-6, and Event stores the event to be signaled when the errupt occurs. typedef struct SDIIntNotifyParams { unsigned long IntCond; struct handle Event; SDIIntNotifyParams_t; The errupt condition, IntCond will be one of the following: #define INIT_COMPLETE 0 #define AUTOCAL_COMPLETE 1 #define CHANNELS_READY 2 #define BUFFER_THRES_LOW_TO_HIGH 3 #define BUFFER_THRES_HIGH_TO_LOW 4 #define BUFFER_ALMOST_EMPTY 5 #define BUFFER_ALMOST_FULL 6 SDIGenParams This structure provides information about the rate at which a specified generator should be set. The IOCTL_SDI_SET_GEN_RATE ioctl command uses this structure to set WIRESPEED COMMUNICATIONS CORPORATION 16

17 a generator s rate. Gen specifies the generator, range being 0-3, and Nrate specifies the rate, range being 0x0-0x1FF. The rate is calculated using the provided frequency. typedef struct SDIGenParams { unsigned long Gen; unsigned long Nrate; SDIGenParams_t; The generator, Gen, will be one of the following: #define GEN_A 0 #define GEN_B 1 #define GEN_C 2 #define GEN_D 3 The rate is calculated from the frequency as: #define Fgen_To_Nrate(Fgen) \ ((Fgen < MIN_FGEN)? MIN_NRATE : \ ((Fgen > MAX_FGEN)? MAX_NRATE : \ ROUND_TO_ULONG((Fgen * GEN_MULT) - GEN_OFFSET))) SDIGenAssignParams This structure is used to assign a generator to a group consisting of four channels. The IOCTL_SDI_ASSIGN_GEN_TO_GROUP ioctl command uses this structure to assign a channel group to a specified generator. ChnlGrp contains the channel group, range being 0-3, and GenAssign specifies the generator, range being 0-5. typedef struct SDIGenAssignParams { unsigned long ChnlGrp; unsigned long GenAssign; SDIGenAssignParams_t; The channel group, ChnlGrp, will be one of the following: #define GRP_0 0 #define GRP_1 1 #define GRP_2 2 #define GRP_3 3 The generator group, GenAssign, will be one of the following: #define ASN_GEN_A 0 WIRESPEED COMMUNICATIONS CORPORATION 17

18 #define ASN_GEN_B 1 #define ASN_GEN_C 2 #define ASN_GEN_D 3 #define ASN_EXT_CLK 4 #define ASN_GEN_NONE 5 SDIRateDivParams This structure is used to set the value that divides the assigned rate generator frequency for a specified channel. The IOCTL_SDI_SET_RATE_DIVISOR ioctl command uses this structure to set the channel divisor. Channel specifies the channel, and Divisor specifies the frequency divisor value. The divisor is calculated using the generator frequency and the sampling rate. typedef struct SDIRateDivParams { unsigned long Channel; unsigned long Divisor; SDIRateDivParams_t; The divisor is calculated as: #define Fgen_and_Fsamp_To_Ndiv(Fgen,Fsamp) \ ((Ndiv(Fgen,Fsamp) < MIN_NDIV)? MIN_NDIV : \ ((Ndiv(Fgen,Fsamp) > MAX_NDIV)? MAX_NDIV : \ Ndiv(Fgen,Fsamp))) SDIReadPCIConfigParams This structure stores information about all the PCI Configuration registers. The IOCTL_SDI_READ_PCI_CONFIG ioctl command uses this structure to read all the PCI Configuration registers. typedef struct SDIReadPCIConfigParams { unsigned long DevVenID; unsigned long StatusCmd; unsigned long ClassCodeRevID; unsigned long BISTHdrLineSize; unsigned long RuntimeRegAddr; unsigned long ConfigRegAddr; unsigned long PCIBaseAddr2; unsigned long PCIBaseAddr3; unsigned long UnusedBaseAddr1; unsigned long UnusedBaseAddr2; unsigned long CardbusCISPtr; WIRESPEED COMMUNICATIONS CORPORATION 18

19 unsigned long SubsysVenID; unsigned long PCIRomAddr; unsigned long Reserved1; unsigned long Reserved2; unsigned long MaxMinIntLine; SDIReadPCIConfigParams_t; ConfigRegsParams This structure stores information about all the Local Configuration registers. The IOCTL_SDI_READ_LOCAL_CONFIG ioctl command uses this structure to read and return all the Local Configuration registers. typedef struct ConfigRegsParams { unsigned long PciLocRange0; unsigned long PciLocRemap0; unsigned long ModeArb; unsigned long EndianDescr; unsigned long PciLERomRange; unsigned long PciLERomRemap; unsigned long PciLBRegDescr0; unsigned long LocPciRange; unsigned long LocPciMemBase; unsigned long LocPciIOBase; unsigned long LocPciRemap; unsigned long LocPciConfig; unsigned long OutPostQIntStat; unsigned long OutPostQIntMask; unsigned char Reserved1[8]; unsigned long Mailbox[8]; unsigned long PciLocDoorBell; unsigned long LocPciDoorBell; unsigned long IntCntrlStat; unsigned long RunTimeCntrl; unsigned long DevVenID; unsigned long RevID; unsigned long MailboxReg0; unsigned long MailboxReg1; unsigned long DMAMode0; unsigned long DMAPCIAddr0; unsigned long DMALocalAddr0; unsigned long DMAByteCnt0; unsigned long DMADescrPtr0; unsigned long DMAMode1; unsigned long DMAPCIAddr1; unsigned long DMALocalAddr1; unsigned long DMAByteCount1; unsigned long DMADescrPtr1; unsigned long DMACmdStatus; unsigned long DMAArbitr; WIRESPEED COMMUNICATIONS CORPORATION 19

20 unsigned long DMAThreshold; unsigned char Reserved3[12]; unsigned long MsgUnitCfg; unsigned long QBaseAddr; unsigned long InFreeHeadPtr; unsigned long InFreeTailPtr; unsigned long InPostHeadPtr; unsigned long InPostTailPtr; unsigned long OutFreeHeadPtr; unsigned long OutFreeTailPtr; unsigned long OutPostHeadPtr; unsigned long OutPostTailPtr; unsigned long QStatusCtrl; unsigned char Reserved4[4]; unsigned long PciLocRange1; unsigned long PciLocRemap1; unsigned long PciLBRegDescr1; ConfigRegsParams_t; State_info Software State Management: The driver will keep all the state information for the device. We will define a structure that contains all the information a device requires. It contains poers to the PCI configuration and Configuration Registers. Contents of this structure will change during the course of development. Static struct pci16sdi_state { dev_info_t *dip; pci16sdi_busy; struct pci16sdi_saved_device_state device_state; ddi_iblock_cookie_t high_iblock_cookie; ddi_idevice_cookie_t high_idevice_cookie; kmutex_t high_mu; soft_running; ddi_iblock_cookie_t low_iblock_cookie; kmutex_t low_mu; ddi_softr_t id; partial; nwin; windex; struct SDIReadPCIConfigParams *pciconfigp struct ConfigRegsParams *configregsp ; There is a set of memory management routines (soft state routines) in the Solaris DDI/DKI. These routines dynamically allocate, retrieve, and destroy memory items of a specified size, and hide all the details of list management in a multithreaded kernel. WIRESPEED COMMUNICATIONS CORPORATION 20

21 A state poer will be defined. static void *statep; Routines that will be used are: Initialize the provided state poer - ddi_soft_state_init Allocate space for a certain item - ddi_soft_state_zalloc Retrieve a poer to the indicated item - ddi_get_soft_state Free the memory item - ddi_soft_state_free Finish using the state poer - ddi_soft_state_fini When the module is loaded, the driver calls ddi_soft_state_init to initialize the driver state poer, passing a h indicating how many items to pre-allocate. If more items are needed, the driver will allocate them as necessary. The driver must call ddi_soft_state_fini when the driver is unloaded. To allocate an instance of the soft state structure, the driver calls ddi_soft_state_zalloc. Once the item is allocated, the driver calls ddi_get_soft_state to retrieve the poer to the allocated structure. This is usually done when the device is attached. When the device is detached, the driver calls ddi_soft_state_free to free the memory. System services to access the driver An application will use open, read, and ioctl system level calls to access the driver. The driver will then gain access to the board via a special device file node in the /dev/fbs directory using the kernel-supplied calls like open(2), read(2), and ioctl(2). This section provides working code examples of the system calls that should be used in developing a user application. First, the application has to open the driver: if (( fd = open(szpath, O_RDONLY)) < 0) { prf("open failed for board %d\n", atoi(argv[i])); close (fd); return (-1); else { prf("open succeeded for board %d\n", atoi(argv[i])); ; where, szpath = /dev/fbs/pcisdi_boardnum, example pcisdi_1. The application now has access to the board and can perform the read and ioctl commands.. Here is how to read the contents of the driver: if ((rc = read(fd, bufp, MAX)) > 0) { WIRESPEED COMMUNICATIONS CORPORATION 21

22 prf("reading %d bytes\n", rc); else { prf("read not successful rc=%d, errno=%d\n", rc, errno); The system read call will make a call to the kernel read, which does the DMA read. The read will block until DMA operation completes. The driver ISR will service any non-dma errupts that occur. The user defined kernel data structures, detailed in the Data Structures section, will be used by the system IOCTLs as well. The kernel memory location and user memory location for the data structures are stored separately, therefore the same structures can be used for both. Although the variable names are the same, they are two distinctly different data structures. This method saves time and effort in re-defining the data structures for the system IOCTLs in the user application. For purposes of compilation, the data structures should be defined in a global setting. This is a description of the operation of the kernel and user IOCTL pair. The user process passes in a structure to the driver. The kernel will read those values and store it in a structure in the kernel memory. If the user requests any information, the driver will obtain that information from the board and hands it to the user application. If the user requests that a particular reregister be set, the user sends the driver information, but the driver will not send back any information. The status of the operation will be sent to the user in all cases. Refer the PCI-16SDI Windows NT Device Driver User s Manual, for more information about the user-level IOCTLs. Below is a list of all the system IOCTL calls that can be used to access the driver: regparams.sdireg = BOARD_CTRL_REG; if ((rc = ioctl(fd, IOCTL_SDI_READ_REGISTER, &regparams)) == 0) { prf("ioctl servicing request IOCTL_SDI_READ_REGISTER %x\n", regparams.regvalue); if ((rc = ioctl(fd, IOCTL_SDI_WRITE_REGISTER, &regparams)) == 0) { prf("ioctl servicing request IOCTL_SDI_WRITE_REGISTER\n"); IntNotify.IntCond = INIT_COMPLETE; if ((rc = ioctl(fd, IOCTL_SDI_REQ_INT_NOTIFY, &IntNotify)) == 0) { prf("ioctl servicing request IOCTL_SDI_REQ_INT_NOTIFY %d\n", rc); WIRESPEED COMMUNICATIONS CORPORATION 22

23 InputRange = RANGE_1p25V; if ((rc = ioctl(fd, IOCTL_SDI_SET_INPUT_RANGE, &InputRange))== 0){ prf("ioctl servicing request IOCTL_SDI_SET_INPUT_RANGE\n"); ModeDiff = MODE_DIFFERENTIAL; if ((rc = ioctl(fd, IOCTL_SDI_SET_INPUT_MODE, &ModeDiff)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_INPUT_MODE\n"); if ((rc = ioctl(fd, IOCTL_SDI_SET_SW_SYNC)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_SW_SYNC\n"); if ((rc = ioctl(fd, IOCTL_SDI_AUTO_CAL)) == 0) { prf("ioctl servicing request IOCTL_SDI_AUTO_CAL\n"); if ((rc = ioctl(fd, IOCTL_SDI_INITIALIZE)) == 0) { prf("ioctl servicing request IOCTL_SDI_INITIALIZE\n"); DataFormat = FORMAT_TWOS_COMPLEMENT; if ((rc = ioctl(fd, IOCTL_SDI_SET_DATA_FORMAT, &DataFormat))== 0){ prf("ioctl servicing request IOCTL_SDI_SET_DATA_FORMAT\n"); InitiatorMode = INITIATOR_MODE; if ((rc = ioctl(fd, IOCTL_SDI_SET_INITIATOR_MODE, &InitiatorMode)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_INITIATOR_MODE\n"); BufThreshold = 0x0003FF00; if ((rc = ioctl(fd, IOCTL_SDI_SET_BUFFER_THRESHOLD, &BufThreshold)) == 0) { prf("ioctl servicing requestioctl_sdi_set_buffer_threshold\n"); if ((rc = ioctl(fd, IOCTL_SDI_CLEAR_BUFFER)) == 0) { prf("ioctl servicing request IOCTL_SDI_CLEAR_BUFFER\n"); Acquire = START_ACQUIRE; if ((rc = ioctl(fd, IOCTL_SDI_SET_ACQUIRE_MODE, &Acquire) == 0) { prf("ioctl servicing requestioctl_sdi_set_acquire_mode\n"); GenParams.Gen = 1; GenParams.Nrate = 0x40; WIRESPEED COMMUNICATIONS CORPORATION 23

24 if ((rc = ioctl(fd, IOCTL_SDI_SET_GEN_RATE, &GenParams)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_GEN_RATE\n"); GenAssign.ChnlGrp = GRP_0; GenAssign.GenAssign = ASN_GEN_A; if ((rc = ioctl(fd, IOCTL_SDI_ASSIGN_GEN_TO_GROUP, &GenAssign)) == 0) { prf("ioctl servicing request IOCTL_SDI_ASSIGN_GEN_TO_GROUP\n"); RateDivParams.Channel = 5; RateDivParams.Divisor = Fgen_and_Fsamp_To_Ndiv( , 44.0); if ((rc = ioctl(fd, IOCTL_SDI_SET_RATE_DIVISOR, &RateDivParams)) == 0) { prf("ioctl servicing requestioctl_sdi_set_rate_divisor\n"); ErrorCode = SDI_SUCCESS; if ((rc = ioctl(fd, IOCTL_SDI_GET_DEVICE_ERROR, &ErrorCode))== 0){ prf("ioctl servicing request IOCTL_SDI_GET_DEVICE_ERROR\n"); if ((rc = ioctl(fd, IOCTL_SDI_READ_PCI_CONFIG, &ConfigRegs))== 0){ prf("ioctl servicing request IOCTL_SDI_READ_PCI_CONFIG\n"); if ((rc = ioctl(fd, IOCTL_SDI_READ_LOCAL_CONFIG, &LocalConfigRegs)) == 0) { prf("ioctl servicing request IOCTL_SDI_READ_LOCAL_CONFIG\n"); if ((rc = ioctl(fd, IOCTL_SDI_WRITE_PCI_CONFIG_REG, &regparams)) == 0) { prf("ioctl servicing request IOCTL_SDI_WRITE_PCI_CONFIG_REG\n"); if ((rc = ioctl(fd, IOCTL_SDI_WRITE_PCI_CONFIG_REG, &regparams)) == 0) { prf("ioctl servicing request IOCTL_SDI_WRITE_PCI_CONFIG_REG\n"); timeout = 0x ; if ((rc = ioctl(fd, IOCTL_SDI_SET_TIMEOUT, &timeout)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_TIMEOUT\n"); WIRESPEED COMMUNICATIONS CORPORATION 24

25 enable = 1; if ((rc = ioctl(fd, IOCTL_SDI_SET_DMA_ENABLE, &enable)) == 0) { prf("ioctl servicing request IOCTL_SDI_SET_DMA_ENABLE\n"); Startup/Shutdown Testing The startup logic is implemented as a shell script and is executed during the system boot process. The startup script will check for the existence of devices and will ensure that the appropriate special device entries are present in the /dev/fbs directory. The shutdown script will simply report the device to the initialization logic so that it can be added to the system log, but this addition will serve no other purpose. The General Standards demo test setup consisting of a system with 16AO12 board and test programs will be used to test the Solaris PCI-16SDI driver. The 16AO12 adapter is a 12-channel analog I/O board providing high-speed 16-bit analog output. The following test programs will be used: SDITest.exe SDIProdT.exe The SDITest demo program provides for displaying a block of data on the screen in Hex format. All the IOCTL commands can be tested here. SDIProdT demo program comes up with a window that allows the user to select different board options, do auto-calibration, and select waveform display. When waveform display is selected, the sixteen channels of input data are displayed as waveforms with the starting value pred at the left of the screen. Glossary PCI Peripheral Component Interconnect. ISR Interrupt Service Routine. WIRESPEED COMMUNICATIONS CORPORATION 25

26 Bibliography 1. Writing Device Drivers, Sun Microsystems, October PCI-16SDI Windows NT Device Driver User s Manual, General Standards, PCI 9080 Data Book, PLX Technology, January WIRESPEED COMMUNICATIONS CORPORATION 26

24DSI32 24DSI12 24-bit, 32 Channel Delta-Sigma A/D Boards

24DSI32 24DSI12 24-bit, 32 Channel Delta-Sigma A/D Boards 24DSI32 24DSI12 24-bit, 32 Channel Delta-Sigma A/D Boards PCI-24DSI32 PMC-24DSI12 Linux Device Driver User Manual Manual Revision: July 7, 2005 General Standards Corporation 8302A Whitesburg Drive Huntsville,

More information

OPTO32A 24 Input Bit, 8 Output Bit Optical Isolator Board

OPTO32A 24 Input Bit, 8 Output Bit Optical Isolator Board OPTO32A 24 Input Bit, 8 Output Bit Optical Isolator Board PMC-OPTO32A Linux Device Driver User Manual Manual Revision: July 15, 2005 General Standards Corporation 8302A Whitesburg Drive Huntsville, AL

More information

TIP120-SW-42. VxWorks Device Driver. Motion Controller with Incremental Encoder Interface. Version 2.1.x. User Manual. Issue 2.1.

TIP120-SW-42. VxWorks Device Driver. Motion Controller with Incremental Encoder Interface. Version 2.1.x. User Manual. Issue 2.1. The Embedded I/O Company TIP120-SW-42 VxWorks Device Driver Motion Controller with Incremental Encoder Interface Version 2.1.x User Manual Issue 2.1.0 May 2010 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469

More information

TPMC821-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. INTERBUS Master G4 PMC. Version 1.4. Issue 1.

TPMC821-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. INTERBUS Master G4 PMC. Version 1.4. Issue 1. The Embedded I/O Company TPMC821-SW-42 VxWorks Device Driver INTERBUS Master G4 PMC Version 1.4 User Manual Issue 1.2 January 2004 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek / Germany Phone:

More information

TIP700-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. Digital Output 24V DC. Version 2.0.x. Issue June 2008.

TIP700-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. Digital Output 24V DC. Version 2.0.x. Issue June 2008. The Embedded I/O Company TIP700-SW-42 VxWorks Device Driver Digital Output 24V DC Version 2.0.x User Manual Issue 2.0.1 June 2008 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 Phone: +49 (0) 4101 4058 0 25469 Halstenbek,

More information

TPMC868-SW-42. VxWorks Device Driver. 16 Channel Serial PMC. Version 2.1.x. User Manual. Issue December 2011

TPMC868-SW-42. VxWorks Device Driver. 16 Channel Serial PMC. Version 2.1.x. User Manual. Issue December 2011 The Embedded I/O Company TPMC868-SW-42 VxWorks Device Driver 16 Channel Serial PMC Version 2.1.x User Manual Issue 2.1.0 December 2011 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany Phone:

More information

TPMC500-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. 32 Channel 12 Bit ADC. Version 2.0.x. Issue 2.0.

TPMC500-SW-42. VxWorks Device Driver. User Manual. The Embedded I/O Company. 32 Channel 12 Bit ADC. Version 2.0.x. Issue 2.0. The Embedded I/O Company TPMC500-SW-42 VxWorks Device Driver 32 Channel 12 Bit ADC Version 2.0.x User Manual Issue 2.0.0 October 2004 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 e-mail: info@tews.com 25469 Halstenbek

More information

Release Notes CCURDSCC (WC-AD3224-DS)

Release Notes CCURDSCC (WC-AD3224-DS) Release Notes CCURDSCC (WC-AD3224-DS) Driver ccurdscc (WC-AD3224-DS) Rev 6.3 OS RedHawk Rev 6.3 Vendor Concurrent Computer Corporation Hardware PCIe 32-Channel Delta Sigma Converter Card (CP-AD3224-DS)

More information

TIP675-SW-82. Linux Device Driver. 48 TTL I/O Lines with Interrupts Version 1.2.x. User Manual. Issue November 2013

TIP675-SW-82. Linux Device Driver. 48 TTL I/O Lines with Interrupts Version 1.2.x. User Manual. Issue November 2013 The Embedded I/O Company TIP675-SW-82 Linux Device Driver 48 TTL I/O Lines with Interrupts Version 1.2.x User Manual Issue 1.2.5 November 2013 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany

More information

VxWorks Device Driver User s Manual

VxWorks Device Driver User s Manual . Chandler/May, Inc. CMI 125 West Park Loop Huntsville, AL 36806 Phone 256.722.0175 Fax 256.722.0144 VxWorks Device Driver User s Manual.......... VxWorks Device Driver Software for the General Standards

More information

M O T O R O L A C O M P U T E R G R O U P VME DRIVER FOR LINUX USER GUIDE

M O T O R O L A C O M P U T E R G R O U P VME DRIVER FOR LINUX USER GUIDE M O T O R O L A C O M P U T E R G R O U P VME DRIVER FOR LINUX USER GUIDE VME driver INTRODUCTION The VME driver provides a programmatic erface which application programs may use to configure and control

More information

Advcan QNX Driver User Manual V1.02

Advcan QNX Driver User Manual V1.02 Advcan QNX Driver User Manual V1.02 Contents 1. Introduction...1 1.1. System Requirement...1 1.2. Driver configuration...1 2. AdvCan Data Structures...2 2.1. Canmsg_t Struct Reference...2 2.2. CanStatusPar

More information

TIP610-SW-95 QNX-Neutrino Device Driver TIP610 16/20 Channel Digital I/O on SBS PCI40 Carrier

TIP610-SW-95 QNX-Neutrino Device Driver TIP610 16/20 Channel Digital I/O on SBS PCI40 Carrier TIP610-SW-95 QNX-Neutrino Device Driver TIP610 16/20 Channel Digital I/O on SBS PCI40 Carrier Version 1.0.x Reference Manual Issue 1.0 January 2002 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 D-25469 Halstenbek

More information

TPMC851-SW-42. VxWorks Device Driver. Multifunction I/O (16 bit ADC/DAC, TTL I/O, Counter) Version 2.0.x. User Manual. Issue 2.0.

TPMC851-SW-42. VxWorks Device Driver. Multifunction I/O (16 bit ADC/DAC, TTL I/O, Counter) Version 2.0.x. User Manual. Issue 2.0. The Embedded I/O Company TPMC851-SW-42 VxWorks Device Driver Multifunction I/O (16 bit ADC/DAC, TTL I/O, Counter) Version 2.0.x User Manual Issue 2.0.1 March 2010 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469

More information

Drivers in the OpenSolaris Operating System. John Sonnenschein Software Engineer Sun Microsystems

Drivers in the OpenSolaris Operating System. John Sonnenschein Software Engineer Sun Microsystems Drivers in the OpenSolaris Operating System John Sonnenschein Software Engineer Sun Microsystems Basics of Drivers Devices live on a device tree Files each node is a device tree shows physical location,

More information

- Knowledge of basic computer architecture and organization, ECE 445

- Knowledge of basic computer architecture and organization, ECE 445 ECE 446: Device Driver Development Fall 2014 Wednesdays 7:20-10 PM Office hours: Wednesdays 6:15-7:15 PM or by appointment, Adjunct office Engineering Building room 3707/3708 Last updated: 8/24/14 Instructor:

More information

The Embedded I/O Company TIP700-SW-82 Linux Device Driver User Manual TEWS TECHNOLOGIES GmbH TEWS TECHNOLOGIES LLC

The Embedded I/O Company TIP700-SW-82 Linux Device Driver User Manual TEWS TECHNOLOGIES GmbH TEWS TECHNOLOGIES LLC The Embedded I/O Company TIP700-SW-82 Linux Device Driver Digital Output 24V DC Version 1.2.x User Manual Issue 1.2.1 February 2009 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 Phone: +49 (0) 4101 4058 0 25469

More information

Windows Device Driver and API Reference Manual

Windows Device Driver and API Reference Manual Windows Device Driver and API Reference Manual 797 North Grove Rd, Suite 101 Richardson, TX 75081 Phone: (972) 671-9570 www.redrapids.com Red Rapids Red Rapids reserves the right to alter product specifications

More information

Module 11: I/O Systems

Module 11: I/O Systems Module 11: I/O Systems Reading: Chapter 13 Objectives Explore the structure of the operating system s I/O subsystem. Discuss the principles of I/O hardware and its complexity. Provide details on the performance

More information

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto

Ricardo Rocha. Department of Computer Science Faculty of Sciences University of Porto Ricardo Rocha Department of Computer Science Faculty of Sciences University of Porto Slides based on the book Operating System Concepts, 9th Edition, Abraham Silberschatz, Peter B. Galvin and Greg Gagne,

More information

Release Notes CCURDSCC (WC-AD3224-DS)

Release Notes CCURDSCC (WC-AD3224-DS) Release Notes CCURDSCC (WC-AD3224-DS) Driver ccurdscc (WC-AD3224-DS) v 23.0.1 OS RedHawk Vendor Concurrent Real-Time, Inc. Hardware PCIe 32-Channel Delta Sigma Converter Card (CP- AD3224-DS) (CP-AD3224-DS-10)

More information

spwr_base & spwr_chan

spwr_base & spwr_chan DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA 95060 831-457-8891 Fax 831-457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 spwr_base & spwr_chan Linux Driver Documentation Manual Revision

More information

I/O Systems. Jo, Heeseung

I/O Systems. Jo, Heeseung I/O Systems Jo, Heeseung Today's Topics Device characteristics Block device vs. Character device Direct I/O vs. Memory-mapped I/O Polling vs. Interrupts Programmed I/O vs. DMA Blocking vs. Non-blocking

More information

CARRIER-SW-82. Linux Device Driver. IPAC Carrier Version 2.2.x. User Manual. Issue November 2017

CARRIER-SW-82. Linux Device Driver. IPAC Carrier Version 2.2.x. User Manual. Issue November 2017 The Embedded I/O Company CARRIER-SW-82 Linux Device Driver IPAC Carrier Version 2.2.x User Manual Issue 2.2.0 November 2017 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany Phone: +49 (0)

More information

Laboratory Assignment #3. Extending scull, a char pseudo-device

Laboratory Assignment #3. Extending scull, a char pseudo-device Laboratory Assignment #3 Extending scull, a char pseudo-device Value: (See the Grading section of the Syllabus.) Due Date and Time: (See the Course Calendar.) Summary: This is your first exercise that

More information

Interrupts and Timers

Interrupts and Timers Indian Institute of Technology Bombay CS684/CS308 Embedded Systems Interrupts and Timers E.R.T.S. Lab 1 Lab Objective This lab will introduce you to the use of Timers and Interrupts on the TM4C123GH6PM.

More information

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors)

Ausgewählte Betriebssysteme - Mark Russinovich & David Solomon (used with permission of authors) Outline Windows 2000 - The I/O Structure Ausgewählte Betriebssysteme Institut Betriebssysteme Fakultät Informatik Components of I/O System Plug n Play Management Power Management I/O Data Structures File

More information

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1

GLOSSARY. VisualDSP++ Kernel (VDK) User s Guide B-1 B GLOSSARY Application Programming Interface (API) A library of C/C++ functions and assembly macros that define VDK services. These services are essential for kernel-based application programs. The services

More information

TPMC815-SW-72. LynxOS Device Driver. User Manual. The Embedded I/O Company. ARCNET Controller. Version 1.0.x. Issue 1.0 May 2004

TPMC815-SW-72. LynxOS Device Driver. User Manual. The Embedded I/O Company. ARCNET Controller. Version 1.0.x. Issue 1.0 May 2004 The Embedded I/O Company TPMC815-SW-72 LynxOS Device Driver ARCNET Controller Version 1.0.x User Manual Issue 1.0 May 2004 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek / Germany Phone: +49-(0)4101-4058-0

More information

Concurrency, Thread. Dongkun Shin, SKKU

Concurrency, Thread. Dongkun Shin, SKKU Concurrency, Thread 1 Thread Classic view a single point of execution within a program a single PC where instructions are being fetched from and executed), Multi-threaded program Has more than one point

More information

Table of Contents. Preface... xi

Table of Contents. Preface... xi ,ldr3toc.fm.4587 Page v Thursday, January 20, 2005 9:30 AM Table of Contents Preface................................................................. xi 1. An Introduction to Device Drivers.....................................

More information

20-EECE-4029 Operating Systems Fall, 2015 John Franco

20-EECE-4029 Operating Systems Fall, 2015 John Franco 20-EECE-4029 Operating Systems Fall, 2015 John Franco First Exam Question 1: Barrier name: a) Describe, in general terms, what a barrier is trying to do Undo some of the optimizations that processor hardware

More information

DYNAMIC ENGINEERING. 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING. 150 DuBois, Suite C Santa Cruz, CA (831) Fax (831) Est. DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA 95060 (831) 457-8891 Fax (831) 457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 PMC Biserial S311 Software Manual Driver Documentation Developed

More information

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA Fax Est. DYNAMIC ENGINEERING 150 DuBois St. Suite C, Santa Cruz, CA 95060 831-457-8891 Fax 831-457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 PCIeBiSerialDb37-LM9 Linux Driver lm9_base & lm9_chan Linux

More information

Processes and Threads. Processes and Threads. Processes (2) Processes (1)

Processes and Threads. Processes and Threads. Processes (2) Processes (1) Processes and Threads (Topic 2-1) 2 홍성수 Processes and Threads Question: What is a process and why is it useful? Why? With many things happening at once in a system, need some way of separating them all

More information

Device-Functionality Progression

Device-Functionality Progression Chapter 12: I/O Systems I/O Hardware I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Incredible variety of I/O devices Common concepts Port

More information

Chapter 12: I/O Systems. I/O Hardware

Chapter 12: I/O Systems. I/O Hardware Chapter 12: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations I/O Hardware Incredible variety of I/O devices Common concepts Port

More information

Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved

Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview Use Cases Architecture Features Copyright Jaluna SA. All rights reserved C5 Micro-Kernel: Real-Time Services for Embedded and Linux Systems Copyright 2003- Jaluna SA. All rights reserved. JL/TR-03-31.0.1 1 Outline Background Jaluna-1 Presentation Jaluna-2 Presentation Overview

More information

The control of I/O devices is a major concern for OS designers

The control of I/O devices is a major concern for OS designers Lecture Overview I/O devices I/O hardware Interrupts Direct memory access Device dimensions Device drivers Kernel I/O subsystem Operating Systems - June 26, 2001 I/O Device Issues The control of I/O devices

More information

Operating Systems 2010/2011

Operating Systems 2010/2011 Operating Systems 2010/2011 Input/Output Systems part 1 (ch13) Shudong Chen 1 Objectives Discuss the principles of I/O hardware and its complexity Explore the structure of an operating system s I/O subsystem

More information

Chapter 2 Operating-System Structures

Chapter 2 Operating-System Structures This chapter will discuss the following concepts: 2.1 Operating System Services 2.2 User Operating System Interface 2.3 System Calls 2.4 System Programs 2.5 Operating System Design and Implementation 2.6

More information

Module 1. Introduction:

Module 1. Introduction: Module 1 Introduction: Operating system is the most fundamental of all the system programs. It is a layer of software on top of the hardware which constitutes the system and manages all parts of the system.

More information

Lecture 15: I/O Devices & Drivers

Lecture 15: I/O Devices & Drivers CS 422/522 Design & Implementation of Operating Systems Lecture 15: I/O Devices & Drivers Zhong Shao Dept. of Computer Science Yale University Acknowledgement: some slides are taken from previous versions

More information

TDRV006-SW-42. VxWorks Device Driver. 64 Digital Inputs/Outputs (Bit I/O) Version 4.0.x. User Manual. Issue December 2017

TDRV006-SW-42. VxWorks Device Driver. 64 Digital Inputs/Outputs (Bit I/O) Version 4.0.x. User Manual. Issue December 2017 The Embedded I/O Company TDRV006-SW-42 VxWorks Device Driver 64 Digital Inputs/Outputs (Bit I/O) Version 4.0.x User Manual Issue 4.0.0 December 2017 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek,

More information

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads

Chapter 4: Threads. Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Overview Multithreading Models Thread Libraries Threading Issues Operating System Examples Windows XP Threads Linux Threads Chapter 4: Threads Objectives To introduce the notion of a

More information

Chapter 13: I/O Systems

Chapter 13: I/O Systems Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Streams Performance Objectives Explore the structure of an operating

More information

PCI to SH-3 AN Hitachi SH3 to PCI bus

PCI to SH-3 AN Hitachi SH3 to PCI bus PCI to SH-3 AN Hitachi SH3 to PCI bus Version 1.0 Application Note FEATURES GENERAL DESCRIPTION Complete Application Note for designing a PCI adapter or embedded system based on the Hitachi SH-3 including:

More information

Comp 204: Computer Systems and Their Implementation. Lecture 18: Devices

Comp 204: Computer Systems and Their Implementation. Lecture 18: Devices Comp 204: Computer Systems and Their Implementation Lecture 18: Devices 1 Today Devices Introduction Handling I/O Device handling Buffering and caching 2 Operating System An Abstract View User Command

More information

Process Characteristics. Threads Chapter 4. Process Characteristics. Multithreading vs. Single threading

Process Characteristics. Threads Chapter 4. Process Characteristics. Multithreading vs. Single threading Process Characteristics Threads Chapter 4 Reading: 4.1,4.4, 4.5 Unit of resource ownership - process is allocated: a virtual address space to hold the process image control of some resources (files, I/O

More information

Threads Chapter 4. Reading: 4.1,4.4, 4.5

Threads Chapter 4. Reading: 4.1,4.4, 4.5 Threads Chapter 4 Reading: 4.1,4.4, 4.5 1 Process Characteristics Unit of resource ownership - process is allocated: a virtual address space to hold the process image control of some resources (files,

More information

Devices. Today. Comp 104: Operating Systems Concepts. Operating System An Abstract View 05/01/2017. Devices. Devices

Devices. Today. Comp 104: Operating Systems Concepts. Operating System An Abstract View 05/01/2017. Devices. Devices Comp 104: Operating Systems Concepts Devices Today Devices Introduction Handling I/O Device handling Buffering and caching 1 2 Operating System An Abstract View User Command Interface Processor Manager

More information

CHAPI/VAX-Qbus. The CHARON-VAX Application Programming Interface (CHAPI) for Qbus peripheral emulation in Windows

CHAPI/VAX-Qbus. The CHARON-VAX Application Programming Interface (CHAPI) for Qbus peripheral emulation in Windows CHAPI/VAX-Qbus The CHARON-VAX Application Programming Interface (CHAPI) for Qbus peripheral emulation in Windows CHAPI/VAX-Qbus The CHARON-VAX Application Programming Interface (CHAPI) for Qbus peripheral

More information

TIP670-SW-95. QNX-Neutrino Device Driver. User Manual. The Embedded I/O Company. Digital I/O. Version 1.0.x. Issue August 2008.

TIP670-SW-95. QNX-Neutrino Device Driver. User Manual. The Embedded I/O Company. Digital I/O. Version 1.0.x. Issue August 2008. The Embedded I/O Company TIP670-SW-95 QNX-Neutrino Device Driver Digital I/O Version 1.0.x User Manual Issue 1.0.0 August 2008 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 Phone: +49 (0) 4101 4058 0 25469 Halstenbek,

More information

OPERATING SYSTEMS OVERVIEW. Operating Systems 2015 Spring by Euiseong Seo

OPERATING SYSTEMS OVERVIEW. Operating Systems 2015 Spring by Euiseong Seo OPERATING SYSTEMS OVERVIEW Operating Systems 2015 Spring by Euiseong Seo What is an Operating System? A program that acts as an intermediary between a user of a computer and computer hardware Operating

More information

Module 12: I/O Systems

Module 12: I/O Systems Module 12: I/O Systems I/O hardwared Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Performance 12.1 I/O Hardware Incredible variety of I/O devices Common

More information

CS 134. Operating Systems. April 8, 2013 Lecture 20. Input/Output. Instructor: Neil Rhodes. Monday, April 7, 14

CS 134. Operating Systems. April 8, 2013 Lecture 20. Input/Output. Instructor: Neil Rhodes. Monday, April 7, 14 CS 134 Operating Systems April 8, 2013 Lecture 20 Input/Output Instructor: Neil Rhodes Hardware How hardware works Operating system layer What the kernel does API What the programmer does Overview 2 kinds

More information

Input / Output. Kevin Webb Swarthmore College April 12, 2018

Input / Output. Kevin Webb Swarthmore College April 12, 2018 Input / Output Kevin Webb Swarthmore College April 12, 2018 xkcd #927 Fortunately, the charging one has been solved now that we've all standardized on mini-usb. Or is it micro-usb? Today s Goals Characterize

More information

Computer Organization ECE514. Chapter 5 Input/Output (9hrs)

Computer Organization ECE514. Chapter 5 Input/Output (9hrs) Computer Organization ECE514 Chapter 5 Input/Output (9hrs) Learning Outcomes Course Outcome (CO) - CO2 Describe the architecture and organization of computer systems Program Outcome (PO) PO1 Apply knowledge

More information

Chapter 13: I/O Systems

Chapter 13: I/O Systems Chapter 13: I/O Systems Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Streams Performance 13.2 Silberschatz, Galvin

More information

Chapter 13: I/O Systems. Chapter 13: I/O Systems. Objectives. I/O Hardware. A Typical PC Bus Structure. Device I/O Port Locations on PCs (partial)

Chapter 13: I/O Systems. Chapter 13: I/O Systems. Objectives. I/O Hardware. A Typical PC Bus Structure. Device I/O Port Locations on PCs (partial) Chapter 13: I/O Systems Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Streams Performance 13.2 Silberschatz, Galvin

More information

Sun Microsystems, Inc Garcia Avenue Mountain View, CA U.S.A. SunOS Reference Manual

Sun Microsystems, Inc Garcia Avenue Mountain View, CA U.S.A. SunOS Reference Manual Sun Microsystems, Inc. 2550 Garcia Avenue Mountain View, CA 94043 U.S.A. SunOS Reference Manual 1994 Sun Microsystems, Inc. All rights reserved. 2550 Garcia Avenue, Mountain View, California 94043-1100

More information

ICP2432-to-PCI Host Protocol Specification DC A

ICP2432-to-PCI Host Protocol Specification DC A ICP2432-to-PCI Host Protocol Specification DC 900-1509A Simpact, Inc. 9210 Sky Park Court San Diego, CA 92123 April 1997 Simpact, Inc. 9210 Sky Park Court San Diego, CA 92123 (619) 565-1865 ICP2432-to-PCI

More information

CSX600 Runtime Software. User Guide

CSX600 Runtime Software. User Guide CSX600 Runtime Software User Guide Version 3.0 Document No. 06-UG-1345 Revision: 3.D January 2008 Table of contents Table of contents 1 Introduction................................................ 7 2

More information

ADADIO 12 Channel, 16-bit A/D-D/A I/O With 8-bit Discrete Digital I/O

ADADIO 12 Channel, 16-bit A/D-D/A I/O With 8-bit Discrete Digital I/O ADADIO 12 Channel, 16-bit A/D-D/A I/O With 8-bit Discrete Digital I/O PMC-ADADIO Linux Device Driver User Manual Manual Revision: January 25, 2005 General Standards Corporation 8302A Whitesburg Drive Huntsville,

More information

PcieAltBase & PcieAltChan

PcieAltBase & PcieAltChan DYNAMIC ENGINEERING 150 DuBois, Suite C Santa Cruz, CA 95060 (831) 457-8891 Fax (831) 457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 PcieAltBase & PcieAltChan WDF Driver Documentation For the

More information

I/O Systems. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University

I/O Systems. Jinkyu Jeong Computer Systems Laboratory Sungkyunkwan University I/O Systems Jinkyu Jeong (jinkyu@skku.edu) Computer Systems Laboratory Sungkyunkwan University http://csl.skku.edu Today s Topics Device characteristics Block device vs. Character device Direct I/O vs.

More information

Computer Architecture

Computer Architecture Instruction Cycle Computer Architecture Program Execution and Instruction Sets INFO 2603 Platform Technologies The basic function performed by a computer is the execution of a program, which is a set of

More information

Input/Output Problems. External Devices. Input/Output Module. I/O Steps. I/O Module Function Computer Architecture

Input/Output Problems. External Devices. Input/Output Module. I/O Steps. I/O Module Function Computer Architecture 168 420 Computer Architecture Chapter 6 Input/Output Input/Output Problems Wide variety of peripherals Delivering different amounts of data At different speeds In different formats All slower than CPU

More information

TIP114-SW-72. LynxOS Device Driver. User Manual. The Embedded I/O Company. 10 Channel Absolute Encoder Interface (SSI) Version 1.0.

TIP114-SW-72. LynxOS Device Driver. User Manual. The Embedded I/O Company. 10 Channel Absolute Encoder Interface (SSI) Version 1.0. The Embedded I/O Company TIP114-SW-72 LynxOS Device Driver 10 Channel Absolute Encoder Interface (SSI) Version 1.0.0 User Manual Issue 1.0 February 2004 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek

More information

I/O AND DEVICE HANDLING Operating Systems Design Euiseong Seo

I/O AND DEVICE HANDLING Operating Systems Design Euiseong Seo I/O AND DEVICE HANDLING 2016 Operating Systems Design Euiseong Seo (euiseong@skku.edu) I/O Hardware Incredible variety of I/O devices Common concepts Port Bus (daisy chain or shared direct access) Controller

More information

Module 12: I/O Systems

Module 12: I/O Systems Module 12: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Performance Operating System Concepts 12.1 Silberschatz and Galvin c

More information

Thread. Disclaimer: some slides are adopted from the book authors slides with permission 1

Thread. Disclaimer: some slides are adopted from the book authors slides with permission 1 Thread Disclaimer: some slides are adopted from the book authors slides with permission 1 IPC Shared memory Recap share a memory region between processes read or write to the shared memory region fast

More information

Operating Systems. Operating System Structure. Lecture 2 Michael O Boyle

Operating Systems. Operating System Structure. Lecture 2 Michael O Boyle Operating Systems Operating System Structure Lecture 2 Michael O Boyle 1 Overview Architecture impact User operating interaction User vs kernel Syscall Operating System structure Layers Examples 2 Lower-level

More information

PCI-16HSDI: 16-Bit, Six-Channel Sigma-Delta Analog Input PMC Board. With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks

PCI-16HSDI: 16-Bit, Six-Channel Sigma-Delta Analog Input PMC Board. With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks PMC-16HSDI 16-Bit, Six-Channel Sigma-Delta Analog Input PMC Board With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks Available also in PCI, cpci and PC104-Plus form factors as: PCI-16HSDI:

More information

Laboratory Assignment #3. Extending scull, a char pseudo-device. Summary: Objectives: Tasks:

Laboratory Assignment #3. Extending scull, a char pseudo-device. Summary: Objectives: Tasks: Laboratory Assignment #3 Extending scull, a char pseudo-device Value: (See the Grading section of the Syllabus.) Due Date and Time: (See the Course Calendar.) Summary: This is your first exercise that

More information

Input/Output Systems

Input/Output Systems Input/Output Systems CSCI 315 Operating Systems Design Department of Computer Science Notice: The slides for this lecture have been largely based on those from an earlier edition of the course text Operating

More information

Interrupt/Timer/DMA 1

Interrupt/Timer/DMA 1 Interrupt/Timer/DMA 1 Exception An exception is any condition that needs to halt normal execution of the instructions Examples - Reset - HWI - SWI 2 Interrupt Hardware interrupt Software interrupt Trap

More information

OPERATING SYSTEMS: Lesson 1: Introduction to Operating Systems

OPERATING SYSTEMS: Lesson 1: Introduction to Operating Systems OPERATING SYSTEMS: Lesson 1: Introduction to Jesús Carretero Pérez David Expósito Singh José Daniel García Sánchez Francisco Javier García Blas Florin Isaila 1 Why study? a) OS, and its internals, largely

More information

CS 326: Operating Systems. Process Execution. Lecture 5

CS 326: Operating Systems. Process Execution. Lecture 5 CS 326: Operating Systems Process Execution Lecture 5 Today s Schedule Process Creation Threads Limited Direct Execution Basic Scheduling 2/5/18 CS 326: Operating Systems 2 Today s Schedule Process Creation

More information

PC104P-16AO20 20-Channel 16-Bit High-Speed Analog Output PC104-Plus Board With 440,000 Samples per Second per Channel, and Simultaneous Clocking

PC104P-16AO20 20-Channel 16-Bit High-Speed Analog Output PC104-Plus Board With 440,000 Samples per Second per Channel, and Simultaneous Clocking PC104P-16AO20 20-Channel 16-Bit High-Speed Analog Output PC104-Plus Board With 440,000 Samples per Second per Channel, and Simultaneous Clocking Features Include: 20 Precision High-Speed Analog Output

More information

Chapter 13: I/O Systems

Chapter 13: I/O Systems Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations Streams Performance I/O Hardware Incredible variety of I/O devices Common

More information

Unit 2 : Computer and Operating System Structure

Unit 2 : Computer and Operating System Structure Unit 2 : Computer and Operating System Structure Lesson 1 : Interrupts and I/O Structure 1.1. Learning Objectives On completion of this lesson you will know : what interrupt is the causes of occurring

More information

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est

DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif Fax Est DYNAMIC ENGINEERING 435 Park Dr., Ben Lomond, Calif. 95005 831-336-8891 Fax 831-336-3840 http://www.dyneng.com sales@dyneng.com Est. 1988 User Manual PCI LVDS 8R Driver Documentation Revision A Corresponding

More information

Chapter 13: I/O Systems

Chapter 13: I/O Systems Chapter 13: I/O Systems DM510-14 Chapter 13: I/O Systems I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O Requests to Hardware Operations STREAMS Performance 13.2 Objectives

More information

VxWorks Device Driver User s Manual

VxWorks Device Driver User s Manual . Chandler/May, Inc. CMI 125 West Park Loop Huntsville, AL 36806 Phone 256.722.0175 Fax 256.722.0144 VxWorks Device Driver User s Manual.......... VxWorks Device Driver Software for the General Standards

More information

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA Fax Est.

DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA Fax Est. DYNAMIC ENGINEERING 150 DuBois St., Suite C Santa Cruz, CA 95060 831-457-8891 Fax 831-457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 IpTest WDF Driver Documentation For the IP-Test module Developed

More information

Silberschatz and Galvin Chapter 12

Silberschatz and Galvin Chapter 12 Silberschatz and Galvin Chapter 12 I/O Systems CPSC 410--Richard Furuta 3/19/99 1 Topic overview I/O Hardware Application I/O Interface Kernel I/O Subsystem Transforming I/O requests to hardware operations

More information

CPCI-16HSDI. 16-Bit, Six-Channel Sigma-Delta Analog Input Board. With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks.

CPCI-16HSDI. 16-Bit, Six-Channel Sigma-Delta Analog Input Board. With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks. 02/01/01 CPCI-16HSDI 16-Bit, Six-Channel Sigma-Delta Analog Input Board With 1.1 MSPS Sample Rate per Channel, and Two Independent Clocks Features Include: Sigma-Delta Conversion; No External Antialiasing

More information

I/O Handling. ECE 650 Systems Programming & Engineering Duke University, Spring Based on Operating Systems Concepts, Silberschatz Chapter 13

I/O Handling. ECE 650 Systems Programming & Engineering Duke University, Spring Based on Operating Systems Concepts, Silberschatz Chapter 13 I/O Handling ECE 650 Systems Programming & Engineering Duke University, Spring 2018 Based on Operating Systems Concepts, Silberschatz Chapter 13 Input/Output (I/O) Typical application flow consists of

More information

Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment

Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment Artisan Technology Group is your source for quality new and certified-used/pre-owned equipment FAST SHIPPING AND DELIVERY TENS OF THOUSANDS OF IN-STOCK ITEMS EQUIPMENT DEMOS HUNDREDS OF MANUFACTURERS SUPPORTED

More information

DYNAMIC ENGINEERING 150 DuBois Suite C Santa Cruz, CA (831) Fax (831) Est.

DYNAMIC ENGINEERING 150 DuBois Suite C Santa Cruz, CA (831) Fax (831) Est. DYNAMIC ENGINEERING 150 DuBois Suite C Santa Cruz, CA. 95060 (831) 457-8891 Fax (831) 457-4793 http://www.dyneng.com sales@dyneng.com Est. 1988 ip_gen Linux Driver Documentation Revision A ip_gen Linux

More information

DEVICE DRIVERS AND TERRUPTS SERVICE MECHANISM Lesson-15: Writing Device Driving ISRs in a System

DEVICE DRIVERS AND TERRUPTS SERVICE MECHANISM Lesson-15: Writing Device Driving ISRs in a System DEVICE DRIVERS AND TERRUPTS SERVICE MECHANISM Lesson-15: Writing Device Driving ISRs in a System 1 Writing the software for the driver Writing the software for the driver Information about how the device

More information

CARRIER-SW-42. VxWorks Device Driver. IPAC Carrier. Version 4.2.x. User Manual. Issue July 2018

CARRIER-SW-42. VxWorks Device Driver. IPAC Carrier. Version 4.2.x. User Manual. Issue July 2018 The Embedded I/O Company CARRIER-SW-42 VxWorks Device Driver IPAC Carrier Version 4.2.x User Manual Issue 4.2.0 July 2018 TEWS TECHNOLOGIES GmbH Am Bahnhof 7 25469 Halstenbek, Germany Phone: +49 (0) 4101

More information

Installation & Reference Guide

Installation & Reference Guide Installation & Reference Guide DOC. REV. 7/31/2015 VersaAPI VersaLogic Application Programming Interface WWW.VERSALOGIC.COM 12100 SW Tualatin Road Tualatin, OR 97062-7341 (503) 747-2261 Fax (971) 224-4708

More information

Lecture Topics. Announcements. Today: Threads (Stallings, chapter , 4.6) Next: Concurrency (Stallings, chapter , 5.

Lecture Topics. Announcements. Today: Threads (Stallings, chapter , 4.6) Next: Concurrency (Stallings, chapter , 5. Lecture Topics Today: Threads (Stallings, chapter 4.1-4.3, 4.6) Next: Concurrency (Stallings, chapter 5.1-5.4, 5.7) 1 Announcements Make tutorial Self-Study Exercise #4 Project #2 (due 9/20) Project #3

More information

OPERATING SYSTEM. Chapter 4: Threads

OPERATING SYSTEM. Chapter 4: Threads OPERATING SYSTEM Chapter 4: Threads Chapter 4: Threads Overview Multicore Programming Multithreading Models Thread Libraries Implicit Threading Threading Issues Operating System Examples Objectives To

More information

Operating systems for embedded systems

Operating systems for embedded systems Operating systems for embedded systems Embedded operating systems How do they differ from desktop operating systems? Programming model Process-based Event-based How is concurrency handled? How are resource

More information

Lecture 13 Input/Output (I/O) Systems (chapter 13)

Lecture 13 Input/Output (I/O) Systems (chapter 13) Bilkent University Department of Computer Engineering CS342 Operating Systems Lecture 13 Input/Output (I/O) Systems (chapter 13) Dr. İbrahim Körpeoğlu http://www.cs.bilkent.edu.tr/~korpe 1 References The

More information

Lecture 9: Midterm Review

Lecture 9: Midterm Review Project 1 Due at Midnight Lecture 9: Midterm Review CSE 120: Principles of Operating Systems Alex C. Snoeren Midterm Everything we ve covered is fair game Readings, lectures, homework, and Nachos Yes,

More information

Linux Driver and Embedded Developer

Linux Driver and Embedded Developer Linux Driver and Embedded Developer Course Highlights The flagship training program from Veda Solutions, successfully being conducted from the past 10 years A comprehensive expert level course covering

More information