82V391x / 8V893xx WAN PLL Device Families Device Driver User s Guide

Similar documents
CS 326 Operating Systems C Programming. Greg Benson Department of Computer Science University of San Francisco

PRINCIPLES OF OPERATING SYSTEMS

CSci 4061 Introduction to Operating Systems. Programs in C/Unix

A Fast Review of C Essentials Part I

C Programming Review CSC 4320/6320

ECE264 Spring 2013 Final Exam, April 30, 2013

JTSK Programming in C II C-Lab II. Lecture 3 & 4

AD916x API Specification Rev 1.0

CMPT 300. Operating Systems. Brief Intro to UNIX and C

unsigned char memory[] STACK ¼ 0x xC of address space globals function KERNEL code local variables

Embest IDE Pro for ARM 2005

Chapter. Overview. Tornado BSP Training Workshop Copyright Wind River Systems 1-1 Wind River Systems

CSCI-243 Exam 1 Review February 22, 2015 Presented by the RIT Computer Science Community

SmartHeap for Multi-Core

Understanding Pointers

Introduction to Supercomputing

AD9164 API Specification Rev 1.0

THE UNIVERSITY OF WESTERN ONTARIO. COMPUTER SCIENCE 211a FINAL EXAMINATION 17 DECEMBER HOURS

CAAM 420 Daily Note. Scriber: Qijia Jiang. Date: Oct.16. Project 3 Due Wed 23.Oct. Two parts: debug code and library exercise.

Deep C. Multifile projects Getting it running Data types Typecasting Memory management Pointers. CS-343 Operating Systems

1. Overview This project will help you understand address spaces and virtual memory management.

Application Note: AN00152 xscope - Bi-Directional Endpoint

POLYTECH CLERMONT-FERRAND. Application Note. Implementation of a SPEEX decoder on RX62N RENESAS microcontroller 22/01/2012

MPATE-GE 2618: C Programming for Music Technology. Syllabus

CS240: Programming in C

Project 2: Shell with History1

Programs. Function main. C Refresher. CSCI 4061 Introduction to Operating Systems

Platform Objects. Introduction. Methods. meiplatformalloc meiplatformassertset

MIDTERM EXAM. CS 217 October 28, Name: Precept: Honor Code: Score: Problem Score Max

CS201: Lab #4 Writing a Dynamic Storage Allocator

University of Colorado at Colorado Springs CS4500/ Fall 2018 Operating Systems Project 1 - System Calls and Processes

Lecture 2: C Programm

Midterm Exam Nov 8th, COMS W3157 Advanced Programming Columbia University Fall Instructor: Jae Woo Lee.

Contents. A Review of C language. Visual C Visual C++ 6.0

Processes. Johan Montelius KTH

A process. the stack

Memory. What is memory? How is memory organized? Storage for variables, data, code etc. Text (Code) Data (Constants) BSS (Global and static variables)

Windows Device Driver and API Reference Manual

NFC Framework and NT3H1201 Device Driver v1.1

VIA PadLock SDK API & Programming Guide

#include <stdio.h> int main() { char s[] = Hsjodi, *p; for (p = s + 5; p >= s; p--) --*p; puts(s); return 0;

#include <stdio.h> int main() { printf ("hello class\n"); return 0; }

CSE 333 SECTION 3. POSIX I/O Functions

Exercise Session 2 Systems Programming and Computer Architecture

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

P.G.TRB - COMPUTER SCIENCE. c) data processing language d) none of the above

CSCI-243 Exam 2 Review February 22, 2015 Presented by the RIT Computer Science Community

CSE 333 Lecture 6 - data structures

Recitation 2/18/2012

ARROW ARIS Board Software User s Guide 27/07/2016

Writing an ANSI C Program Getting Ready to Program A First Program Variables, Expressions, and Assignments Initialization The Use of #define and

Basic C Programming. Bin Li Assistant Professor Dept. of Electrical, Computer and Biomedical Engineering University of Rhode Island

CS201 - Lecture 1 The C Programming Language

Hello, World! in C. Johann Myrkraverk Oskarsson October 23, The Quintessential Example Program 1. I Printing Text 2. II The Main Function 3

Armide Documentation. Release Kyle Mayes

Luar Topics. C A Low level Programming Language Make A dependency based build system YUYV Representation of Color ZMP Zero Moment Point control

CMSC 313 Lecture 13 Project 4 Questions Reminder: Midterm Exam next Thursday 10/16 Virtual Memory

