mdaq-d3 : a c++ distributed driver development framework
TRANSCRIPT
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
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
Drivers
Driver functionsDriver functions read / write protocolread / write protocol
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
Control of a system of electronic cards
AGetBus
I2C SPIethernet
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...
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
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
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...
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()
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");
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
*
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()
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
GET configuration
ONE POLICY PER DEVICE
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)
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
Distributed Driver Development
define access policies(compile time)
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
Distributed Driver Development
write the configuration(loaded at run time)
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
Distributed Driver Development
define the driverfunctions
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
A run
remote driver functions
access policies
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
A run
remote driver functions
configure
access policies
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
A run
remote driver functions
read / write protocol
Joël Chavas (CEA Irfu) – 24 october 2011 – IEEE NSS 2011
From prototype to performance
move some driver functions into the cards
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
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
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
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
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