Home
VxWorks Device Driver User`s Manual
Contents
1. 125 West Park Loop Huntsville AL 36806 Phone 256 722 0175 Fax 256 722 0144 Chandler May Inc VxWorks Device Driver User s Manual VxWorks Device Driver Software for the General Standards 16 12 hosted on PowerPC and 80x86 Processors Engineering Approval Quality Representative Date Approval 16 12 VxWorks Device Driver User s Manual Acknowledgments Copyright 1999 Chandler May Inc CMI ALL RIGHTS RESERVED The Purchaser of the GSC 16 12 device driver may use or modify in source form the subject software but not to re market it or distribute it to outside agencies or separate internal company divisions The software however may be embedded in their own distributed software In the event the Purchaser s customers require GSC 16 12 device driver source code then they would have to purchase their own copy of the GSC 16 12 device driver CMI makes no warranty either expressed or implied including but not limited to any implied warranties of merchantability or fitness for a particular purpose regarding this software and makes such software available solely on an as is basis CMI reserves the right to make changes in the GSC 16 12 device driver design without reservation and without notification to its users This document may be copied for the Purchaser s own internal use but not to re market it or distribute it to outside agencies or s
2. November 22 2000 38 16 12 VxWorks Device Driver User s Manual 5 6 11 ENABLE PCI INTERRUPTS The ENABLE PCI INTERRUPTS function enables the PCI interrupts order to a local interrupt request be generated arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot 1 if ioctl FileDesc 16A012Slot ENABLE PCI INTERRUPTS 0 ERROR logMsg PCI Interrupt Enable Failed for Slot d n n 16A012810t 0 0 0 0 0 November 22 2000 39 16 12 VxWorks Device Driver User s Manual 5 6 12 DISABLE PCI INTERRUPTS The DISABLE PCI INTERRUPTS function disables the PCI interrupts arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot 1 if ioctl FileDesc 16A012Slot DISABLE PCI INTERRUPTS 0 ERROR logMsg PCI Interrupts Disable Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 40 16 12 VxWorks Device Driver User s Manual 5 6 13 PROGRAM_RATE_GEN CMi The PROGRAM_RATE_GEN function will set the rate at which the output channels are scanned and sampled This function uses a user specified divisor iNrate The rate generator calculates the clock frequency as Frequency Hz 30 000 000 iNrate It is advised that the iNrate value remains more than 4Bh 75 decimal arg PARAMETER int Pointer to the integer used in calculation EXAMPLE
3. 2 2 tonto tos 3 4 MAKING THE DEVICE DRIVER 2 4 5 0 4 5 1 GS 16AOI2DRVINSTALL 52 GS 16AOI12DRVREMOVE 53 i vaste Aviad tete etu batte eie 5 4 CEOSEB Mex cA E EMT 55 ee e UT tt eO LC OUR Hoon e tene dt aL OG TL Sese SER TA ue 5 6 1 NO COMMAND 5 6 2 INIT BOARD 5 6 3 READ REGISTER 5 6 4 WRITE REGISTER 5 6 5 5 6 6 REG FOR INT NOTIEY e nn 5 6 7 GET DEVICE ERROR us e eter ed QU p tUe 5 6 8 WRITE MODE CONFIG 5 6 9 CALIB MODE 5 6 10 SOURCE 5017 ENABEE PCLI INTERRUPTS 4 teer o e OR ERES 5 6 12 DISABEE PCI INTERRUPIS ee t RE pet e ETUR e sees euo 3 06 13 PROGRAM RATE iii rt ERIGI De en died 5 6 14 bene ed a agrega ge 5 6 15 SET OUT BUFFER SIZE 5 6 16 STATUS 5 6 17 ENABLE CLK 3 618 DISABLE Rb R
4. OUT POST Q INT STATUS OUT POST Q INT MASK Q PORT OUT PORT MSG UNIT CONFIG Q BASE ADDR IN FREE HEAD PTR IN FREE TAIL PTR IN POST HEAD PTR IN POST TAIL PTR OUT FREE HEAD PTR OUT FREE TAIL PTR OUT POST HEAD PTR OUT POST TAIL PTR November 22 2000 22 16 12 VxWorks Device Driver User s Manual STATUS CTRL ULONG pulValue Pointer to the location where the value read is to be stored EXAMPLE int FileDesc 2 REG_PARAM theReg ULONG ulValue int 16A012Slot 1 theReg pulValue amp ulValue theReg el6AOl2Register BOARD REG if ioctl FileDesc 16A012810t READ REGISTER int amp theReg ERROR logMsg Read Register Failed for Slot d n n 16A012Slot 0 0 09 0 0 November 22 2000 23 16 12 VxWorks Device Driver User s Manual 5 6 4 WRITE REGISTER WRITE_REGISTER function writes value to one of the 16 12 Registers arg PARAMETER REG_PARAM where PARAM is defined to be typedef struct RegParam int e16AO12Register ULONG pulValue PARAM and int e16AO12Register One of the following registers to write Refer to 16AO 12 Hardware documentation for a description of each register 164012 Registers BOARD CTRL REG SELECTION RATE CTRL REG BUFF OPS REG OUTPUT BUF REG Regi
5. logMsg Cannot Open Device Error s n n int devName 16A012810t 0 0 0 0 0 November 22 2000 10 16 12 VxWorks Device Driver User s Manual 5 4 close CMi The close function is the standard VxWorks entry point to close a connection to a 16 12 Card in one PMC Slot This function should only be called after the open function has been successfully called for a slot where a 16 12 Card resides The close function closes the interface to a 16 12 device PROTOTYPE extern STATUS close int iFd Where iFd Descriptor returned from a call to the open function Returns OK if successful or ERROR if unsuccessful EXAMPLE int FileDesc 2 int 16A012Slot 1 close the device on slot 2 if close FileDesc 16A012Slot ERROR logMsg Close Error for Slot d n n 16A012Slot FileDesc 16A012Slot ERROR November 22 2000 5 5 16 12 VxWorks Device Driver User s Manual write The write function is the standard VxWorks entry point to transmit channel data to the 16AO 12 Card FIFO in one PMC Slot This function should only be called after the open function has been successfully called for a slot where a 16 12 Card resides The data written to the FIFO will either be transferred to the user buffer using the PLX 9080 capability or will be accessed directly and assigned 16 bits bits 0 15 at a time depending on the wr
6. int FileDesc 2 int 16AO12S1ot 1 int Mode CONT MODE lt if ioctl FileDesc 16A012Slot SELECT SAMPLING MODE int amp Mode ERROR logMsg Select Sampling Mode Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 51 16 12 VxWorks Device Driver User s Manual 5 6 23 GET_BURSTING_STATUS The GET_BURSTING_STATUS function will return the output bursting status The status indicates whether there is a burst in progress If ready there is no bursting event arg PARAMETER int Pointer to the location of where the status code is to be written It will be one of the following e BURST NOT READY BURST READY EXAMPLE int FileDesc 2 int 16A012Slot int Status 1 if ioctl FileDesc 16A012Slot GET_BURSTING_STATUS int amp Status ERROR ll ll logMsg Get Bursting Status Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 52 16 12 VxWorks Device Driver User s Manual 5 6 24 BURST_TRIGGER CMi The BURST_TRIGGER function will commence a transfer of data from the output buffer to the selected active channels arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if ioctl FileDesc 16A012Slot BUSRT TRIGGER 0 ERROR logMsg Burst Trigger Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 53
7. Device Driver User s Manual MAILBOX_REGISTER_7 PCI_TO_LOC_DOORBELL LOC TO PCI DOORBELL INT CTRL STATUS PROM CTRL CMD CODES CTRL DEVICE ID VENDOR ID REVISION ID MAILBOX REG 0 MAILBOX REG 1 Messaging Queue Registers OUT POST Q INT STATUS OUT POST Q INT MASK IN Q PORT OUT PORT MSG UNIT CONFIG Q BASE ADDR IN FREE HEAD PTR IN FREE TAIL PTR IN POST HEAD PTR IN POST TAIL PTR OUT FREE HEAD PTR OUT FREE TAIL PTR OUT POST HEAD PTR OUT POST TAIL PTR November 22 2000 27 16 12 VxWorks Device Driver User s Manual STATUS CTRL ULONG pulValue Pointer to the location containing the value to be written EXAMPLE int FileDesc 2 REG PARAM theReg ULONG ulValue OxAAAA int 16A012Slot 1 theReg pulValue amp ulValue theReg el6AOl2Register OUT Q PORT if ioctl FileDesc 16A01281o0t WRITE REGISTER int amp theReg ERROR logMsg Write Register Failed for Slot d n n 16A0128S10t November 22 2000 28 16 12 VxWorks Device Driver User s Manual 5 6 5 START DMA The START function configures the 16AO 12 DMA registers for a DMA transfer from the board and then starts the transfer arg PARAMETER DMA_PARAM where DMA_PARAM is defined to be typedef struct DMAParam int DMAChannel ULONG ulDMAMode ULONG ulDMALocalAddress ULONG ulDM
8. OUT CLKING MODE The SELECT OUT CLKING MODE function will set the output clocking mode There are two clocking modes simultaneous and sequential In simultaneous mode data from the output buffer is transferred to the entire active output channel group Whereas in sequential mode data is transferred from the output buffer to one channel at a time in ascending order starting with the lowest number in the channel group arg PARAMETER int pointer to one of the following modes SEQUENTIAL e SIMULTANEOUS EXAMPLE int FileDesc 2 int 16AO12Sl1ot int Mode 1 Mode SEQUENTIAL if ioctl FileDesc 16AO12S1ot SELECT OUT CLKING MODE int amp Mode ERROR logMsg Select Output Clocking Mode Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 56 16 12 VxWorks Device Driver User s Manual 5 6 28 SELECT_CLK_SOURCE CMi The SELECT CLK SOURCE function will set the clocking source The clock is either from an external source or from the internal rate generator arg PARAMETER int pointer to one of the following source values EXTERNAL e INTERNAL EXAMPLE int FileDesc 2 int 16A012Slot int Source 1 Source INTERNAL if ioctl FileDesc 16A012Slot SELECT CLK SOURCE int amp Source ERROR Il ll logMsg Select Clock Source Failed for Slot d n n 16A012Slot 0 0 0 0 0 Nove
9. int FileDesc 2 int 16AO12Slot int iNrate 1 iNrate 0x0100 Program Rate Generator if ioctl FileDesc 16AO12S1ot PROGRAM RATE GEN iNrate ll ERROR logMsg Program Rate Generator Failed n n 0 0 0 0 0 0 November 22 2000 41 16 12 VxWorks Device Driver User s Manual 5 6 14 SELECT ACTIVE CHAN SELECT_ACTIVE_CHAN function will activate output channels It will also set the number of active channel in an output channel group arg PARAMETER CHAN_SELECT where CHAN SELECT is defined to be typedef struct ULONG ulChannels int iNumChans CHAN SELECT and ULONG ulChannels value to make channels active int iNumChans number of channels in a channel group EXAMPLE int FileDesc 2 CHAN SELECT ChannelInfo ULONG ulValue 0xA08 Select Channels 3 9 and 11 int 16A012Slot 1 Channellnfo ulChannels amp ulValue Channellnfo iNumChans 3 if ioctl FileDesc 16AO12S810t SELECT ACTIVE CHAN int amp ChannelInfo ERROR logMsg Active Channels Selection Failed for Slot 16A012810t 0 0 0 0 0 November 22 2000 42 16 12 VxWorks Device Driver User s Manual 5 6 15 SET_OUT_BUFFER_SIZE The SET_OUT_BUFFER_SIZE function will allow the user to set the analog output buffer virtual size arg PARAMETER int Pointer to one of the followi
10. system The 16 12 is implemented as a standard VxWorks device driver written in the programming language The 16 12 Driver Software is designed to operate on CPU boards containing MPC603 MPC604 and MPC750 processors as well as VME CPU boards containing 80x86 processors with the same bus interface hardware as PowerPC boards For example the Force PPC PowerCore 6604 CPU board the Motorola MVME1600 MVME2300 MVME2400 MVME2600 and MVME2700 series boards and the SCI JTT 686 CPU board 2 Hardware Overview The General Standards Corporation GSC 16AO 12 board is a single width analog output interface that fits into a PCI Mezzanine Card slot This board provides 12 16 bit analog output channels The output channels are capable of supporting sequential and simultaneous updating modes It also provides for minimum off line maintenance by providing calibration functions The 16 12 board includes a rate generator and a DMA controller The rate controller is provided to control the rate at which output channels are scanned The DMA transfers are supported when the board is acting as the bus master and the local bursting mode disabled The configuration of the interrupting capability of the 16 12 board is described in the hardware manual for the board The 16 12 Device Driver must be used correctly in accordance with the hardware configuration in order to provide consistent results 3 Referenced Documents The followin
11. 16 12 VxWorks Device Driver User s Manual 5 6 25 ENABLE_REMOTE_GND_SENSE CMi The ENABLE_REMOTE_GND_SENSE function will allow correction of a potential difference between ground at the load and the output from the 16 12 board Refer to the Systems Configuration section of the 16 12 User s Manual for more information about Remote Ground Sensing arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if ioctl FileDesc 16A012Slot ENABLE SENSE 0 ERROR logMsg Enable Remote Ground Sense Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 54 16 12 VxWorks Device Driver User s Manual 5 6 26 DISABLE_REMOTE_GND_SENSE CMi DISABLE REMOTE GND SENSE function will not allow correction of a potential difference between ground at the load and the output from the 16 12 board Refer to the Systems Configuration section of the 16 12 User s Manual for more information about Remote Ground Sensing arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if ioctl FileDesc 16A012Slot DISABLE REMOTE GND SENSE 0 ERROR logMsg Disable Remote Ground Sense Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 55 16 12 VxWorks Device Driver User s Manual 5 6 27 SELECT
12. AByteCount ULONG ulDMADescriptorPtr ULONG ulDMAArbitration ULONG ulDMAThreshold DMA PARAM and int DMAChannel DMA channel to perform transfer on Must be one of the following CHAN 0 1 ULONG ulDMAMode Value to be written to 16 12 DMA Mode Register ULONG ulDMALocalAddress Value to be written to the 16AO 12 DMA Local Address Register Data returned is little endian and may need to be byte word swapped ULONG ulDMAByteCount Value to be written to the 16 12 DMA Byte Count Register ULONG ulDMADescriptorPtr Value to be written to the 16AO 12 DMA Descriptor Pointer Register November 22 2000 29 16 12 VxWorks Device Driver User s Manual ULONG uIDMAArbitration Value to be written to the 1640 12 DMA Arbitration Register ULONG ulDMAThreshold Value to be written to the 1640 12 DMA Threshold Register See the PLX PCI PCI Bus Master Interface Data Sheet for a description of the DMA registers DMA WRITE EXAMPLE define DWORD_COUNT 80 int FileDesc 2 16A012S1ot 1 PARAM DMAParameters ULONG pulBuffer DWORD COUNT REG PARAM theReg ULONG ulValue Setup parameters to perform a DMA Write to the analog output FIFO buffer DMAParameters DMAChannel 0 DMAParameters ulDMAMode 0x943 DMAParameters ulDMALocalAddress ULONG pulBuffer DMAParameters ulDMAByteCount DWORD_COUNT 4 DMAParameters ulDMADescr
13. CI DMA CH 1 LOCAL ADDR DMA 1 TRANS BYTE CNT DMA 1 DESC PTR DMA CMD STATUS DMA MODE ARB REG DMA THRESHOLD REG PCI Configuration Registers DEVICE VENDOR ID STATUS COMMAND CLASS CODE REVISION ID BIST HDR TYPE LAT CACHE SIZE PCI MEM BASE ADDR PCI IO BASE ADDR PCI BASE ADDR 0 PCI BASE ADDR 1 CARDBUS CIS PTR SUBSYS ID VENDOR ID PCI BASE ADDR LOC ROM LAT GNT INT PIN LINE November 22 2000 20 16 12 VxWorks Device Driver User s Manual Local Configuration Registers PCI_TO_LOC_ADDR_0_RNG LOC BASE ADDR REMAP 0 MODE ARBITRATION BIG LITTLE ENDIAN DESC PCI TO LOC ROM RNG LOC BASE ADDR REMAP EXP ROM BUS REG DESC 0 FOR PCI LOC DIR MASTER TO PCI RNG LOC ADDR FOR DIR MASTER MEM LOC ADDR FOR DIR MASTER IO PCI ADDR REMAP DIR MASTER PCI CFG ADDR DIR MASTER IO PCI TO LOC ADDR 1 RNG LOC BASE ADDR REMAP 1 BUS REG DESC FOR PCI LOC Run Time Registers MAILBOX REGISTER 0 MAILBOX REGISTER 1 MAILBOX REGISTER 2 MAILBOX REGISTER 3 MAILBOX REGISTER 4 MAILBOX REGISTER 5 MAILBOX REGISTER 6 November 22 2000 21 16 12 VxWorks Device Driver User s Manual MAILBOX_REGISTER_7 PCI_TO_LOC_DOORBELL LOC TO PCI DOORBELL INT CTRL STATUS PROM CTRL CMD CODES CTRL DEVICE ID VENDOR ID REVISION ID MAILBOX REG 0 MAILBOX REG 1 Messaging Queue Registers
14. CI card by examining the CPU board s registers Determines if the slot contains a 16AO 12 board by examining the PCI Configuration Device Type and Vendor ID Registers e Programs the PCI Configuration Base Address and Configuration Address Registers with predefined addresses e Enables the 16 12 Card to respond over the PCI Bus Connects the driver interrupt handler for the interrupt number e Installs a device for the PMC Slot e Enables the PCI Interrupt for the PMC Slot PROTOTYPE extern int GS_16AO12DrvInstall BOOL bDebug Where bDebug boolean that is sent to the driver to enable debugging If enabled the driver will display error and status messages on the console during driver access Note this should not be enabled during time sensitive processes Returns OK on success and ERROR on failure November 22 2000 7 16 12 VxWorks Device Driver User s Manual EXAMPLE STATUS iStatus Install the 16 0 12 VxWorks Device Driver iStatus GS_16A012DrvInstall TRUE B November 22 2000 8 16 12 VxWorks Device Driver User s Manual 5 2 GS 16A012DrvRemove CMi GS_16A0O12DrvRemove function is used to remove the 16AO 12 Device Driver from the VxWorks operating system This function should only be called after a call to the GS_16AO12DrvInstall0 function The GS 165012DrvRemove function closes all the open devices for each PMC slot and removes the device dr
15. November 22 2000 12 16 12 VxWorks Device Driver User s Manual EXAMPLE define MAXSAMPLES 32 int FileDesc int i iNumBytesWritten char pusBuffer MAXSAMPLES 2 Configure driver mode if ioctl FileDesc 16A012Slot WRITE MODE CONFIG MODE ERROR logMsg ioctl WRITE_MODE_CINFIG Failed for Slot d n n 16A012810t 0 0 0 0 0 iNumBytesWritten write FileDesc 16A012S1lot pusBuffer sizeof pusBuffer if iNumBytesWritten 0 logMsg Write failed for Slot d n 16A012Slot 0 0 0 0 0 November 22 2000 13 5 6 16 12 VxWorks Device Driver User s Manual ioctl The ioctl function is the standard VxWorks entry point to perform control and setup operations on a 16 12 Card in one PMC Slot This function should only be called after the open function has been successfully called for slot where 16 12 Card resides The ioctl function will perform different functions based upon the function parameter These functions will be described in the following subparagraphs PROTOTYPE extern int ioctl int iFd int iFunction int iArg Where iFd File Descriptor returned from a call to the open function iFunction The ioctl function to perform which is one of the following NO COMMAND Empty command performs nothing INIT BOARD Initializes the 16AO 12 board READ REGISTER Rea
16. R E gels rete ER cR AUTE CHR sie e ER da 5 0 19 CLEAR INE REQUEST ence EH OE AS tn edd 48 36 20 GEF CAMB STATUS tse e nee EIE E bie e RE UE 49 3 0 21 SEEECT DATA FORMAT endete RP EP 50 5 6 22 SELECT SAMPLING MODE 5 6 23 BURSTING STATUS 5 6 24 BURST TRIGGER MI 5 6 25 ENABLE REMOTE GND SENSE 5 6 26 DISABLE REMOTE GND SENSE 5 6 27 SELECT OUT CLKING MODE 5 628 cU UN uA wa 5 6 29 GET CLK 5 08 1 5 6 30 SINGLE OUTPUT CLK EVT 5 6 31 SELECT CONFIG MN 5 597 ACCESS REQ il arth aera CN SDN dlls torah Ae 5 6 33 GET_CIR_BUF_STATUS siiin 5 6 34 CLEAR_BUFFER RT M November 22 2000 2 16 12 VxWorks Device Driver User s Manual 1 Scope The purpose of this document is to describe how to interface with the 16 12 VxWorks Device Driver developed by Chandler May Incorporated CMI This software provides the interface between Application Software and the 16 12 Board The interface to this board is at the I O system level It requires no knowledge of the actual board addressing of control data register locations It does however require some knowledge of the individual bit representations for most control data registers on the device 16 12 Driver Software executes under control of the VxWorks operating
17. User s Manual 5 6 17 ENABLE_CLK The ENABLE_CLK function will enable output clocking arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if ioctl FileDesc 16A012Slot ENABLE CLK 0 ERROR logMsg Output Clock Enable Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 46 16 12 VxWorks Device Driver User s Manual 5 6 18 DISABLE_CLK The DISABLE function will disable output clocking arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot Ty if ioctl FileDesc 16A012Slot DISABLE 0 ERROR logMsg Output Clock Disable Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 47 16 12 VxWorks Device Driver User s Manual 5 6 19 CLEAR_INT_REQUEST CMi The CLEAR_INT_REQUEST function clears the interrupt request flag after an interrupt has occurred arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if ioctl FileDesc 16A012Slot CLEAR INT REQUEST 0 ERROR logMsg Clear Interrupt Request Flag Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 48 16 12 VxWorks Device Driver User s Manual 5 6 20 GET_CALIB_STATUS The GET_CALIB_STATUS function will return the autocalibration status arg PARAMETER int Pointer to the location of where th
18. cation of where the error code is to be written It will be one of the following NO ERR No Error Occurred INVALID PARAMETER ERR An Invalid Parameter was sent to driver RESOURCE ERR The driver could not obtain a resource memory or semaphore to perform its function BOARD ACCESS ERR Failure occurred when the GS 16AO12DrvInstall function fails when probing the 16 12 card s Board Status Register DEVICE ADD ERROR Failure occurred when the 55 16AO12DrvInstall function fails when trying to add device to the VxWorks Operating System ALREADY OPEN ERROR A call to the open driver access routine for a device that is already open INVALID DRV NUM ERR Returned from the GS_16A012DrvInstall function if an invalid driver number was obtained when trying to add the device driver to the VxWorks operating system Also returned from the GS 16AOI2DrvRemove function if the driver failed to remove the device driver from the VxWorks operating system ALREADY INSTALLED ERR Returned from the GS 16AO12DrvInstall function if the driver has already been installed PCI CONFIG ERR Returned from the GS 16AO12DrvInstall function if a read or write of a PCI Configuration Register fails November 22 2000 34 16 12 VxWorks Device Driver User s Manual INVALID BOARD STATUS ERR Returned from the GS_16A012DrvInstall function if an invalid board status is read from the 16AO 12 Board FIFO BUFFER ERR If d
19. ds a specified 16 12 register WRITE REGISTER Writes to a specified 16AO 12 register START DMA Starts a DMA write from the 16AO 12 board REG FOR INT NOTIFY Registers the application code to be notified when an interrupt occurs GET DEVICE ERROR Returns the error that occurred during the last access to the 16 12 driver WRITE MODE CONFIG Configures the 16AO 12 write mode FIFO burst writes or DMA enabled FIFO writes CALIB MODE Sets and runs calibration operation INT SOURCE Sets interrupt source condition ENABLE PCI INTERRUPTS Enables PCI interrupts in order for the 16AO 12 to produce a local interrupt request DISABLE PCI INTERRUPTS Disables PCI Interrupts November 22 2000 14 16 12 VxWorks Device Driver User s Manual PROGRAM RATE GEN Programs the rate generator for specified sample rate frequency SELECT ACTIVE CHAN Activates output channels SET OUT BUFFER SIZE Sets the virtual size of the active output buffer GET BUF STATUS Retrieves the output buffer status flag information ENABLE CLK Enables output clocking DISABLE CLK Disables output clocking CLEAR INT REQUEST Clears the Interrupt Request flag GET CALIB STATUS Retrieves the status of autocalibration SELECT DATA FORMAT Selects offset binary or two s compliment output data format SELECT SAMPLING MODE Selects continuous or triggered burst sampling mode GET BURSTING STATUS Retrieves the status of bursting p
20. e status code is to be written It will be one of the following e AUTOCAL_FAILED AUTOCAL_PASSED EXAMPLE int FileDesc 2 int 16A012Slot int Status 1 if ioctl FileDesc 16A012Slot GET CALIB STATUS int amp Status ERROR logMsg Get Calibration Status Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 49 16 12 VxWorks Device Driver User s Manual 5 6 21 SELECT DATA_FORMAT The SELECT_DATA_FORMAT function will set the analog output data format to be either offset binary or two s compliment arg PARAMETER int pointer to one of the following values e TWOS_COMP OFFSET BINARY EXAMPLE int FileDesc 2 int 16A012Slot int Format 1 Format OFFSET BINARY if ioctl FileDesc 16AO12S10t SELECT DATA FORMAT int amp Format ERROR logMsg Select Data Format Failed for Slot d n n 16A012810t 0 0 0 0 0 November 22 2000 50 16 12 VxWorks Device Driver User s Manual 5 6 22 SELECT_SAMPLING_MODE CMi The SELECT_SAMPLING_MODE function will set the bursting mode to either continuous or triggered mode With continuous mode data is sampled continuously With triggered burst mode data is sampled continuously until the buffer is empty or the end of frame flag is detected arg PARAMETER int pointer to one of the following values e CONT MODE BURST MODE EXAMPLE
21. eated through the use of standard VxWorks I O system functions The functions of the driver can then be used to access the board Included in the device driver software package is a menu driven board testing program and source code This program is delivered undocumented and unsupported but may be used to exercise the 16AO 12 card and device driver It can also be used to break the learning curve somewhat for programming the 16AO 12 device If the user wishes to use the 16AO 12 Device Driver with the interrupting capability of the board then a user supplied Interrupt Service Routine ISR must be written The driver will call this ISR when an interrupt is received from the board There are limitations on the functionality of a VxWorks ISR These are documented in the VxWorks Programmer s Guide and must be strictly followed in writing the ISR The Device Driver initializes the board to disable all types of 16AO 12 interrupts through software control except for PCI interrupts controlled through the Shared Runtime Interrupt Control Status register 16AO 12 Interrupts must be enabled through the use of the ioctl function in order to take advantage of the interrupting capability of the board The ioctl function must also be used to specify the user supplied ISR which will be invoked when an interrupt is received from the board If interrupting is enabled and the user supplied ISR has not been specified then nothing will happen in the driver when an i
22. eparate internal company divisions If this document is to be copied all copies must be of the entire document and all copyright and trademark notifications must remain intact The material in this document is for information only and is subject to change without notice While reasonable efforts have been made in the preparation of this document to assure its accuracy CMI assumes no liability resulting from errors or omissions in this document or from the use of the information contained herein CMI Chandler May Inc logo are trademarks of CMI Force is a registered trademark of Force Computers Inc GSC and PMC 16AO 12 are trademarks of General Standards Corporation Motorola and the Motorola symbol are registered trademark of Motorola Inc PLX and PLX Technology are trademarks of PLX Technology Inc PowerPC is a trademark of IBM Corporation VxWorks and Wind River Systems are registered trademarks of Wind River Systems Inc September 20 1999 1 16 12 VxWorks Device Driver User s Manual 1 5 3 3 8
23. er the function will no longer be called when an interrupt occurs The parameter sent to the notification routine will be the slot number of the 16 12 Board that has interrupted and will be one of the following 16AO12 16A012_PMC2 Note that internal driver interrupt handler will clear interrupts after calling user supplied ISR arg PARAMETER int intHandler int Pointer to a routine to handle the interrupt notification or NULL pointer if the caller wants to unregister for interrupt notification EXAMPLE int FileDesc 2 int 16A012Slot 1 int intHandler ULONG ulSlotNum REG_PARAM theReg ULONG ulValue execute interrupt control here return 0 intHandler Request notification on the user selected conditions if ioctl FileDesc 16A012Slot REG FOR INT NOTIFY int intHandler ERROR November 22 2000 32 16 12 VxWorks Device Driver User s Manual logMsg Request Interrupt Notification Failed n n 0 0 0 0 0 0 CMi November 22 2000 33 16 12 VxWorks Device Driver User s Manual 5 6 7 GET_DEVICE_ERROR CMi The GET DEVICE ERROR function will return the error that occurred on the last call to one of the 16AO 12 Device Driver entry points Whenever a driver function is called and it returns an error this function may be called to determine the cause of the error arg PARAMETER int Pointer to the lo
24. f the following CIR BUF NOT READY e CIR BUF READY EXAMPLE int FileDesc 2 int 16A012Slot int Status 1 if ioctl FileDesc 16A012Slot GET CIR BUF STATUS int amp Status ERROR logMsg Get Circular Buffer Status Failed for Slot d n n L6AOT2ZS10b 0 O0 Qr 0 0 November 22 2000 62 5 6 34 CLEAR_BUFFER 16 12 VxWorks Device Driver User s Manual The CLEAR_BUFFER function will set the output buffer to the empty state arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot if CMi loctl FileDesc 16A012Slot CLEAR_BUFFE 1 logMsg Clear Buffer Failed for Slot d n n 0 0 0 0 November 22 2000 16A012Slot 0 63
25. g documents provided reference material used in the development of this design CMi November 22 2000 3 16 12 VxWorks Device Driver User s Manual 16 12 16 Bit 12 Channel High Speed Analog Output PMC Board User s Manual Revision A General Standards Corporation PLX Technology Inc PCI 9080 PCI Bus Master Interface Chip data sheet Motorola MVME1603 1604 Single Board Computer Programmer s Reference Guide Motorola MVME2300 Series VME Processor Module Programmer s Reference Guide Motorola MVME2600 2700 Single Board Computer Programmer s Reference Guide e Force PPC PowerCore 6603 4 Technical Reference Manual 4 Making the Device Driver In order to use the 16 12 Device Driver for a particular target CPU platform the driver object files must be built by making or compiling the software modules The object modules are those that are loaded by the VxWorks target processor and contain functions that can then be executed The Wind River Tornado environment makes this process easy with one simple command make make uses a file called a makefile which tells the development system which source modules are to be compiled the parameters and options to use when compiling and any other miscellaneous file operations a user may need to build a particular system of object modules The makefile included contains several Board Support Package dependent switches that must be defined correctly fo
26. he buffer while passing data to the active output channels If the buffer is in the open configuration data is passed to the channels until the buffer is empty arg PARAMETER int pointer to one of the following configuration values OPEN e CIRCULAR EXAMPLE int FileDesc 2 int 16A012Slot int Config 1 Config OPEN BUF if ioctl FileDesc 16A01281o0t SELECT BUF CONFIG int amp Config ERROR logMsg Select Output Buffer Configuration Failed for Slot sd n n 16A012Slot 0 0 0 0 0 November 22 2000 60 16 12 VxWorks Device Driver User s Manual 5 6 32 LOAD ACCESS REQ The LOAD_ACCESS_REQ function will request access to a circular buffer It is necessary to do this so that data frames can be loaded into a circular or closed buffer arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot Te if ioctl FileDesc 16AO12S1ot LOAD ACCESS REO 0 ERROR logMsg Load Access Request Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 61 16 12 VxWorks Device Driver User s Manual 5 6 33 GET_CIR_BUF_STATUS The GET CIR BUF STATUS function will return the circular buffer status The status indicates whether the circular buffer will accept new data arg PARAMETER int Pointer to the location of where the status code is to be written It will be one o
27. iptorPtr 0x2 DMAParameters ulDMAArbitration 0 DMAParameters ulDMAThreshold 0 if ioctl FileDesc 16A012Slot START DMA int amp DMAParameters ERROR logMsg Start DMA Failed for Slot d n n 16A012Slot 07 Or 20 0 092 Wait for the DMA to Complete theReg pulValue amp ulValue theReg el6AOl12Register CMD STATUS do if ioctl FileDesc 16A012Slot READ REGISTER int 6 ERROR logMsg Read Register Failed for Slot d n n 16A012Slot 0 0 0 0 0 break November 22 2000 30 16 12 VxWorks Device Driver User s Manual while ulValue amp 0 10 Clear the DMA channel 0 1 command status register ulValue 0 theReg pulValue amp ulValue theReg el6AOl12Register DMA CMD STATUS if ioctl FileDesc 16A01281o0t WRITE REGISTER int amp theReg ERROR logMsg Write Register Failed n n 0 0 0 0 0 0 November 22 2000 31 16 12 VxWorks Device Driver User s Manual 5 6 6 REG FOR INT NOTIFY The REG FOR INT NOTIFY function will register or unregister for notification that an interrupt has occurred on the 16AO 12 board If this function is called with a pointer to a subroutine that routine will be invoked when a 16AO 12 interrupt occurs If a function is currently registered for interrupt notification and is called with a NULL point
28. ite mode of the driver that is set through ioctl function It is necessary to set the active output channels Once the channels are selected the data will be written in ascending order of the selected channels in the channel group The last active channel in the channel group is tagged with the end of frame flag This allows the buffer to know when the last value has been reached The end of frame flag is bit 16 in the data buffer It should be noted that it is the user s responsibility to assure that enough data is supplied to fill the requested channels The data written to the output buffer must be flushed to the output channel specified by the user when the DMA transfer functionality is being used Thus triggered burst is necessary This is done to give the user flexibility for writing one or many channels at a time There are two configurations the output buffer can have open and circular The open buffer is self flushing and does not require the user to issue a burst The circular buffer or closed buffer holds output data indefinitely The data frame circulates through the buffer while passing data values to the active channels PROTOTYPE extern int write int iFd char cBuffer size t INBytes Where iFd File Descriptor returned from a call to the open function cBuffer pointer to array of data to write iNBytes total number of bytes to write Returns Number of bytes written if successful or ERROR if unsuccessful
29. iver from the operating system PROTOTYPE extern int GS_16AO12DrvRemove void Returns OK on success and ERROR on failure EXAMPLE STATUS iStatus Remove the 16AO 12 Driver iStatus GS 16AO12DrvRemove November 22 2000 9 16 12 VxWorks Device Driver User s Manual 5 3 open CMi The open function is the standard VxWorks entry point to open a connection to a 16 12 Card in one PMC Slot This function may only be called after a call to the GS_16A012DrvInstall function is made Each PMC device can be opened in analog mode digital mode or both analog and digital modes In other words a user can associate two file descriptors with one device One file descriptor can represent the analog portion of the 16AO 12 and the other can represent the digital portion of the 16AO 12 device PROTOTYPE extern int open const char cName int iFlags int iMode Where cName name of the device being opened which is one of the following depending on the slot the 16AO 12 Board is in GS 16AO12 PMCI slot 1 GS 16AO12 PMC2 PMC slot 2 iFlags 15 not used iMode is not used Returns OK on success and ERROR on failure EXAMPLE int FileDesc 2 LOCAL char devName GS 164012 1 GS 16A012 PMC2 int 16A012Slot 1 open the 16 0 12 device for slot 1 FileDesc 16A012Slot open devName 16A012Slot O_RDWR 0644 if FileDesc 16A012Slot ERROR
30. mber 22 2000 57 16 12 VxWorks Device Driver User s Manual 5 6 29 GET_CLK_STATUS STATUS function will return the clock status The status indicates whether the output will accept a clock arg PARAMETER int Pointer to the location of where the status code is to be written It will be one of the following CLOCK NOT READY CLOCK READY EXAMPLE int FileDesc 2 int 16A012Slot int Status 1 if ioctl FileDesc 16A012Slot STATUS int amp Status ERROR logMsg Get Clock Status Failed for Slot 16A012Slot 0 0 0 0 0 November 22 2000 58 16 12 VxWorks Device Driver User s Manual 5 6 30 SINGLE_OUTPUT_CLK_EVT The SINGLE_OUTPUT_CLK_EVT function will generate a single clock event arg PARAMETER Not Used EXAMPLE int FileDesc 2 int 16A012Slot Ty if ioctl FileDesc 16AO12S1ot SINGLE_OUTPUT_CLK_EVT 0 ERROR logMsg Single Output Clock Event Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 59 16 12 VxWorks Device Driver User s Manual 5 6 31 SELECT BUF CONFIG The SELECT BUF CONFIG function will set the configuration of the output buffer The buffer can be in a self flushing or a circular buffer configuration While in a circular or closed configuration data is held indefinitely A data frame revolves through t
31. ng values CMi OUT BUFFER SIZE 4 OUT BUFFER SIZE 8 OUT BUFFER SIZE 16 OUT BUFFER SIZE 32 OUT BUFFER SIZE 64 OUT BUFFER SIZE 128 OUT BUFFER SIZE 256 OUT BUFFER SIZE 512 OUT BUFFER SIZE 1024 OUT BUFFER SIZE 2048 OUT BUFFER SIZE 4096 OUT BUFFER SIZE 8192 OUT BUFFER SIZE 16384 OUT BUFFER SIZE 32768 OUT BUFFER SIZE 65536 OUT BUFFER SIZE 131072 November 22 2000 43 16 12 VxWorks Device Driver User s Manual EXAMPLE int FileDesc 2 int 16A012Slot int Size r 1 Size OUT BUFFER SIZE 1024 if ioctl FileDesc 16A012Slot SET OUT BUFFER SIZE int amp Size ERROR logMsg Set Output Buffer Size Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 44 16 12 VxWorks Device Driver User s Manual 5 6 16 GET_BUF_STATUS CMi The GET_BUF_STATUS function will return the status of the analog output buffer arg PARAMETER int Pointer to the location of where the status code is to be written It will be one of the following OUTPUT EMPTY OUTPUT LOW OUTPUT HIGH QTR OUTPUT FULL EXAMPLE int FileDesc 2 int 16AO12Slot int Status 1 if ioctl FileDesc 16AO12S1ot BUF STATUS int amp Status ERROR logMsg Get Output Buffer Status Failed for Slot d n n 16A012810t 0 0 0 0 0 November 22 2000 45 16 12 VxWorks Device Driver
32. nt FileDesc 2 int 161IAOSlot 1 if ioctl FileDesc 16AO012810t NO COMMAND 0 logMsg ioctl NO COMMAND Failed for Slot d n n 16A012Slot 0 0 0 0 09 November 22 2000 17 16 12 VxWorks Device Driver User s Manual 5 6 2 INIT BOARD INIT BOARD function initializes the board and sets all defaults arg PARAMETER Not used EXAMPLE int FileDesc 2 int 16AO12S1ot 1 if ioctl FileDesc 16AO12S1ot INIT BOARD 0 ERROR logMsg Board Initialization Failed for Slot d n n 16A012Slot November 22 2000 18 16 12 VxWorks Device Driver User s Manual 5 6 3 READ REGISTER The READ REGISTER function reads and returns the contents of one of the 161 registers arg PARAMETER REG_PARAM where REG_PARAM is defined to be typedef struct RegParam int e16AO12Register ULONG pulValue PARAM and int e6AO 2Register One of the following registers to read Refer to 16 12 hardware documentation for a description of each register 16 12 Registers BOARD_CTRL_REG CHAN_SELECTION_REG RATE_CTRL_REG BUFF_OPS_REG OUTPUT_BUF_REG Registers DMA CH 0 MODE DMA CH 0 PCI ADDR DMA CH 0 LOCAL ADDR November 22 2000 19 16 12 VxWorks Device Driver User s Manual DMA CH 0 TRANS BYTE CNT DMA CH 0 DESC PTR DMA CH 1 MODE DMA CH 1 P
33. nterrupt is received from the board The 16 12 Device Driver allows for multiple boards on a single PCI bus Each board will be addressed as a separate VxWorks I O system device This device will be created when the driver is installed and is then available for all driver operations open close It is important to note that the 16AO 12 device driver is target processor dependent and thus BSP dependent System calls are made within the driver that are only available through certain board support packages This is due to the fact that PCI memory and I O space could be November 22 2000 5 16 12 VxWorks Device Driver User s Manual mapped differently for each target processor board Also it may be possible that the PMC slot interrupt level may be mapped differently for each target processor board CMi November 22 2000 6 5 1 16 12 VxWorks Device Driver User s Manual GS_16A012Drvinstall The GS 16AO12DrvInstall function installs the device driver into the VxWorks operating system This function must be called prior to using any of the other driver functions This function should not be called again without first calling the GS 16AO12DrvRemove function The GS 16AO12DrvInstall function performs the following operations e Installs the device driver into the VxWorks operating system e Performs the following for each PMC Slot on the processor board e Determines if this slot contains a P
34. on Failed for Slot d n n 16A012Slot 0 0 0 0 0 November 22 2000 36 16 12 VxWorks Device Driver User s Manual 5 6 9 CALIB MODE function performs a calibration operation There are two operations One operation is autocalibration The other is the default operation of no calibration activity Refer to the 16 12 User s Manual for more information on these operations arg PARAMETER int Pointer to one of the following values NO CAL ACTIVITY AUTO CAL EXAMPLE int FileDesc 2 int 16AO012Slot int Mode 1 Mode AUTO_CAL if ioctl FileDesc 16A012Slot CALIB MODE int amp Mode ERROR logMsg Calibration Failed for Slot d n n 16A012Slot 0 0 O 0 0 November 22 2000 37 16 12 VxWorks Device Driver User s Manual 5 6 10 INT_SOURCE The INT_SOURCE function will set the interrupt condition for a single local interrupt request arg PARAMETER int Pointer to one of the following values e IDLE CAL COMPLETE OUTPUT EMPTY OUTPUT LOW e OUTPUT HIGH e OUT BURST READY LOAD READY END LOAD READY EXAMPLE int FileDesc 2 int 16A012Slot 1 int Source Source OUT_BURST_READY if ioctl FileDesc 16A012Slot INT SOURCE int amp Source ERROR logMsg Interrupt Selection Failed for Slot d n n 16A0128S10t OF Oy 7095
35. r successful compilation and use The user is only required to set the BSP variable in the makefile Once BSP is set correctly the user can then begin compiling by executing make The modules in the make file should begin compiling and the display should reflect a successful compilation of all modules The output files from the build procedure should be 16a012_drv o Relocatable loadable module for the device driver 16a012_menu o Relocatable loadable module for the sample menu tool 5 Driver Interface The 16 12 Driver conforms to the device driver standards required by the VxWorks Operating System and contains the following standard driver entry points CMi November 22 2000 4 16 12 VxWorks Device Driver User s Manual GS_16AO012DrvInstall Installs the device driver for use with multiple 16 12 Cards GS 16 120 0 Removes the device driver from use opens a driver interface to one 16 12 e close closes a driver interface to one 16AO 12 Card e read reads data received from 16AO 12 Card write writes data to be transmitted by a 16AO 12 Card joctl performs various control and setup functions on the 16AO 12 The 16 12 Device Driver provides a standard I O system interface to the GSC PMC 16 12 card for VxWorks applications that run on the VxWorks target processor The device driver is installed and devices cr
36. rocess BURST TRIGGER Initiates transfer of data from buffer to active output channels ENABLE REMOTE GND SENSE Allows correction for potential difference while connected to remote ground system DISABLE REMOTE GND SENSE Disallows correction for potential difference while connected to remote ground system SELECT OUT CLKING MODE Selects simultaneous or sequential output clocking SELECT CLK SOURCE Sets clocking to come from either an external source or an internal rate generator GET CLK STATUS Retrieves the status of the clocking SINGLE OUTPUT CLK EVT Produces a single clocking event SELECT BUF CONFIG Selects a circular closed or open buffer configuration LOAD ACCESS Requests loading access to a circular buffer GET CIR BUF STATUS Retrieves status of circular buffer November 22 2000 15 16 12 VxWorks Device Driver User s Manual CLEAR BUFFER Empties output buffer iArg The parameters to the specific ioctl function See the following subsections for a description of the parameters for each function Returns OK if successful or ERROR if unsuccessful November 22 2000 16 16 12 VxWorks Device Driver User s Manual 5 6 1 COMMAND This is an empty driver entry point This command may be given to validate that the driver is correctly installed and that the 16 12 board device has been successfully opened arg PARAMETER Not used EXAMPLE i
37. sters DMA CH 0 MODE DMA CH 0 PCI ADDR DMA CH 0 LOCAL ADDR November 22 2000 24 16 12 VxWorks Device Driver User s Manual DMA CH 0 TRANS BYTE CNT DMA CH 0 DESC PTR DMA CH 1 MODE 1 PCI ADDR DMA CH 1 LOCAL ADDR DMA 1 TRANS BYTE CNT DMA 1 DESC PTR DMA CMD STATUS DMA MODE ARB REG DMA THRESHOLD REG PCI Configuration Registers DEVICE VENDOR ID STATUS COMMAND CLASS CODE REVISION ID BIST HDR TYPE LAT CACHE SIZE PCI MEM BASE ADDR PCI IO BASE ADDR PCI BASE ADDR 0 PCI BASE ADDR 1 CARDBUS CIS PTR SUBSYS ID VENDOR ID PCI BASE ADDR LOC ROM LAT GNT INT PIN LINE November 22 2000 25 16 12 VxWorks Device Driver User s Manual T ocal Configuration Registers PCI TO LOC ADDR 0 LOC BASE ADDR REMAP 0 MODE ARBITRATION BIG LITTLE ENDIAN DESC PCI TO LOC ROM RNG LOC BASE ADDR REMAP EXP ROM BUS REG DESC 0 FOR PCI LOC DIR MASTER TO PCI RNG LOC ADDR FOR DIR MASTER MEM LOC ADDR FOR DIR MASTER IO PCI REMAP DIR MASTER PCI CFG ADDR DIR MASTER IO PCI TO LOC ADDR 1 RNG LOC BASE ADDR REMAP 1 BUS REG DESC 1 FOR PCI LOC Run Time Registers MAILBOX REGISTER 0 MAILBOX REGISTER 1 MAILBOX REGISTER 2 MAILBOX REGISTER 3 MAILBOX REGISTER 4 MAILBOX REGISTER 5 MAILBOX REGISTER 6 November 22 2000 26 16 12 VxWorks
38. uring a write transaction the FIFO buffer is indicated to be empty by the status of the buffer status flags or more data is requested than what is available the driver will return the number of bytes that could be written along with throwing this error condition EXAMPLE int FileDesc 2 int 16AO12S1ot 1 int Status Send the Get Device Error Code Command for this channel if ioctl FileDesc 16AO12S10t DEVICE ERROR int amp Status ERROR logMsg Get Device Error Code Failed for Slot d n n 16 01251 0 0 0 0 0 November 22 2000 35 16 12 VxWorks Device Driver User s Manual 5 6 8 WRITE MODE CONFIG The WRITE MODE CONFIG function will configure the driver for the type of write to the output FIFO to be performed There are two types of writes The first being referred to as SCAN MODE where each sample is written out to the output FIFO one at a time and put into the user buffer given The other type of write is referred to as DMA MODE which utilizes the DMA capability of the board This mode must be set before attempting to write the outputs arg PARAMETER int Pointer to one of the following values SCAN MODE e DMA MODE EXAMPLE int FileDesc 2 int 16A012S1ot int iMode 1 iMode DMA MODE if ioctl FileDesc 16AO12S81ot WRITE MODE CONFIG int amp iMode ERROR logMsg Write Mode Configurati
Download Pdf Manuals
Related Search
Related Contents
http://lewebpedagogique.com/bouchaud 13_2_A_pratique.docx EZECAL Mk3 INSTRUCTION MANUAL User manual Ug userguide gebruikershandleiding guide d utilisation Kambrook KI730 Iron User Manual Recettes - Cannelle 【課題】ポリペプチド Melissa 643-194 User's Manual CAM 038 Copyright © All rights reserved.
Failed to retrieve file