{"id":910749,"date":"2023-01-03T14:06:47","date_gmt":"2023-01-03T22:06:47","guid":{"rendered":"https:\/\/www.microsoft.com\/en-us\/research\/"},"modified":"2023-07-29T10:02:28","modified_gmt":"2023-07-29T17:02:28","slug":"jacdac-service-based-prototyping-of-embedded-systems","status":"publish","type":"msr-research-item","link":"https:\/\/www.microsoft.com\/en-us\/research\/publication\/jacdac-service-based-prototyping-of-embedded-systems\/","title":{"rendered":"Jacdac: Service-based Prototyping of Embedded Systems"},"content":{"rendered":"
\n
\u00a0 \u00a0The 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 program, or other service, but independently managed and updated.<\/div>\n
<\/div>\n
\u00a0 \u00a0We propose, design, implement and evaluate a service-based approach to prototyping embedded systems called Jacdac. 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 wire protocol (bus). A separate microcontroller executes the user’s application program, which is a client of the Jacdac services on the bus.<\/div>\n
<\/div>\n
\u00a0 \u00a0Our 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 a third-party manufacturer.<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"

\u00a0 \u00a0The 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 […]<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"msr-url-field":"","msr-podcast-episode":"","msrModifiedDate":"","msrModifiedDateEnabled":false,"ep_exclude_from_search":false,"_classifai_error":"","msr-author-ordering":[{"type":"user_nicename","value":"Thomas Ball","user_id":"33895"},{"type":"user_nicename","value":"Peli de Halleux","user_id":"32253"},{"type":"user_nicename","value":"James Devine","user_id":"41632"},{"type":"user_nicename","value":"Steve Hodges","user_id":"33628"},{"type":"user_nicename","value":"Michal Moskal","user_id":"37431"}],"msr_publishername":"","msr_publisher_other":"","msr_booktitle":"","msr_chapter":"","msr_edition":"","msr_editors":"","msr_how_published":"","msr_isbn":"","msr_issue":"","msr_journal":"","msr_number":"MSR-TR-2023-4","msr_organization":"Microsoft","msr_pages_string":"","msr_page_range_start":"","msr_page_range_end":"","msr_series":"","msr_volume":"","msr_copyright":"","msr_conference_name":"","msr_doi":"","msr_arxiv_id":"","msr_s2_paper_id":"","msr_mag_id":"","msr_pubmed_id":"","msr_other_authors":"","msr_other_contributors":"","msr_speaker":"","msr_award":"","msr_affiliation":"","msr_institution":"","msr_host":"","msr_version":"","msr_duration":"","msr_original_fields_of_study":"","msr_release_tracker_id":"","msr_s2_match_type":"","msr_citation_count_updated":"","msr_published_date":"2023-1-3","msr_highlight_text":"","msr_notes":"","msr_longbiography":"","msr_publicationurl":"","msr_external_url":"","msr_secondary_video_url":"","msr_conference_url":"","msr_journal_url":"","msr_s2_pdf_url":"","msr_year":0,"msr_citation_count":0,"msr_influential_citations":0,"msr_reference_count":0,"msr_s2_match_confidence":0,"msr_microsoftintellectualproperty":true,"msr_s2_open_access":false,"msr_s2_author_ids":[],"msr_pub_ids":[],"msr_hide_image_in_river":0,"footnotes":""},"msr-research-highlight":[],"research-area":[13552,13560],"msr-publication-type":[193718],"msr-publisher":[],"msr-focus-area":[],"msr-locale":[268875],"msr-post-option":[],"msr-field-of-study":[246739,251365],"msr-conference":[],"msr-journal":[],"msr-impact-theme":[],"msr-pillar":[],"class_list":["post-910749","msr-research-item","type-msr-research-item","status-publish","hentry","msr-research-area-hardware-devices","msr-research-area-programming-languages-software-engineering","msr-locale-en_us","msr-field-of-study-computer-hardware","msr-field-of-study-software-engineering"],"msr_publishername":"","msr_edition":"","msr_affiliation":"","msr_published_date":"2023-1-3","msr_host":"","msr_duration":"","msr_version":"","msr_speaker":"","msr_other_contributors":"","msr_booktitle":"","msr_pages_string":"","msr_chapter":"","msr_isbn":"","msr_journal":"","msr_volume":"","msr_number":"MSR-TR-2023-4","msr_editors":"","msr_series":"","msr_issue":"","msr_organization":"Microsoft","msr_how_published":"","msr_notes":"","msr_highlight_text":"","msr_release_tracker_id":"","msr_original_fields_of_study":"","msr_download_urls":"","msr_external_url":"","msr_secondary_video_url":"","msr_longbiography":"","msr_microsoftintellectualproperty":1,"msr_main_download":"","msr_publicationurl":"","msr_doi":"","msr_publication_uploader":[{"type":"file","viewUrl":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/01\/MSR-TR-2023-4-63b4a4bb98c7f.pdf","id":"910776","title":"msr-tr-2023-4-63b4a4bb98c7f","label_id":"243109","label":0}],"msr_related_uploader":"","msr_citation_count":0,"msr_citation_count_updated":"","msr_s2_paper_id":"","msr_influential_citations":0,"msr_reference_count":0,"msr_arxiv_id":"","msr_s2_author_ids":[],"msr_s2_open_access":false,"msr_s2_pdf_url":null,"msr_attachments":[{"id":910776,"url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/01\/MSR-TR-2023-4-63b4a4bb98c7f.pdf"},{"id":910770,"url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/01\/MSR-TR-2023-4.pdf"},{"id":910767,"url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/01\/main-63b4a09ad7bb0.pdf"},{"id":910755,"url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-content\/uploads\/2023\/01\/main.pdf"}],"msr-author-ordering":[{"type":"user_nicename","value":"Thomas Ball","user_id":33895,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Thomas Ball"},{"type":"user_nicename","value":"Peli de Halleux","user_id":32253,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Peli de Halleux"},{"type":"user_nicename","value":"James Devine","user_id":41632,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=James Devine"},{"type":"user_nicename","value":"Steve Hodges","user_id":33628,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Steve Hodges"},{"type":"user_nicename","value":"Michal Moskal","user_id":37431,"rest_url":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/microsoft-research\/v1\/researchers?person=Michal Moskal"}],"msr_impact_theme":[],"msr_research_lab":[199565],"msr_event":[],"msr_group":[144812,379814],"msr_project":[807097,642720],"publication":[],"video":[],"msr-tool":[],"msr_publication_type":"techreport","related_content":{"projects":[{"ID":807097,"post_title":"Jacdac: Connect and code electronics. Instantly.","post_name":"jacdac-connect-and-code-electronics","post_type":"msr-project","post_date":"2022-06-17 12:11:16","post_modified":"2025-08-18 22:02:15","post_status":"publish","permalink":"https:\/\/www.microsoft.com\/en-us\/research\/project\/jacdac-connect-and-code-electronics\/","post_excerpt":"Connect and code electronics. Instantly. The Jacdac project is now hosted at (opens in new tab)https:\/\/github.com\/jacdac (opens in new tab)\u00a0and maintained by Lancaster University. Jacdac (opens in new tab) is an open source hardware\/software platform that makes it easy for everyone to create custom electronic solutions from a wide variety of hardware devices, (opens in new tab)with standardized PCB-based edge connector and cables. Jacdac abstracts device functionality via services (opens in new tab), supported by…","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/807097"}]}},{"ID":642720,"post_title":"Democratizing Hardware Initiative","post_name":"long-tail-hardware","post_type":"msr-project","post_date":"2020-03-12 14:12:40","post_modified":"2023-11-28 10:44:52","post_status":"publish","permalink":"https:\/\/www.microsoft.com\/en-us\/research\/project\/long-tail-hardware\/","post_excerpt":"Currently, developing new electronic devices requires significant expertise and resource, and such hardware products are often only practical at scale. We want to make the design and manufacture of new electronic devices quicker, cheaper, easier and more accessible. We feel that software development and delivery has been democratized over the past twenty years, and now we want to democratize hardware! We think of electronic device creation in two main stages: designing a prototype, and transitioning…","_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-project\/642720"}]}}]},"_links":{"self":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/910749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item"}],"about":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/types\/msr-research-item"}],"version-history":[{"count":2,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/910749\/revisions"}],"predecessor-version":[{"id":910764,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-item\/910749\/revisions\/910764"}],"wp:attachment":[{"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/media?parent=910749"}],"wp:term":[{"taxonomy":"msr-research-highlight","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-research-highlight?post=910749"},{"taxonomy":"msr-research-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/research-area?post=910749"},{"taxonomy":"msr-publication-type","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publication-type?post=910749"},{"taxonomy":"msr-publisher","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-publisher?post=910749"},{"taxonomy":"msr-focus-area","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-focus-area?post=910749"},{"taxonomy":"msr-locale","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-locale?post=910749"},{"taxonomy":"msr-post-option","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-post-option?post=910749"},{"taxonomy":"msr-field-of-study","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-field-of-study?post=910749"},{"taxonomy":"msr-conference","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-conference?post=910749"},{"taxonomy":"msr-journal","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-journal?post=910749"},{"taxonomy":"msr-impact-theme","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-impact-theme?post=910749"},{"taxonomy":"msr-pillar","embeddable":true,"href":"https:\/\/www.microsoft.com\/en-us\/research\/wp-json\/wp\/v2\/msr-pillar?post=910749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}