{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,4,13]],"date-time":"2026-04-13T18:47:58Z","timestamp":1776106078504,"version":"3.50.1"},"reference-count":37,"publisher":"Association for Computing Machinery (ACM)","issue":"PLDI","license":[{"start":{"date-parts":[[2024,6,20]],"date-time":"2024-06-20T00:00:00Z","timestamp":1718841600000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2024,6,20]]},"abstract":"<jats:p>The traditional approach to programming embedded systems is monolithic: firmware on a microcontroller contains both application code and the drivers needed to communicate with sensors and actuators, using low-level protocols such as I2C, SPI, and RS232. In comparison, software development for the cloud has moved to a service-based development and operation paradigm: a service provides a discrete unit of functionality that can be accessed remotely by an application, or other service, but is independently managed and updated.<\/jats:p>\n          <jats:p>We propose, design, implement, and evaluate a service-based approach to prototyping embedded systems called Jacdac. Jacdac defines a service specification language, designed especially for embedded systems, along with a host of specifications for a variety of sensors and actuators. With Jacdac, each sensor\/actuator in a system is paired with a low-cost microcontroller that advertises the services that represent the functionality of the underlying hardware over an efficient and low-cost single-wire bus protocol. A separate microcontroller executes the user's application program, which is a client of the Jacdac services on the bus.<\/jats:p>\n          <jats:p>Our evaluation shows that Jacdac supports a service-based abstraction for sensors\/actuators at low cost and reasonable performance, with many benefits for prototyping: ease of use via the automated discovery of devices and their capabilities, substitution of same-service devices for each other, as well as high-level programming, monitoring, and debugging. We also report on the experience of bringing Jacdac to commercial availability via third-party manufacturers.<\/jats:p>","DOI":"10.1145\/3656405","type":"journal-article","created":{"date-parts":[[2024,6,20]],"date-time":"2024-06-20T16:27:20Z","timestamp":1718900840000},"page":"692-715","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["Jacdac: Service-Based Prototyping of Embedded Systems"],"prefix":"10.1145","volume":"8","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-9468-5420","authenticated-orcid":false,"given":"Thomas","family":"Ball","sequence":"first","affiliation":[{"name":"Microsoft, Redmond, USA"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-1020-988X","authenticated-orcid":false,"given":"Peli","family":"de Halleux","sequence":"additional","affiliation":[{"name":"Microsoft, Redmond, United States"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9617-7446","authenticated-orcid":false,"given":"James","family":"Devine","sequence":"additional","affiliation":[{"name":"Microsoft, Cambridge, United Kingdom"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-9314-7762","authenticated-orcid":false,"given":"Steve","family":"Hodges","sequence":"additional","affiliation":[{"name":"Lancaster University, Lancaster, United Kingdom"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5791-2228","authenticated-orcid":false,"given":"Micha\u0142","family":"Moskal","sequence":"additional","affiliation":[{"name":"Microsoft, Redmond, United States"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2024,6,20]]},"reference":[{"key":"e_1_3_1_2_2","unstructured":"Analog Devices Resource Library. 2000. Guide to Selecting and Using RS-232 RS-422 and RS-485 Serial Data Standards."},{"key":"e_1_3_1_3_2","unstructured":"Arm. 2017. The Arm Mbed IoT Device Platform. https:\/\/www.mbed.com\/"},{"key":"e_1_3_1_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/3368856"},{"issue":"2","key":"e_1_3_1_5_2","first-page":"48","article-title":"Transmitting data and power over a one-wire bus","volume":"14","author":"Awtrey Dan","year":"1997","unstructured":"Dan Awtrey. 1997. Transmitting data and power over a one-wire bus. Sensors-The Journal of Applied Sensing Technology 14, 2 (1997), 48\u201351.","journal-title":"Sensors-The Journal of Applied Sensing Technology"},{"key":"e_1_3_1_6_2","doi-asserted-by":"publisher","unstructured":"Thomas Ball Abhijith Chatra Peli de Halleux Steve Hodges Micha\u0142 Moskal and Jacqueline Russell. 2019. Microsoft MakeCode: embedded programming for education in blocks and TypeScript. In Proceedings of the 2019 ACM SIGPLAN symposium on SPLASH-E. ACM 7\u201312. https:\/\/doi.org\/10.1145\/3358711.3361630 10.1145\/3358711.3361630","DOI":"10.1145\/3358711.3361630"},{"key":"e_1_3_1_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/3357390.3361032"},{"key":"e_1_3_1_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/997163.997169"},{"key":"e_1_3_1_9_2","doi-asserted-by":"publisher","unstructured":"Nathan Cooprider Will Archer Eric Eide David Gay and John Regehr. 2007. Efficient Memory Safety for TinyOS. In Proceedings of the 5th International Conference on Embedded Networked Sensor Systems (Sydney Australia) (SenSys '07) ACM 205\u2013218. https:\/\/doi.org\/10.1145\/1322263.1322283 10.1145\/1322263.1322283","DOI":"10.1145\/1322263.1322283"},{"key":"e_1_3_1_10_2","doi-asserted-by":"publisher","DOI":"10.1109\/MCE.2013.2257289"},{"key":"e_1_3_1_11_2","doi-asserted-by":"publisher","unstructured":"James Devine Thomas Ball Peli de Halleux Micha\u0142 Moskal and Steve Hodges. 2024. Jacdac: Service-based Prototyping of Embedded Systems (PLDI 2024 Artifact Evaluation). https:\/\/doi.org\/10.5281\/zenodo.10892762 10.5281\/zenodo.10892762","DOI":"10.5281\/zenodo.10892762"},{"key":"e_1_3_1_12_2","doi-asserted-by":"publisher","DOI":"10.1145\/3211332.3211335"},{"key":"e_1_3_1_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/3550317"},{"key":"e_1_3_1_14_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-319-67425-4_12"},{"key":"e_1_3_1_15_2","doi-asserted-by":"publisher","DOI":"10.1109\/TOOLS.1997.681859"},{"key":"e_1_3_1_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/1065910.1065917"},{"key":"e_1_3_1_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/781131.781133"},{"key":"e_1_3_1_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2019.2935058"},{"key":"e_1_3_1_19_2","doi-asserted-by":"publisher","DOI":"10.1109\/MIM.2009.4762946"},{"key":"e_1_3_1_20_2","unstructured":"David I Lehn Craig W Neely Kevin Schoonover Thomas L Martin and Mark T Jones. 2004. e-TAGs: e-textile attached gadgets. (2004). http:\/\/hdl.handle.net\/10919\/80538"},{"key":"e_1_3_1_21_2","first-page":"207","volume-title":"10th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2012, Hollywood, CA, USA, October 8-10, 2012","author":"Levis Philip Alexander","year":"2012","unstructured":"Philip Alexander Levis. 2012. Experiences from a Decade of TinyOS Development. In 10th USENIX Symposium on Operating Systems Design and Implementation, OSDI 2012, Hollywood, CA, USA, October 8-10, 2012, Chandu Thekkath and Amin Vahdat (Eds.). USENIX Association, 207\u2013220. https:\/\/www.usenix.org\/conference\/osdi12\/technical-sessions\/presentation\/levis"},{"key":"e_1_3_1_22_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-27139-2_7"},{"key":"e_1_3_1_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/384197.384214"},{"key":"e_1_3_1_24_2","volume-title":"Proceedings of the 4th Conference on Symposium on Operating System Design & Implementation - Volume 4 (San Diego, California) (OSDI'00)","author":"M\u00e9rillon Fabrice","year":"2000","unstructured":"Fabrice M\u00e9rillon, Laurent R\u00e9veill\u00e8re, Charles Consel, Renaud Marlet, and Gilles Muller. 2000. Devil: An IDL for Hardware Programming. In Proceedings of the 4th Conference on Symposium on Operating System Design & Implementation - Volume 4 (San Diego, California) (OSDI'00). USENIX Association, USA, Article 2. http:\/\/dl.acm.org\/citation.cfm?id=1251231"},{"key":"e_1_3_1_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/1753326.1753393"},{"key":"e_1_3_1_26_2","doi-asserted-by":"crossref","unstructured":"Jon Postel et al. 1980. User datagram protocol. Internet Standard RFC 768.","DOI":"10.17487\/rfc0768"},{"key":"e_1_3_1_27_2","doi-asserted-by":"crossref","unstructured":"Jon Postel et al. 1981. Transmission control protocol. Internet Standard RFC 793.","DOI":"10.17487\/rfc0793"},{"key":"e_1_3_1_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/1629575.1629583"},{"key":"e_1_3_1_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/1517664.1517732"},{"key":"e_1_3_1_30_2","unstructured":"Dallas Semiconductor. 1998. Fundamentals of RS-232 serial communications. (1998)."},{"key":"e_1_3_1_31_2","unstructured":"Philips Semiconductors. 2000. The I2C-bus specification. Philips Semiconductors 9397 750 (2000) 00954."},{"key":"e_1_3_1_32_2","doi-asserted-by":"publisher","DOI":"10.1109\/MC.2014.19"},{"key":"e_1_3_1_33_2","unstructured":"Manny Soltero Jing Zhang Chris Cockrill et al. 2002. 422 and 485 standards overview and system configurations. Texas Instruments Application Report (2002) 1\u201333."},{"key":"e_1_3_1_34_2","unstructured":"Universal Serial Bus Specification. 2000. Revision 2.0."},{"key":"e_1_3_1_35_2","doi-asserted-by":"publisher","DOI":"10.1145\/1086228.1086230"},{"key":"e_1_3_1_36_2","doi-asserted-by":"publisher","DOI":"10.1145\/3267242.3267280"},{"key":"e_1_3_1_37_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-31205-2_14"},{"key":"e_1_3_1_38_2","unstructured":"World Wide Web Consortium (W3C). 2007. Web Services Description Language (WSDL) Version 2.0. https:\/\/www.w3.org\/TR\/wsdl\/. W3C Recommendation 26 June 2007."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3656405","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3656405","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,7,4]],"date-time":"2025-07-04T20:40:31Z","timestamp":1751661631000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3656405"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2024,6,20]]},"references-count":37,"journal-issue":{"issue":"PLDI","published-print":{"date-parts":[[2024,6,20]]}},"alternative-id":["10.1145\/3656405"],"URL":"https:\/\/doi.org\/10.1145\/3656405","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2024,6,20]]},"assertion":[{"value":"2024-06-20","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}