Hall A meeting October 15 th 2013 Alexandre Camsonne.

Slides:



Advertisements
Similar presentations
Device Drivers. Linux Device Drivers Linux supports three types of hardware device: character, block and network –character devices: R/W without buffering.
Advertisements

GlueX Collaboration Meeting June 3-5, GeV Trigger Electronics R. Chris Cuevas 1.Hardware Status  Production Updates 2.DAq and Trigger Testing 
1/1/ / faculty of Electrical Engineering eindhoven university of technology Processor support devices Part 1:Interrupts and shared memory dr.ir. A.C. Verschueren.
DCM Embedded Software Infrastructure, Build Environment and Kernel Modules A.Norman (U.Virginia) 1 July '09 NOvA Collaboration Mtg.
June 19, 2002 A Software Skeleton for the Full Front-End Crate Test at BNL Goal: to provide a working data acquisition (DAQ) system for the coming full.
12 GeV Trigger Workshop Session II - DAQ System July 8th, 2009 – Christopher Newport Univ. David Abbott.
High Performance Computing (HPC) at Center for Information Communication and Technology in UTM.
hardware and operating systems basics.
Basic Input Output System
Stanford Linear Accelerator Center PowerPC and VXI Kinetic Systems V152 Embedded PowerPC Slot-0 Controller.
Lab How to Use WANem Last Update Copyright 2011 Kenneth M. Chipps Ph.D. 1.
VxWorks & Memory Management
DAQ Status & Plans GlueX Collaboration Meeting – Feb 21-23, 2013 Jefferson Lab Bryan Moffit/David Abbott.
OPERATING SYSTEM OVERVIEW. Contents Basic hardware elements.
SBS/A1n DAQ status Alexandre Camsonne August 28 th 2012.
1 Lecture 20: I/O n I/O hardware n I/O structure n communication with controllers n device interrupts n device drivers n streams.
Hall A DAQ status and upgrade plans Alexandre Camsonne Hall A Jefferson Laboratory Hall A collaboration meeting June 10 th 2011.
1-1 Embedded Network Interface (ENI) API Concepts Shared RAM vs. FIFO modes ENI API’s.
Cisco S2 C4 Router Components. Configure a Router You can configure a router from –from the console terminal (a computer connected to the router –through.
I/O Example: Disk Drives To access data: — seek: position head over the proper track (8 to 20 ms. avg.) — rotational latency: wait for desired sector (.5.
GBT Interface Card for a Linux Computer Carson Teale 1.
Enabling Palacios PXE-Boot Chen Jin Bharath Pattabiraman Patrick Foley.
Linux development on embedded PowerPC 405 Jarosław Szewiński.
1-1 NET+OS Software Group Flash API Multiple flash memory bank support New Flash API introduction Detailed Flash API Function presentation Supporting.
Data Acquisition for the 12 GeV Upgrade CODA 3. The good news…  There is a group dedicated to development and support of data acquisition at Jefferson.
Ethernet Driver Changes for NET+OS V5.1. Design Changes Resides in bsp\devices\ethernet directory. Source code broken into more C files. Native driver.
Interrupts By Ryan Morris. Overview ● I/O Paradigm ● Synchronization ● Polling ● Control and Status Registers ● Interrupt Driven I/O ● Importance of Interrupts.
David Abbott - JLAB DAQ group Embedded-Linux Readout Controllers (Hardware Evaluation)
Application Block Diagram III. SOFTWARE PLATFORM Figure above shows a network protocol stack for a computer that connects to an Ethernet network and.
 Wind River Systems, Inc Appendix - E Shared Memory Network.
KIT – The cooperation of Forschungszentrum Karlsruhe GmbH and Universität Karlsruhe (TH) SYSTEM ARCHITECTURE GROUP, KARLSRUHE UNIVERSITY A Microkernel.
TI Information – Selective Disclosure Boot TI Keystone II Linux Kernel (RAM File-system) Vincent Han Mar,
Hall A DAQ meeting January 12 th Summary summary GMp /DVCS BCM / Unser Raster Summary Compton EDTM F1 TDC Halo monitor Gas Cerenkov SBS Fastbus.
L3 DAQ Doug Chapin for the L3DAQ group DAQShifters Meeting 10 Sep 2002 Overview of L3 DAQ uMon l3xqt l3xmon.
MOLLER DAQ Aug 2015 meeting Team : R. Michaels, P. M. King, M. Gericke, K. Kumar R. Michaels, MOLLER Meeting, Aug, 2015.
Sep. 17, 2002BESIII Review Meeting BESIII DAQ System BESIII Review Meeting IHEP · Beijing · China Sep , 2002.
Chapter 13 – I/O Systems (Pgs ). Devices  Two conflicting properties A. Growing uniformity in interfaces (both h/w and s/w): e.g., USB, TWAIN.
SoLiD/PVDIS DAQ Alexandre Camsonne. DAQ limitations Electronics Data transfer.
Jefferson Laboratory Hall A SuperBigBite Spectrometer Data Acquisition System Alexandre Camsonne APS DNP 2013 October 24 th 2013 Hall A Jefferson Laboratory.
C LANGUAGE Characteristics of C · Small size
Input/Output Problems Wide variety of peripherals —Delivering different amounts of data —At different speeds —In different formats All slower than CPU.
Electronics for HPS Proposal September 20, 2010 S. Boyarinov 1 HPS DAQ Overview Sergey Boyarinov JLAB June 17, 2014.
JRA-1 Meeting, Jan 25th 2007 A. Cotta Ramusino, INFN Ferrara 1 EUDRB: A VME-64x based DAQ card for MAPS sensors. STATUS REPORT.
Renesas Electronics America Inc. © 2010 Renesas Electronics America Inc. All rights reserved. Overview of Ethernet Networking A Rev /31/2011.
SBS/A1n Fast DAQ Alexandre Camsonne October 19 th 2012.
The 2001 Tier-1 prototype for LHCb-Italy Vincenzo Vagnoni Genève, November 2000.
DAQ Status & Plans GlueX Collaboration Meeting – Feb 21-23, 2013 Jefferson Lab Bryan Moffit/David Abbott.
October Test Beam DAQ. Framework sketch Only DAQs subprograms works during spills Each subprogram produces an output each spill Each dependant subprogram.
بسم الله الرحمن الرحيم MEMORY AND I/O.
APEX DAQ rate capability April 19 th 2015 Alexandre Camsonne.
HPS TDAQ Review Sergey Boyarinov, Ben Raydo JLAB June 18, 2014.
SBS / A1n DAQ Alexandre Camsonne 02/27/2013. APV25 Standard VME access ok : can configure board Check address assignment in VME64X crate Need to debug.
R. Michaels, JLAB PREX Mtg, July 2008 Compton DAQ (General) Remaining experts : Sirish Nanda, Alexandre Camsonne, me Recent Exercises Port to vxWorks 5.5.
Super BigBite DAQ & Trigger Jens-Ole Hansen Hall A Collaboration Meeting 16 December 2009.
The ALICE Data-Acquisition Read-out Receiver Card C. Soós et al. (for the ALICE collaboration) LECC September 2004, Boston.
BVM Engineering College Electrical Engineering Department : Microprocessor and Microcontroller Interfacing Interrupts of 8051 Prepared by:
GBT-FPGA Interface Carson Teale.
Key Terms By: Kelly, Jackson, & Merle
Chapter 8 Input/Output I/O basics Keyboard input Monitor output
CSCI 315 Operating Systems Design
Example of DAQ Trigger issues for the SoLID experiment
I/O Systems I/O Hardware Application I/O Interface
Chapter 13: I/O Systems I/O Hardware Application I/O Interface
Lecture9: Embedded Network Operating System: cisco IOS
Computer System Laboratory
Lecture9: Embedded Network Operating System: cisco IOS
Chapter 13: I/O Systems “The two main jobs of a computer are I/O and [CPU] processing. In many cases, the main job is I/O, and the [CPU] processing is.
Presentation transcript:

Hall A meeting October 15 th 2013 Alexandre Camsonne

Outline Single board computers Hall A servers implementation Differences with VxWorks Read out code Adapting code Available codes Performance To do list Conclusion

Single board computers Core i7 single board computer 2.53 GHz 4 GB RAM Full Linux PC on a board VME320 XVB601/XVB602 Compact Flash XVR14 On board Flash

Hall A server implementation DHCP server PXE/TFTP and NFS server Accessible from adaql1 in /root/diskless/ If need to add a new CPU : need to know MAC address and add to DHCP and create directory for system files on CHAFS host intelha7 { filename "linux-install/pxelinux.0"; # File location relative to /tftpboot/ next-server ; # TFTP server hardware ethernet 00:20:fa:fa:fa:fa; # Client MAC XVR14 fixed-address ; # Client IP }

Difference with vxWorks CPUs Boot using PXE or onboard drive Centos 5.8 distribution No boot parameters, use DHCP to assign IP address Little Endian Use C directly instead of CRL Use virtual memory

Readout code CODA library : jvme Readout is C program with includes and link to JVME Supported and developped by Bryan Moffit based_VME_Controllers /u/site/coda/3.0/linuxvme /u/site/coda/3.0/linuxvme/examples

Adapting programs vxWorksLinuxNotes STATUS sysBusToLocalAdrs (int adrsSpace, char *busAdrs, char **pLocalAdrs); int vmeBusToLocalAdrs(int vmeAdrsSpace, char *vmeBusAdrs, char **pLocalAdrs); int vxMemProbe(char *addr, int mode, int size, char *rval); int vmeMemProbe(char *addr, int size, char *rval);Linux, mode is read only STATUS intConnect (VOIDFUNCPTR *vector, VOIDFUNCPTR routine, int parameter); int vmeIntConnect(unsigned int vector, unsigned int level, VOIDFUNCPTR routine, unsigned int arg); int intDisconnect(int vector)int vmeIntDisconnect(unsigned int level);vector != level int sysIntEnable(int);NONE int sysIntDisable(int);NONE int intLock();NONE void intUnlock(int key);NONE STATUS usrVmeDmaConfig(unsigned int addrType, unsigned int dataType, unsigned int sstMode); int vmeDmaConfig(unsigned int addrType, unsigned int dataType, unsigned int sstMode); STATUS sysVmeDmaSend (UINT32 locAdrs, UINT32 vmeAdrs, int size, BOOL toVme); int vmeDmaSend(unsigned int locAdrs, unsigned int vmeAdrs, int size); Linux, always from VME int sysVmeDmaDone(int pcnt, int pflag);int vmeDmaDone(); vxWorks: returns size - (#bytes transferred) Linux: returns (#bytes transferred)

Readout code ( vme_list.c ) /************************************************************************* * * vme_list.c - Library of routines for readout and buffering of * events using a JLAB Trigger Interface (TI) with * a Linux VME controller. * */ /* Event Buffer definitions */ #define MAX_EVENT_POOL 400 #define MAX_EVENT_LENGTH 1024*10 /* Size in Bytes */ /* Define Interrupt source and address */ #define TIR_SOURCE #define TIR_ADDR 0x0ed0 /* TIR_MODE: 0 : interrupt on trigger, 1 : interrupt from Trigger Supervisor signal 2 : polling for trigger 3 : polling for Trigger Supervisor signal */ #define TIR_MODE 2 #include "linuxvme_list.c" /* source required for CODA */ #include "usrstrutils.c" /* helper routines to pass data from mSQL to ROC */ /* Globals to be filled by usrstrutils */ int string1=0, string2=0; /* defined when string is present in CODA database */ int ps1=0,ps2=0,ps3=0,ps4=0,ps5=0,ps6=0,ps7=0,ps8=0; /* defined in "ffile" */ /* function prototype */ void rocTrigger(int arg); void rocDownload() { /* Setup Address and data modes for DMA transfers * * vmeDmaConfig(addrType, dataType, sstMode); * * addrType = 0 (A16) 1 (A24) 2 (A32) * dataType = 0 (D16) 1 (D32) 2 (BLK32) 3 (MBLK) 4 (2eVME) 5 (2eSST) * sstMode = 0 (SST160) 1 (SST267) 2 (SST320) */ vmeDmaConfig(2,5,1); /* Initialize usrstrutils */ init_strings(); string1 = getflag("string"); string2 = getflag("string2"); printf("usrstrutils configuration:\n"); printf("\tstring1 = %d\n\tstring2 = %d\n",string1,string2); printf("rocDownload: User Download Executed\n"); } void rocPrestart() { unsigned short iflag; int stat; /* Check ffile for changes (usrstrutils) Useful for items that may change without re-download (e.g. prescale factors) */ init_strings(); ps1 = getint("ps1"); printf("usrstrutils configuration:\n"); printf("\tps1 = %d\n",ps1); /* Program/Init VME Modules Here */ printf("rocPrestart: User Prestart Executed\n"); } void rocGo() { /* Enable modules, if needed, here */ /* Interrupts/Polling enabled after conclusion of rocGo() */ } void rocEnd() { printf("rocEnd: Ended after %d events\n",tirGetIntCount()); } void rocTrigger(int arg) { int ii; /* Example: Raise the 0th (1<<0) and 2nd (1<<2) output level on the TI */ tirIntOutput(1<<0 | 1<<2); /* Insert some data here - Make sure bytes are ordered little-endian (LSWAP)*/ *dma_dabufp++ = LSWAP(0xda000022); for(ii=0; ii<20; ii++) { *dma_dabufp++ = LSWAP(ii); } *dma_dabufp++ = LSWAP(0xda0000ff); /* Drop all output levels on the TI */ tirIntOutput(0); }

Readout code ( vme_list.c ) /* Initialize usrstrutils */ init_strings(); string1 = getflag("string"); string2 = getflag("string2"); printf("usrstrutils configuration:\n"); printf("\tstring1 = %d\n\tstring2 = %d\n",string1,string2); printf("rocDownload: User Download Executed\n"); } void rocPrestart() { unsigned short iflag; int stat; /* Check ffile for changes (usrstrutils) Useful for items that may change without re-download (e.g. prescale factors) */ init_strings(); ps1 = getint("ps1"); printf("usrstrutils configuration:\n"); printf("\tps1 = %d\n",ps1); /* Program/Init VME Modules Here */ printf("rocPrestart: User Prestart Executed\n"); } void rocGo() { /* Enable modules, if needed, here */ /* Interrupts/Polling enabled after conclusion of rocGo() */ } void rocEnd() { printf("rocEnd: Ended after %d events\n",tirGetIntCount()); } void rocTrigger(int arg) { int ii; /* Example: Raise the 0th (1<<0) and 2nd (1<<2) output level on the TI */ tirIntOutput(1<<0 | 1<<2); /* Insert some data here - Make sure bytes are ordered little-endian (LSWAP)*/ *dma_dabufp++ = LSWAP(0xda000022); for(ii=0; ii<20; ii++) { *dma_dabufp++ = LSWAP(ii); } *dma_dabufp++ = LSWAP(0xda0000ff); /* Drop all output levels on the TI */ tirIntOutput(0); }

Linux VME drivers and readout JLAB boards : FADC250, F1,TI, TS CAEN V792, V775, V1190 Fastbus SFI 1877, 1881 Scaler SIS3801 MPD library ( C++ based )

Performances Most gain when transferring a lot of data Should benefit DVCS and experiment using FADC Up to 115 Mbytes/s, close to Gigabit ethernet line speed Twice faster than vxWorks CPU thanks to multicore

To do list Add adaq and a-onl directory Automatic start of ROC in startcoda, ROC not started automatically for debugging DVCS port of ARS and trigger libraries and debug Test INFN APV25 Readout with CODA Setup serial port and output to portserver

Conclusion New Intel VME CPU deployed Different way to boot Server infrastructure in place Readout available for most boards Board about twice more faster for about same price as Power PC