Application Note: AN00151 xscope - Custom Host Endpoint

Contents. Chapter 1 Overview of the JavaScript C Engine...1. Chapter 2 JavaScript API Reference...23

BLM2031 Structured Programming. Zeyneb KURT

Outline. Classic races: files in /tmp. Race conditions. TOCTTOU example. TOCTTOU gaps. Vulnerabilities in OS interaction

The Process Abstraction. CMPU 334 Operating Systems Jason Waterman

A skeleton file has been provided for you to use in both checkpoints.

CS 0449 Sample Midterm

Programming in C - Part 2

CS 300 Leftovers. CS460 Pacific University 1

Introduction to C. Sean Ogden. Cornell CS 4411, August 30, Geared toward programmers

Arm cross development tools

RDBE Host Software. Doc No: X3C 2009_07_21_1 TODO: Add appropriate document number. XCube Communication 1(13)

Lecture 07 Debugging Programs with GDB

Introduction to C. Ayush Dubey. Cornell CS 4411, August 31, Geared toward programmers

CSE 351, Spring 2010 Lab 7: Writing a Dynamic Storage Allocator Due: Thursday May 27, 11:59PM

CS342 - Spring 2019 Project #3 Synchronization and Deadlocks

Systems Programming and Computer Architecture ( )

High-performance computing and programming I. Introduction to C programming in *NIX

C Bootcamp. September 3rd, 2017

Introduction to C. Robert Escriva. Cornell CS 4411, August 30, Geared toward programmers

ECE 250 / CS 250 Computer Architecture. C to Binary: Memory & Data Representations. Benjamin Lee

ch = argv[i][++j]; /* why does ++j but j++ does not? */

CS 322 Operating Systems Programming Assignment 4 Writing a memory manager Due: April 5, 11:30 PM

Dynamic memory allocation

C Review. MaxMSP Developers Workshop Summer 2009 CNMAT

Lecture 3. Introduction to Unix Systems Programming: Unix File I/O System Calls

CS 3113 Introduction to Operating Systems Midterm October 11, 2018

CSE 333 SECTION 3. POSIX I/O Functions

CS 3113 Introduction to Operating Systems Midterm October 11, 2018

CSC UNIX System, Spring 2015

IMPORTANT QUESTIONS IN C FOR THE INTERVIEW

COSC345 Software Engineering. The Heap And Dynamic Memory Allocation

AIM Core and Enterprise Solutions

Base Component. Chapter 1. *Memory Management. Memory management Errors Exception Handling Messages Debug code Options Basic data types Multithreading

Memory management. Johan Montelius KTH

Memory Management. a C view. Dr Alun Moon KF5010. Computer Science. Dr Alun Moon (Computer Science) Memory Management KF / 24

Linux based 3G Multimedia Mobile-phone API Specification

Chapter 11 Introduction to Programming in C

C BOOTCAMP DAY 2. CS3600, Northeastern University. Alan Mislove. Slides adapted from Anandha Gopalan s CS132 course at Univ.

High-performance computing and programming Intro to C on Unix/Linux. Uppsala universitet

Today s class. Finish review of C Process description and control. Informationsteknologi. Tuesday, September 18, 2007

Getting Started. Project 1

CSCI 171 Chapter Outlines

Transcription:

82V391x / 8V893xx WAN PLL Device Families Device Driver Version 1.2 April 29, 2014

Table of Contents 1. Introduction... 1 2. Software Architecture... 2 2.1. Overview... 2 2.2. Hardware Abstraction Layer (HAL)... 2 2.3. Functional Modules... 3 3. Getting Started... 5 3.1. Installation... 5 3.2. Directory Structure... 5 3.3. Operating System Adaptation... 7 3.4. Build Tool Chain Specification... 8 3.5. Device Access (HAL)... 9 3.6. Simulated Device... 11 3.7. Initialization... 11 4. Sample Applications... 13 5. Debug Tools... 15

