mdaq-d3 : a c++ distributed driver development framework
TRANSCRIPT
![Page 1: Mdaq-D3 : a C++ Distributed Driver Development Framework](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/1.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/2.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/3.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/4.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/5.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/6.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/7.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/8.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/9.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/10.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/11.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/12.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/13.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/14.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/15.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/16.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/17.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/18.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/19.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/20.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/21.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/22.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/23.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/24.jpg)
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](https://reader033.vdocuments.mx/reader033/viewer/2022052621/55837dbbd8b42aef748b4a36/html5/thumbnails/25.jpg)
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