mdaq-d3 : a c++ distributed driver development framework

25
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011 Mdaq-D3 : a C++ Distributed Driver Development Framework Chavas Joël, Château Frédéric, Druillole Frédéric, Usher Nathan, Pollacco Emmanuel and Anvar Shebli

Upload: joelchavas

Post on 19-Jun-2015

114 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Mdaq-D3 :a C++ Distributed Driver Development Framework

Chavas Joël, Château Frédéric, Druillole Frédéric,

Usher Nathan, Pollacco Emmanueland Anvar Shebli

Page 2: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Drivers

Driver functionsDriver functions read / write protocolread / write protocol

Page 3: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Control of a system of electronic cards

AGetBus

I2C SPIethernet

Page 4: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

A system of electronic cards -software point of view

IceIceECCECC

NodeNode

Nodes (with OS)

VxWorksLinux

...

Nodes (with OS)

VxWorksLinux

...

Devices I2CSPI

AgetBus...

Page 5: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Distributed Driver Development -where we want to arrive

remote driver functions

read / write protocol

Page 6: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

● Remote driver functions using remote register access

● Dynamic development through configuration (no recompilation)

Distributed Driver Development -where we want to arrive

Page 7: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

A system of electronic cards -software point of view

IceIceECCECC

NodeNode

Nodes (with OS):

VxWorksLinux

...

Nodes (with OS):

VxWorksLinux

...

Devices I2CSPI

AgetBus...

Page 8: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Hardware Node

DeviceDevice

RegisterRegister

BitFieldBitField

Register Access PolicyRegister Access Policy

*1*

*

*

1

1

1

HardwareNode

loadConfig()

Page 9: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Register Access Policy

AccessPolicy

deviceAddress registerOffset

write() read()

● At compile time :

● REGISTER_POLICY(I2CAccessPolicy, "I2CBus");

● REGISTER_POLICY(AGetAccessPolicy, "AGetBus");

Page 10: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Electronic Control Core

SystemSystem

NodeNode

0...1

*

1

1

ECC

● write()● read()● loadConfig()

DeviceDevice

1

*

Page 11: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Access points to the framework

EccEcc

● write()● read()● loadConfig()

● write()● read()● loadConfig()

UserEccUserEcc

● driverFunction1()● driverFunction2()

● driverFunction1()● driverFunction2()

HardwareNodeHardwareNode

UserNodeUserNode

● function1()● function2()

● function1()● function2()

● loadConfig()● loadConfig()

Page 12: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

GET configuration

ONE POLICY PER DEVICE

Page 13: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Distributed Driver Development -user guide

● Prototype● define the access policies● configuration: interface between firmware and software● remote driver functions on the ECC

● Final product● Some driver functions brought to the nodes for the sake of

performance

● In both cases● system structure defined at run-time (configuration)

Page 14: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Distributed Driver Development

define access policies(compile time)

Page 15: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Distributed Driver Development

write the configuration(loaded at run time)

Page 16: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Distributed Driver Development

define the driverfunctions

Page 17: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

A run

remote driver functions

access policies

Page 18: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

A run

remote driver functions

configure

access policies

Page 19: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

A run

remote driver functions

read / write protocol

Page 20: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

From prototype to performance

move some driver functions into the cards

Page 21: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Your application as an ECC client

ECC client :

scriptGUI

testbench...

ECC client :

scriptGUI

testbench...

EccEcc

Page 22: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Libraries

Today’s distribution mode: ask Shebli Anvar or Today’s distribution mode: ask Shebli Anvar or myself for a tarball (myself for a tarball ([email protected]@cea.fr; ; [email protected]@cea.fr))Licencing: GPL-like Cecill (open source, special Licencing: GPL-like Cecill (open source, special contract for proprietary licencing)contract for proprietary licencing)

Today’s distribution mode: ask Shebli Anvar or Today’s distribution mode: ask Shebli Anvar or myself for a tarball (myself for a tarball ([email protected]@cea.fr; ; [email protected]@cea.fr))Licencing: GPL-like Cecill (open source, special Licencing: GPL-like Cecill (open source, special contract for proprietary licencing)contract for proprietary licencing)

● CompoundConfig

● Flexible advanced configuration tool● Mdaq-D3

● A Distributed Driver Development framework

Page 23: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Conclusion

● Mdaq-D3:● A framework for the slow control of a system of

electronic cards● Distributed driver development

(through remote register access)● Dynamic development through configuration

(no recompilation)● An interface between firmware and software

Page 24: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Thanks

● Engineers:● Shebli Anvar, Frédéric Druillole, Nathan Usher,

Patrick Sizun

● Grants:● ANR GET● Eurotalents program

Page 25: Mdaq-D3 : a C++ Distributed Driver Development Framework

Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011

Mdaq-D3 for a dynamicDistributed Driver Development

remote driver functions

read / write protocol

configuration