1. Introduction This document is the programmer s user guide to the device driver for 82V391x / 8V893xx family of devices. The below list describes the supported device families by the device driver. 82V391x Device Family o 82V3910 o 82V3911 o 82V33930 8V893xx Device Family o 8V89316 o 8V89317 This user's guide supports device drivers up to version 1.2. All of the information in this document is relevant to any of the supported devices. This document is partitioned into the following sections: Software architecture architecture of device driver Getting Started Installation, initialization, basic tests Sample Application example configurations Debug utilities tools and utilities to diagnose problems The driver package contains device driver source code which is written in ANSI C (C89). It should be compatible with any standard C compiler and linker. Included with the device driver package is the following documentation: Release Notes Information about the device driver package both current and historical. Any changes to APIs and relevant bug fixes are listed here. Device Driver Application Programmer s Interface (API) Reference Manual a comprehensive reference for all functions, data types, and variables. o Comes in two formats, PDF and HTML. Both versions support searching Device Driver this document. How-to guide to the device driver package. Customers are encouraged to contact IDT support (tsd@idt.com / IDT Technical Support Web Site) for the current list of support devices or any questions regarding the device driver. 1

2. Software Architecture 2.1. Overview The device driver is portioned into two parts, the hardware abstraction layer (HAL) and functional modules. The below diagram illustrates a high level architectural view of the driver. Customer supplied software IDT supplied software/hardware Sample Application High Level API RTOS OS Adaptation Debug Tools Input DPLL Output General APLL Device Driver Hardware Abstraction Layer Read Write Hardware Device 2.2. Hardware Abstraction Layer (HAL) Figure 1 Device driver architecture At the lowest layer is the hardware abstraction layer (HAL). This layer of code abstracts specific system access about the targeted device. The HAL acts as a bridge between the device driver and system specific methods to access hardware. The driver functional modules use the HAL to access the device in a consistent manner. All functional modules use the HAL interface to access the device. Customers must provide read and write functions to bind to the driver (HAL). Using this architecture a variety of different read/write functions can be plugged into the driver. Functional modules remain system agnostic. 2

Hardware Abstraction Layer Device Driver RD Func. I2C Driver WR Func. RD Func. WR Func. File System Bind Read/Write functions to HAL Hardware Device Figure 2 Hardware abstraction layer (HAL) The driver package contains a number of read/write functions that have been created for the purposes of interfacing the driver to the evaluation platform and the simulated device. They serve as templates for customers to develop their own functions. 2.3. Functional Modules This section outlines various functional modules present in the device driver. There are 5 core modules and 2 optional modules. For a complete list of application programmer s interfaces please see specific device API Reference Manual. General Device wide features o Device initialization o Interrupt control o Device protection mode Input - Input provisioning and status o Input Configuration (including input priority selection) o Input Frequency Monitoring Output Output provisioning and status o Output Configuration (including PPS, 8kHz, 2kHz pulse) DPLL - All digital and analog phase locked loop (PLL) related functionality is contained in this module. o DPLL provisioning o Clock path selection (multiple ways to travel through the device) o Phase detection o DPLL bandwidth and damping factor 3

APLL APLL block for generating ultra-low jitter differential outputs o APLL provisioning o Only required for output path that has APLL populated High Level API A set of functions that simplify provisioning of the device. These functions are optional. Debug Tools - This functional module contains a set of tools to aid in debugging issues. An optional component to the device driver. The high level APIs are a set of functions that simplify the provisioning of the device. It uses the core modules (output, general, input, DPLL, and APLL) to achieve this functionality. Customers who have specific requirements can elect not to use these functions and directly call core API functions. In these cases the high level API can be used as additional sample code. 4

3. Getting Started As mentioned in the introduction, this section contains the procedure for device driver installation, initialization and basic tests. Follow the below sequence to integrate the device driver into your system. Procedure for integrating device driver to a customer system is: 1. Decompress the device driver package 2. Perform Operating System Adaptation 3. Implement Hardware Abstraction Layer functions. 4. Modify Makefile to point to build environment (compiler tool chain) 5. Initialize the device driver The following sub-sections describe the procedure in details. 3.1. Installation There is no installer for the device driver package. Decompress the package into the desired directory. Table 1 Unpacking Instructions Platform Windows Unix, Linux, cygwin Instructions Open package in either Winrar Winzip 7-Zip Or any other decompression utility supporting, zip files. Run the following at a prompt: gunzip < foo.tar.gz tar xvf or tar xvzf file.tar.gz 3.2. Directory Structure The uncompressed 82V3910 driver contains the following directory structure; the driver for other variant (82V3911, 8V89316, etc.) has similar structure: Table 2 Driver package directory structure Directory Description 82V3910/ 82V3910 device specific top level (package dependent) dev/ Device specific source code sample/ Sample application 5

