Interchangeability The What, When and How

Slides:



Advertisements
Similar presentations
1 Symbian Client Server Architecture. 2 Client, who (a software module) needs service from service provider (another software module) Server, who provide.
Advertisements

Operating Systems Components of OS
© Copyrights 1998 Algorithmic Research Ltd. All rights Reserved D a t a S e c u r i t y A c r o s s t h e E n t e r p r i s e Algorithmic Research a company.
Lectures on File Management
Tm LXI Conformance Testing Lynn Wheelwright 19 May 2009.
1 Lab 3 Objectives  Case study: “Hello world” program on motes  Write you first program on mote.
ONYX RIP Version Technical Training General. Overview General Messaging and What’s New in X10 High Level Print and Cut & Profiling Overviews In Depth.
Process Synchronization Continued 7.2 The Critical-Section Problem.
Multi Instruments Data Acquisition Software Evolution
© 2008 Cisco Systems, Inc. All rights reserved.Cisco ConfidentialPresentation_ID 1 Chapter 5: Inter-VLAN Routing Routing & Switching.
SDN and Openflow.
28.2 Functionality Application Software Provides Applications supply the high-level services that user access, and determine how users perceive the capabilities.
2.1 © 2004 Pearson Education, Inc. Exam Managing and Maintaining a Microsoft® Windows® Server 2003 Environment Lesson 2: Installing Windows Server.
J4www/jea Week 3 Version Slide edits: nas1 Format of lecture: Assignment context: CRUD - “update details” JSP models.
Firewall Security Chapter 8. Perimeter Security Devices Network devices that form the core of perimeter security include –Routers –Proxy servers –Firewalls.
CS 290C: Formal Models for Web Software Lecture 10: Language Based Modeling and Analysis of Navigation Errors Instructor: Tevfik Bultan.
Lesson 11-Virtual Private Networks. Overview Define Virtual Private Networks (VPNs). Deploy User VPNs. Deploy Site VPNs. Understand standard VPN techniques.
Copyright © 2002 Pearson Education, Inc.
1 The first step in understanding pointers is visualizing what they represent at the machine level. In most modern computers, main memory is divided into.
Cambodia-India Entrepreneurship Development Centre - : :.... :-:-
EPOCH 1000 File Management Data Logging and Reporting
Operating Systems.
NovaBACKUP 10 xSP Technical Training By: Nathan Fouarge
Leading Edge Climbing Equipment
Guide to Linux Installation and Administration, 2e1 Chapter 8 Basic Administration Tasks.
Protocols and the TCP/IP Suite
5 Chapter Five Web Servers. 5 Chapter Objectives Learn about the Microsoft Personal Web Server Software Learn how to improve Web site performance Learn.
CCS APPS CODE COVERAGE. CCS APPS Code Coverage Definition: –The amount of code within a program that is exercised Uses: –Important for discovering code.
Chapter 13: Implementation Phase 13.3 Good Programming Practice 13.6 Module Test Case Selection 13.7 Black-Box Module-Testing Techniques 13.8 Glass-Box.
Intro to Architecture – Page 1 of 22CSCI 4717 – Computer Architecture CSCI 4717/5717 Computer Architecture Topic: Introduction Reading: Chapter 1.
Prepared by: Sanaz Helmi Hoda Akbari Zahra Ahmadi Sharif University of Tech. Summer 2006 An Introduction to.
1 The Software Development Process  Systems analysis  Systems design  Implementation  Testing  Documentation  Evaluation  Maintenance.
Cohesion and Coupling CS 4311
Microscope Control Configuration This section of the QED manual will describe how to configure you Configure and Control your automated microscope. Mac.
GettingUsers Started Getting Users Started Instructor: Glenda H. Easter ITSW 1410, Presentation Media Software.
The Software Development Process
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 12: Planning and Implementing Server Availability and Scalability.
CSCI 1100/1202 April 1-3, Program Development The creation of software involves four basic activities: –establishing the requirements –creating.
© 2004 Pearson Addison-Wesley. All rights reserved September 14, 2007 Anatomy of a Method ComS 207: Programming I (in Java) Iowa State University, FALL.
Alternate Version of STARTING OUT WITH C++ 4 th Edition Chapter 6 Functions.
Processes and Virtual Memory
1 Chapter 9 Distributed Shared Memory. 2 Making the main memory of a cluster of computers look as though it is a single memory with a single address space.
Lecture 4 Mechanisms & Kernel for NOSs. Mechanisms for Network Operating Systems  Network operating systems provide three basic mechanisms that support.
IT3002 Computer Architecture
CSC 2720 Building Web Applications Basic Frameworks for Building Dynamic Web Sites / Web Applications.
© 2006 Cisco Systems, Inc. All rights reserved.Cisco PublicITE I Chapter 6 1 Router Initialization steps.
1 The Software Development Process ► Systems analysis ► Systems design ► Implementation ► Testing ► Documentation ► Evaluation ► Maintenance.
Object Oriented Programming. OOP  The fundamental idea behind object-oriented programming is:  The real world consists of objects. Computer programs.
CSE 332: C++ pointers, arrays, and references Overview of Pointers and References Often need to refer to another object –Without making a copy of the object.
Race conditions and synchronization issues Exploiting UNIX.
Bradford G. Van Treuren March 16, 2016 How Virtual Instrument Virtual Architecture (VISA) relates to SJTAG What can we learn from VISA? (Part I)
An Overview of Using ESC|StackStudio This presentation is an overview of using the ESC|StackStudio tool in managing your StackVision Configuration.
A+ Guide to Managing and Maintaining Your PC, 7e Chapter 2 Introducing Operating Systems.
Copyright © 2012 Pearson Education, Inc. Chapter 4 Writing Classes : Review Java Software Solutions Foundations of Program Design Seventh Edition John.
Introduction to Operating Systems Concepts
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 12: Planning and Implementing Server Availability and Scalability.
Chapter 5: Enhancing Classes
Distributed Shared Memory
Operating System Structure
Arab Open University 2nd Semester, M301 Unit 5
What is Fibre Channel? What is Fibre Channel? Introduction
Configuring EtherChannels and Switch Troubleshooting
Introduction to Computers
Measurement & Automation Explorer
Hugh Smith and Fred Wiegand
Chapter 2: The Linux System Part 1
Classes and Objects.
Simulating Reference Parameters in C
Presentation transcript:

