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...
Gespeichert in:
Veröffentlicht in: | Programming and computer software 2024-10, Vol.50 (5), p.343-355 |
---|---|
1. Verfasser: | |
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 |