82V3911/ 82V3911 device specific top level (package dependent). See 82V3910 for directory details. 82V33930/ 82V33930 device specific top level (package dependent). See 82V33930 for directory details. 8V89316/ 8V89316 device specific top level (package dependent). See 82V3910 for directory details. 8V89317/ 8V89317device specific top level (package dependent). See 82V3910 for directory details. apll/ APLL files top level access/ Sample HAL routines include/ APLL header files src/ APLL source code test/ APLL unit tests bin/ Binary file directory common/ Common files top level access/ Sample HAL routines hlapi/ High Level API include/ Common header files src/ Common source code test/ Device driver unit tests (using open-source check utility) doc/ Documentation directory driverapirefmanual/ Device Driver API Reference Manual html/ HTML version rtf/ PDF version driveruserguide/ Device Driver lib/ Library directory obj/ Object file directory osadaptation/ OS Abstraction cygwin/ Cygwin sample OS Adaptation files linux/ Linux x86 sample OS Adaptation files test/ Device driver unit test bin/ Device driver unit test binary directory obj/ Device driver unit test object directory tools/ Tools directory annotate/ RGF File annotator registers/ Register utility to build C header file rgf/ Register dump utility to load/save register dump (.rgf) file Below is a select list of important files and their location within the directory structure. 6

Table 3 Important files File idt391x/releasenotes.txt idt391x/license.txt idt391x/makefile idt391x/82v3910/dev/include/idt82v3910.h idt391x/82v3911/dev/include/idt82v3911.h idt391x/82v33930/dev/include/idt82v33930.h idt391x/8v89316/dev/include/idt8v89316.h idt391x/8v89317/dev/include/idt8v89317.h idt391x/82v3910/sample/src/sample.c idt391x/82v3911/sample/src/sample.c idt391x/82v33930/sample/src/sample.c idt391x/8v89316/sample/src/sample.c idt391x/8v89317/sample/src/sample.c idt391x/doc/driverapirefmanual/html/index.html idt391x/doc/driverapirefmanual/rtf/ idt391x/doc/driveruserguide/driveruserguide.pdf idt391x/osadaptation/linux/include/osadapt.h & osnumeric.h Idt391x/osAdaptation/linux/src/osAdapt.c idt391x/osadaptation/linux/osconfig.mk idt391x/common/access Description Release notes Software License Top level Makefile to generate driver library and sample application Header files to be included by upper (customer/sample) code; device specific Example code demonstrating sample configurations for device using device driver. Device specific. Contact IDT support to request additional sample configurations. Starting point for HTML version of API reference manual Location of PDF version to API reference manual Device drive user s guide (this document) Sample OS Adaptation file for Linux x86 Sample build environment makefile for Linux x86 Directory containing sample HAL functions 3 Sets of sample HAL functions provided: I2C Simulated (used for unit tests) 3.3. Operating System Adaptation It is trivial to adapt the device driver to any operating system. System integration to the device driver is done through the implementation of macros and typedefs of common data types (char, int, etc.). These macros and typedefs are located in the osadaptation directory. The driver comes with 2 sample OS adaptations: 7

Linux x86 cygwin The below table lists the required macro implementations (see osadapt.h for example): Table 4 OS Adaptation Macros Macro Name OS_ASSERT(cond) OS_ASSERTS(cond,fmt) OS_ERROR(fmt) OS_SETLOGLVL(lvl) OS_GETLOGLVL() OS_LOGGER(lvl,fmt) OS_TRACE(fmt) OS_MALLOC(numBytes) OS_FREE(ptr) OS_ZERO(ptr,size) Description Assert on false condition. Usually bound to assert function in standard C library (assert.h) Similar to DRV_ASSERT but outputs message fmt. fmt is similar argument to printf. Unexpected run time error occurred. Message fmt. Usually implemented as a log message and an assert. Set highest log level to output. A simple custom function to track highest log level can be written. Get highest log level to output. Log message fmt of priority lvl. Can be bound to printf function in standard C library (stdio.h) or to existing system logging facilities. Log message fmt of predefined priority. Output file name, line number and function name. Can be used to trace function calls. Can be bound to printf function in standard C library (stdio.h) or to existing system logging facilities. Allocate a block of memory sized numbytes and return pointer to memory. Usually bound to malloc in standard C library (stdlib.h) Deallocate memory referenced by ptr. Usually bound to free in standard C library (stdlib.h) Zero out block of memory sized size referenced by ptr. Usually bound to memset function in standard C library (string.h). Common data types are abstracted with typedef, e.g. / @brief Unsigned char (8-bit) typedef unsigned char T_osUint8; For a full list of typedefs, please refer to osadaptation/osnumeric.h header file. During the development phase we strongly encourage customers to enable assertions. It will aid in detecting invalid input parameters when using the device driver. For production, assertions can be removed or redirected to a logging system. 3.4. Build Tool Chain Specification 8