Interchangeability The What, When and How Alan Hume, BSc MSc Pickering Interfaces April 2013

References References to NI in this document refer to National Instrument Corporation. MAX is an abbreviation for Measurement and Automation Explorer, an NI product. www.ni.com PI refers to Pickering Interfaces Ltd www.pickeringtest.com The IVI Foundation promotes and maintains the IVI driver standard (and other standards) www.ivifoundation.org

What is Interchangeability? Interchangeability permits similar devices from different manufacturers to be interchanged without the need to modify application code This permits the user to freely change hardware for similar products with no implications to the software developed on a test system This concept is the central tenet of the IVI suite of drivers, if properly used

When to use interchangeability Interchangeability can be used to reduce system down-time by allowing multiple options for hardware It can protect against hardware obsolescence It can allow cheaper hardware options to be considered

When NOT to use interchangeability If the hardware does not conform to an IVI class then interchangeability is not supported Interchangeability requires the use of the class driver, so any special features provided by any particular vendor cannot be used. If you need that special feature, you cannot use it via the interchangeability features of IVI Speed can be an issue. In some cases the IVI class driver can result in slower execution of applications

Types of IVI driver Extract from IVI-3.1 Driver Architecture Specification

Types of IVI Driver As can be seen in the diagram, there are different types of IVI driver To achieve interchangeability the driver must be class compliant, that means it must support the minimum set of functions defined by the IVI Foundation specification for that hardware type

Types of IVI Driver A user program may simultaneously access the Class-Compliant and the Specific drivers. However, use of the Specific driver may compromise interchangeability. Reproduced from IVI-3.1 Specification

IVI Swtch The IviSwtchBase capability group defines the following functions: Can Connect Connect Disconnect Disconnect All Get Channel Name (IVI-C only) Get Path Is Debounced (IVI-C only) Set Path Wait For Debounce Only those functions in red can control the state of a switch, a very limited set of functions.

Pickering IVI-Swtch driver The Pickering IVI-Swtch driver is a class compliant specific driver. As such it supports all the base functions, but also provides further functions for more powerful control of Pickering switches These further functions cannot be used if interchangeability is required. Note: it is possible to access the specific driver via the class driver ,so providing access to the specific features. However, if any of the alternate products does not provide an equivalent feature, then complete interchangeability is probably impossible.

How to code for interchangeability Key to interchangeability is the IVI Configuration Store This is an XML file which contains definitions for the IVI drivers and a layer to achieve interchangeability The most common tool for interaction with the IVI Configuration store is probably NI MAX, however other means are possible

NI MAX and the IVI Configuration Store The IVI section is highlighted in pink

Explaining the IVI Configuration There are a couple of levels of indirection in the store, let’s examine these to see what they allow us to do: Logical Names A logical name is nothing more than a pointer to a Driver Session.

Driver Session The driver session contains the specific parameters to be passed to the IVI driver ‘InitWithOptions’ function. The driver session could be modified to refer to different hardware with no need to modify the users application

Drivers The drivers available are also contained in the IVI Configuration Store. Driver Sessions are constructed around the available drivers.

Logical Name So, the key steps for interchangeability are: use the Logical Name instead of a hardware address the Logical Name can be modified to refer to alternate Driver Sessions, this modification is done in the IVI Configuration Store, the user code is unaffected

