Unified Processing of Events and Co-routines in Embedded Program

A new architectural approach to real-time embedded programming is described. A bare-metal program is written in C/C++ and combines event-driven technique with concurrency based on co-routines. Events are processed by soft real-time core at the priority level of software generated interrupts. Event i...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Programming and computer software 2024-10, Vol.50 (5), p.343-355
1. Verfasser: Minin, P. V.
Format: Artikel
Sprache:eng
Schlagworte:
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 355
container_issue 5
container_start_page 343
container_title Programming and computer software
container_volume 50
creator Minin, P. V.
description A new architectural approach to real-time embedded programming is described. A bare-metal program is written in C/C++ and combines event-driven technique with concurrency based on co-routines. Events are processed by soft real-time core at the priority level of software generated interrupts. Event is first posted to input queue of the core and then processed by invocation of its event handler. A special case of event is co-routine, its resumable function being a co-routine event handler. The co-routine that either yielded or needs to be resumed is queued for event processing once again. As a result, it is processed multiple times until execution of resumable function comes to the end of its operator sequence. Different levels of processing priority may be assigned to an event. Soft real-time core could be further expanded to run on symmetrical multiprocessor hardware. A combination of co-routines and basic events could easily be used in fork/join model. Concurrency constructs resemble those of Go and occam languages. Virtually all classic types of synchronization primitives could be implemented. The new approach was implemented for various ARM and Blackfin processors in C++ language as portable DORSECC library. This library was further used to program real-time embedded systems for mass-produced banknote sorting machines. One type of systems was used to recognize and validate banknote images by the method of cascade of one-class classifiers. The other system worked as a motion controller and used finite automata to control sensors and actuators. The total number of systems in operation is currently over 20000. The event and co-routine core in these systems provides average event processing time in the range of dozens of microseconds with sub-microsecond overhead time per each event.
doi_str_mv 10.1134/S0361768824700154
format Article
fullrecord <record><control><sourceid>proquest_cross</sourceid><recordid>TN_cdi_proquest_journals_3110113557</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>3110113557</sourcerecordid><originalsourceid>FETCH-LOGICAL-c198t-1b1d944fff3b04264e5a2936f589d3faec6502c053905aeeb32f867d7f896a253</originalsourceid><addsrcrecordid>eNp1kEtLxDAUhYMoOI7-AHcB19XcvJrulGF8wICCzrqkzc3QwUnGpBX893ao4EJc3cX5vnPhEHIJ7BpAyJtXJjSU2hguS8ZAySMyA81MIbiGYzI7xMUhPyVnOW9HhDEpZ-R2HTrfoaMvKbaYcxc2NHq6_MTQZ2qDo4tYpDj0XcBMu0CXuwadm4RNsrtzcuLte8aLnzsn6_vl2-KxWD0_PC3uVkULlekLaMBVUnrvRcMk1xKV5ZXQXpnKCW-x1YrxlilRMWURG8G90aUrvam05UrMydXUu0_xY8Dc19s4pDC-rAUAG0dQqhwpmKg2xZwT-nqfup1NXzWw-jBU_Weo0eGTk0c2bDD9Nv8vfQOsSGhO</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype><pqid>3110113557</pqid></control><display><type>article</type><title>Unified Processing of Events and Co-routines in Embedded Program</title><source>SpringerNature Journals</source><creator>Minin, P. V.</creator><creatorcontrib>Minin, P. V.</creatorcontrib><description>A new architectural approach to real-time embedded programming is described. A bare-metal program is written in C/C++ and combines event-driven technique with concurrency based on co-routines. Events are processed by soft real-time core at the priority level of software generated interrupts. Event is first posted to input queue of the core and then processed by invocation of its event handler. A special case of event is co-routine, its resumable function being a co-routine event handler. The co-routine that either yielded or needs to be resumed is queued for event processing once again. As a result, it is processed multiple times until execution of resumable function comes to the end of its operator sequence. Different levels of processing priority may be assigned to an event. Soft real-time core could be further expanded to run on symmetrical multiprocessor hardware. A combination of co-routines and basic events could easily be used in fork/join model. Concurrency constructs resemble those of Go and occam languages. Virtually all classic types of synchronization primitives could be implemented. The new approach was implemented for various ARM and Blackfin processors in C++ language as portable DORSECC library. This library was further used to program real-time embedded systems for mass-produced banknote sorting machines. One type of systems was used to recognize and validate banknote images by the method of cascade of one-class classifiers. The other system worked as a motion controller and used finite automata to control sensors and actuators. The total number of systems in operation is currently over 20000. The event and co-routine core in these systems provides average event processing time in the range of dozens of microseconds with sub-microsecond overhead time per each event.</description><identifier>ISSN: 0361-7688</identifier><identifier>EISSN: 1608-3261</identifier><identifier>DOI: 10.1134/S0361768824700154</identifier><language>eng</language><publisher>Moscow: Pleiades Publishing</publisher><subject>Actuators ; Artificial Intelligence ; Banknotes ; C plus plus ; C++ (programming language) ; Computer Science ; Concurrency ; Embedded systems ; Linux ; Multiprocessing ; Operating Systems ; Real-time programming ; Routines ; Software Engineering ; Software Engineering/Programming and Operating Systems ; Synchronism ; Time synchronization</subject><ispartof>Programming and computer software, 2024-10, Vol.50 (5), p.343-355</ispartof><rights>Pleiades Publishing, Ltd. 2024. ISSN 0361-7688, Programming and Computer Software, 2024, Vol. 50, No. 5, pp. 343–355. © Pleiades Publishing, Ltd., 2024. Russian Text © The Author(s), 2024, published in Programmirovanie, 2024, Vol. 50, No. 5.</rights><lds50>peer_reviewed</lds50><woscitedreferencessubscribed>false</woscitedreferencessubscribed><cites>FETCH-LOGICAL-c198t-1b1d944fff3b04264e5a2936f589d3faec6502c053905aeeb32f867d7f896a253</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><linktopdf>$$Uhttps://link.springer.com/content/pdf/10.1134/S0361768824700154$$EPDF$$P50$$Gspringer$$H</linktopdf><linktohtml>$$Uhttps://link.springer.com/10.1134/S0361768824700154$$EHTML$$P50$$Gspringer$$H</linktohtml><link.rule.ids>314,780,784,27924,27925,41488,42557,51319</link.rule.ids></links><search><creatorcontrib>Minin, P. V.</creatorcontrib><title>Unified Processing of Events and Co-routines in Embedded Program</title><title>Programming and computer software</title><addtitle>Program Comput Soft</addtitle><description>A new architectural approach to real-time embedded programming is described. A bare-metal program is written in C/C++ and combines event-driven technique with concurrency based on co-routines. Events are processed by soft real-time core at the priority level of software generated interrupts. Event is first posted to input queue of the core and then processed by invocation of its event handler. A special case of event is co-routine, its resumable function being a co-routine event handler. The co-routine that either yielded or needs to be resumed is queued for event processing once again. As a result, it is processed multiple times until execution of resumable function comes to the end of its operator sequence. Different levels of processing priority may be assigned to an event. Soft real-time core could be further expanded to run on symmetrical multiprocessor hardware. A combination of co-routines and basic events could easily be used in fork/join model. Concurrency constructs resemble those of Go and occam languages. Virtually all classic types of synchronization primitives could be implemented. The new approach was implemented for various ARM and Blackfin processors in C++ language as portable DORSECC library. This library was further used to program real-time embedded systems for mass-produced banknote sorting machines. One type of systems was used to recognize and validate banknote images by the method of cascade of one-class classifiers. The other system worked as a motion controller and used finite automata to control sensors and actuators. The total number of systems in operation is currently over 20000. The event and co-routine core in these systems provides average event processing time in the range of dozens of microseconds with sub-microsecond overhead time per each event.</description><subject>Actuators</subject><subject>Artificial Intelligence</subject><subject>Banknotes</subject><subject>C plus plus</subject><subject>C++ (programming language)</subject><subject>Computer Science</subject><subject>Concurrency</subject><subject>Embedded systems</subject><subject>Linux</subject><subject>Multiprocessing</subject><subject>Operating Systems</subject><subject>Real-time programming</subject><subject>Routines</subject><subject>Software Engineering</subject><subject>Software Engineering/Programming and Operating Systems</subject><subject>Synchronism</subject><subject>Time synchronization</subject><issn>0361-7688</issn><issn>1608-3261</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2024</creationdate><recordtype>article</recordtype><recordid>eNp1kEtLxDAUhYMoOI7-AHcB19XcvJrulGF8wICCzrqkzc3QwUnGpBX893ao4EJc3cX5vnPhEHIJ7BpAyJtXJjSU2hguS8ZAySMyA81MIbiGYzI7xMUhPyVnOW9HhDEpZ-R2HTrfoaMvKbaYcxc2NHq6_MTQZ2qDo4tYpDj0XcBMu0CXuwadm4RNsrtzcuLte8aLnzsn6_vl2-KxWD0_PC3uVkULlekLaMBVUnrvRcMk1xKV5ZXQXpnKCW-x1YrxlilRMWURG8G90aUrvam05UrMydXUu0_xY8Dc19s4pDC-rAUAG0dQqhwpmKg2xZwT-nqfup1NXzWw-jBU_Weo0eGTk0c2bDD9Nv8vfQOsSGhO</recordid><startdate>20241001</startdate><enddate>20241001</enddate><creator>Minin, P. V.</creator><general>Pleiades Publishing</general><general>Springer Nature B.V</general><scope>AAYXX</scope><scope>CITATION</scope><scope>JQ2</scope></search><sort><creationdate>20241001</creationdate><title>Unified Processing of Events and Co-routines in Embedded Program</title><author>Minin, P. V.</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c198t-1b1d944fff3b04264e5a2936f589d3faec6502c053905aeeb32f867d7f896a253</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2024</creationdate><topic>Actuators</topic><topic>Artificial Intelligence</topic><topic>Banknotes</topic><topic>C plus plus</topic><topic>C++ (programming language)</topic><topic>Computer Science</topic><topic>Concurrency</topic><topic>Embedded systems</topic><topic>Linux</topic><topic>Multiprocessing</topic><topic>Operating Systems</topic><topic>Real-time programming</topic><topic>Routines</topic><topic>Software Engineering</topic><topic>Software Engineering/Programming and Operating Systems</topic><topic>Synchronism</topic><topic>Time synchronization</topic><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Minin, P. V.</creatorcontrib><collection>CrossRef</collection><collection>ProQuest Computer Science Collection</collection><jtitle>Programming and computer software</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Minin, P. V.</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Unified Processing of Events and Co-routines in Embedded Program</atitle><jtitle>Programming and computer software</jtitle><stitle>Program Comput Soft</stitle><date>2024-10-01</date><risdate>2024</risdate><volume>50</volume><issue>5</issue><spage>343</spage><epage>355</epage><pages>343-355</pages><issn>0361-7688</issn><eissn>1608-3261</eissn><abstract>A new architectural approach to real-time embedded programming is described. A bare-metal program is written in C/C++ and combines event-driven technique with concurrency based on co-routines. Events are processed by soft real-time core at the priority level of software generated interrupts. Event is first posted to input queue of the core and then processed by invocation of its event handler. A special case of event is co-routine, its resumable function being a co-routine event handler. The co-routine that either yielded or needs to be resumed is queued for event processing once again. As a result, it is processed multiple times until execution of resumable function comes to the end of its operator sequence. Different levels of processing priority may be assigned to an event. Soft real-time core could be further expanded to run on symmetrical multiprocessor hardware. A combination of co-routines and basic events could easily be used in fork/join model. Concurrency constructs resemble those of Go and occam languages. Virtually all classic types of synchronization primitives could be implemented. The new approach was implemented for various ARM and Blackfin processors in C++ language as portable DORSECC library. This library was further used to program real-time embedded systems for mass-produced banknote sorting machines. One type of systems was used to recognize and validate banknote images by the method of cascade of one-class classifiers. The other system worked as a motion controller and used finite automata to control sensors and actuators. The total number of systems in operation is currently over 20000. The event and co-routine core in these systems provides average event processing time in the range of dozens of microseconds with sub-microsecond overhead time per each event.</abstract><cop>Moscow</cop><pub>Pleiades Publishing</pub><doi>10.1134/S0361768824700154</doi><tpages>13</tpages></addata></record>
fulltext fulltext
identifier ISSN: 0361-7688
ispartof Programming and computer software, 2024-10, Vol.50 (5), p.343-355
issn 0361-7688
1608-3261
language eng
recordid cdi_proquest_journals_3110113557
source SpringerNature Journals
subjects Actuators
Artificial Intelligence
Banknotes
C plus plus
C++ (programming language)
Computer Science
Concurrency
Embedded systems
Linux
Multiprocessing
Operating Systems
Real-time programming
Routines
Software Engineering
Software Engineering/Programming and Operating Systems
Synchronism
Time synchronization
title Unified Processing of Events and Co-routines in Embedded Program
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-01-01T21%3A27%3A55IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-proquest_cross&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Unified%20Processing%20of%20Events%20and%20Co-routines%20in%20Embedded%20Program&rft.jtitle=Programming%20and%20computer%20software&rft.au=Minin,%20P.%20V.&rft.date=2024-10-01&rft.volume=50&rft.issue=5&rft.spage=343&rft.epage=355&rft.pages=343-355&rft.issn=0361-7688&rft.eissn=1608-3261&rft_id=info:doi/10.1134/S0361768824700154&rft_dat=%3Cproquest_cross%3E3110113557%3C/proquest_cross%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_pqid=3110113557&rft_id=info:pmid/&rfr_iscdi=true