A makefile is provided within the driver package to build a device driver library and sample application. By default it is configured for Linux but can be modified to refer to any build tool chain. The below diagram illustrates the makefile hierarchy. Idt391x/Makefile # Include host/target specific options include osadaptation/$(target)/osconfig.mk... Multiple Targets (Linux, cygwin, ) osadaptation/linux/ osconfig.mk # Utilities CC := gcc LD := gcc AR := ar rcs RM := rm -f CP := cp Figure 3 Makefile Hierarchy Customers may specify their own system specific tool chains using this structure. 3.5. Device Access (HAL) Device access routines are bound to the device driver during driver initialization. The below code snippet illustrates the required functions to bind into the HAL. 9

#include idt82v3910.h / Or any other supported device / \brief Function for reading from device \param usrdata optional data passed to write function \param deviceaddr device address (e.g. I2C slave address) \param addroff address offset \return read data T_osUint8 myreadfunc (void usrdata, T_osUint8 deviceaddr, T_osUint8 addroff) { / System specific code to read a register For example, have I2C controller issue read command } / \brief Function to writing to device \param usrdata optional user data passed to read function \param deviceaddr device address (e.g. I2C slave address) \param addroff address offset \param data data to write void mywritefunc (void usrdata, T_osUint8 deviceaddr, T_osUint8 addroff, T_osUint8 data) { / System specific code to write to a register For example use I2C controller to initiate a write command } / \brief Function to initialize device access Optional binding \param userdata optional user data passed to initialization function void myinit (void userdata) { / System specific code to initialize device access mechanism. For example: initialize I2C controller } / \brief Function to deintialize device access Optional binding \param userdata optional user data passed to deinitalization function void mydeinit (void userdata) { / System specific code to read a register For example: shut down I2C controller } Figure 4 HAL Bind Functions 10

3.6. Simulated Device The device driver comes with a device simulator to enable developers to develop software without requiring a physical device. To setup the device driver to use simulated device specify HAL interfaces located in common/access/sim directory. See below initialization example for implementation details. 3.7. Initialization Once both operating system adaptation and HAL integration functions have been coded, initialization of the driver is trivial. 82V391x / 8V893xx family of devices can be populated with up to two APLLs to produce ultra low jitter on certain output paths. Each APLL supports up to two external crystal connections (XTAL1/3 for APLL1 and XTAL2/4 for APLL2). The supported crystal frequencies are 24.8832MHz (SONET), 25MHz (Ethernet), and 25.78125 MHz (Ethernet FEC). All devices communicate with microprocessor through I2C interface and require an I2C slave address. For detailed APLL population and I2C addressing information, please refer to the corresponding datasheet. When initializing the driver, user needs to supply APLL external crystal configuration information (ID and frequency) and an unmodified (without direction bit) 7-bit I2C slave address for the device. The APLL external crystal configuration information is defined as following: / brief Structure containing APLL crystal id and frequency information typedef struct { T_idtApllXtalId apllxtalid; /< APLL crystal ID e.g. APLL_XTAL_1_APLL1 - for APLL1 XTAL1 T_idtApllXtalType apllxtalfreq; /< APLL crystal frequency e.g. APLL_XTAL_FREQ_25000KHz for 25MHz crystal } T_idtApllXtal; For the detailed information of each field in the structure, please refer to the Device Driver Application Programmer s Interface (API) Reference Manual. Below is the sample code on how to initialize the device driver. 11