Logical Name There are other areas that need some attention in order to achieve interchangeability There is no specification for the coding of some of the driver capabilities, different drivers may use different nomenclamature For example: NI switch cards enumerate from a base of 0, PI cards from a base of 1 NI: x0, x1, x2, y0, y1, y2 PI: x1, x2, x3, y1, y2, y3 A means of dealing with these differences is needed to achieve interchangeability

Channel Names The IVI driver model treats a switch object like a ‘black boxe’. The interface to the outside work is defined, but details of the internal operation is hidden. So, each switch is represented by its terminals and paths created by requesting connections between those terminals, for example: IviSwtch_Connect(drv_session, “x1”, “y1”); So, an IVI driver will present the user with a list of channels that it recognises,

Logical Name The IVI Configuration Store provides a system of Virtual Names that allow users to alias channel names. This overcomes nomenclamature differences between cards. This is also a useful means to provide more meaningful channel names, even if interchangeability is not required.

Writing Code A programmer may be tempted to code like this: err = pi40iv_InitWithOptions( "PXI5::15::INSTR", VI_FALSE, VI_FALSE, "Simulate=0,RangeCheck=1,QueryInstrStatus=1,Cache=1,DriverSetup=Model:41-182-003;", &vi); Pi40iv_Connect(vi, “x0”, “y0”); This offers NO interchangeability since: The hardware address is hard coded into the program The hardware model is hard coded into the program The custom driver is hard coded into the program The channel names may change on a different card

Writing Code One step toward interchangeability: err = pi40iv_init("atten_ln", 0, 0, &vi); pi40iv_Connect(vi, “x0”, “y0”); This offers some interchangeability since: The hardware address is no longer hard coded into the program The hardware model is no longer hard coded into the program BUT - the custom driver is hard coded into the program The channel names are still specific to the manufacturer This would permit interchangeability of Pickering switch cards, but not interchangeability between vendors

Writing Code Full interchangeability: err = IviSwtch_init("atten_ln", 0, 0, &vi); IviSwtch_Connect(vi, “DUT1”, “DMM”); This offers full interchangeability since: The hardware address is no longer hard coded into the program The hardware model is no longer hard coded into the program The custom driver is no longer hard coded into the program Virtual channel names have been used and can be differently defined for different cards This would permit interchangeability of between vendors

Example – the hardware The designer has decided that either an NI PXI-2599 or a PI 40-780-522 would be suitable for this system; furthermore the PI card may be mounted in a PXI chassis or an LXI chassis. How do we make these devices interchangeable?

Example – the IVI Store – NI setup

Example – the IVI Store – PI setup

Example – looking from the IVI Driver NI PI Raw With Virtual Names

Example – the test program // ivi_example.cpp : Example of IVI interchangeability #include "stdafx.h" #include "iviswtch.h" // Use IviSwtch Class Driver int main(int argc, char *argv[]) { ViSession vi = 0; ViStatus error = 0; checkErr( IviSwtch_init("prog_sw", // initialize a session on the switch VI_FALSE, VI_FALSE, &vi) ); IviSwtch_DisconnectAll(vi); // make sure all switches are at default checkErr( IviSwtch_Connect(vi, "SGEN", "DUT1_IN") ); // connect SGEN checkErr( IviSwtch_Connect(vi, "DUT1_OUT", "SPA") ); // connect SPA Go_Do_A_Test("DUT1"); // Perform test on DUT1 IviSwtch_DisconnectAll(vi); // reset all switches checkErr( IviSwtch_Connect(vi, "SGEN", "DUT2_IN") ); // connect SGEN checkErr( IviSwtch_Connect(vi, "DUT2_OUT", "SPA") ); // connect SPA Go_Do_A_Test("DUT2"); // Perform test on DUT2 Error: if (error != VI_SUCCESS) printf("Error: %08x\n", error); IviSwtch_close(vi); // close the session on the switch return EXIT_SUCCESS; } ( IviSwtch_init("prog_sw", Note use of class driver, logical names, and virtual names making this code interchangeable IviSwtch_Connect(vi, "SGEN", "DUT1_IN")

Example – the test program At any time the IVI Configuration Store may be edited to modify the Device Driver referenced by the Logical Name. This permits full interchangeability between the 3 different switches. If a further switch type is required, all that has to be done is to create a Device Driver for that hardware, matching the Virtual Names, then modify the Logical Name to refer to the new Driver Session. NO CODE MODIFICATION REQUIRED

Summary ‘Under the bonnet’ the IVI system handles the interchangeability. When program calls are made, the IVI system calls the appropriate driver with the appropriate parameters If multiple Driver Sessions are created for different hardware solutions, then all the user has to do is to modify the Logical Name to point to the alternate Driver Session

Remember Be sure that interchangeability will not compromise performance or capability Choose products that offer an IVI Class-Compliant driver Program using the IVI Class Driver, not vendor provided drivers Manage the differences between cards in the IVI Configuration Store, not in the user code

Interchangeability - Summary Fine Any questions?