#include idt82v3910.h / Or any other supported device #include ReadWrite_sim.h / For simulated device #include myreadwrite_i2c.h / User s implementation of I2C functions / Assuming the device has the following APLL crystal configuration: - APLL1 XTAL1 at 25MHz - APLL2 XTAL2 at 24.8832MHz / APLL XTAL configuration list static T_idtApllXtal apllxtallist[] = { / APLL1 XTAL1 at 25MHz { APLL_XTAL_1_APLL1, APLL_XTAL_FREQ_25000KHz }, / APLL2 XTAL2 at 24.8832MHz { APLL_XTAL_2_APLL2, APLL_XTAL_FREQ_24883_DOT_2KHz }, }; / Number of APLL XTAL configuration static T_osUint8 numberofapllxtal = sizeof(apllxtallist)/sizeof(t_idtapllxtal); / Assuming i2c slave address is 0x50 static T_osUint8 i2caddr = 0x50; int main(int argc, char argv[]) { drvhdlr_t hdlr; drvaccess_t deviceaccess; int wantsimulateddevice = 0; / Bind device access functions if (wantsimulateddevice) { / Use a simulated device functions come from ReadWrite_sim.h deviceaccess.initfunc_m = Init_Sim; deviceaccess.deinitfunc_m = DeInit_Sim; deviceaccess.readfunc_m = RDByte_Sim; deviceaccess.writefunc_m = WRByte_Sim; } else { / Access actual device deviceaccess.initfunc_m = myinit; deviceaccess.deinitfunc_m = mydeinit; deviceaccess.readfunc_m = myreadfunc; deviceaccess.writefunc_m = mywritefunc; } / No additional user information required. deviceaccess.userdata_m = NULL; / Initialize driver Driver initialization routine returns a driver handler. This handler is used to refer to a particular instance. hdlr = IDTGeneral_InitDriver("dev82V3910", deviceaccess, IDT_82V3910, apllxtallist, numberofapllxtal, i2caddr, 1); / 0-No high level API used 1-Can use high level API / Initialize 3910 device IDTGeneral_InitDevice(hdlr); } / Start device usage (i.e. provision device) / Deinitialize driver call during system shutdown IDTGeneral_DeInitDriver(hdlr); return 0; Figure 5 Sample Initialization function 12

4. Sample Applications In addition to device driver source code, the package contains sample code for configuring the device. The sample code illustrates a possible design for customer application code. Its primary function is to demonstrate device driver usage. The secondary function is to provide quick provisioning of configurations. Below is an example of sample code. The last three arguments in IDTHlApi_ConfigureOutput function in the sample code are APLL related parameters. If the output does not go through APLL, please set them to unused max enum value, e.g. for APLL instance id, set it to APLL_INST_MAX in case the output does not go through APLL. For detailed description of each function, please refer to the Device Driver Application Programmer s Interface (API) Reference Manual. / @brief Configure the device in the following configuration: IN3 (25 MHz) -> T0 +-> OUT1 (25 MHz) +-> OUT6 (156.25 MHz) @param hdlr Device driver handler void IDTSample_ConfigureSampleConfig1(T_idtDrvHdlr hdlr) { / Disable all outputs IDTHlApi_DisableAllOutputs(hdlr); / Configure input 3, 25MHz IDTHlApi_ConfigureInputFrequency(hdlr, 3, 25000); / Configure DPLL for G8262 Option 1 IDTHlApi_g8262EecOption1(hdlr, DPLL_INSTANCE_1); / Configure output output 1 (25 MHz) using T0 IDTHlApi_ConfigureOutput(hdlr, 1, OutFreq_25000k, DPLL_INSTANCE_1, sonetgigemode_matching, APLL_CONFIG_MAX, APLL_OUT_SIG_MAX, APLL_CLK_SEL_MAX); / We're only using one of the DPLLs / Configure output output 6 (156.25 MHz) using T0 IDTHlApi_ConfigureOutput(hdlr, 6, OutFreq_156250k, DPLL_INSTANCE_1, sonetgigemode_matching, APLL_CONFIG0, / Program the APLL configuration 0 APLL_OUT_SIG_LVPECL, APLL_CLK_SEL_INTERNAL); / We're only using one of the DPLLs } / Enable output IDTOutput_SetOutputEnable(hdlr, 1, 1); IDTOutput_SetOutputEnable(hdlr, 6, 1); Figure 6 Sample Code 13

Sample code is located in [DEVICE]/sample/src directory (where [DEVICE] is 82V3910, 82V3911, 8V89316...). In addition to sample code, the device driver can be compiled to a sample application. This application has the following features: Read/Write access of registers Execute sample configurations Input / Output /DPLL High level API configuration For usage instructions run the compiled sample application without any parameters. 14

5. Debug Tools This final section details various tools provided by the device driver package to aid in debugging issues. Some tools are meant to be used offline. The package currently contains the following tools: Tracing Function tracing allows customers to determine which APIs have been called. Save & Restore Registers Ability to save and load registers in.rgf format (compatible with GUI) GUI Register File Annotation This utility annotates.rgf files generated by the GUI. It adds name and bit field names to each register value entry in the file. It makes it easier to understand the provisioned register values. Further debug tools are planned and will be introduced in the future. We welcome any ideas / feature requests to better provide support for our customers. 15