Skip to content

Commit

Permalink
README.md updated from https://stackedit.io/
Browse files Browse the repository at this point in the history
  • Loading branch information
vortex314 committed Jan 4, 2019
1 parent dcdb953 commit 76a6401
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,10 +39,10 @@ as communicating local between actors. The actor systems can bridge communicatio
<li>To reduce resource consumptions in a limited embedded environment some design aspects are different from Akka Java/Scala.</li>
<li>actors can share the same mailbox, each mailbox has 1 thread ( MessageDispatcher ) to invoke the actors. On FreeRtos based controllers multiple threads ( aka Tasks ) can be started running dispatchers with multiple mailboxes. On Arduino common platform this will be likely limited to 1 thread. This is close to a coroutine model.</li>
<li>C++ has limited introspection facilities, so message classes are put explicitly into the message</li>
<li>the message passed between actors is in a in-memory serialized form, based on aspects from Xdr ( 4 byte granularity ) and Protobuf ( each element is tagged ). The message is copied and a pointer to this copy is passed on. Since most controllers are already 32 bit word aligned, the Xdr form should speed up data retrieval.</li>
<li>little attention has been given on stopping actors as in an embedded environment these actors are started once and run forever, so no resource cleanup yet there.</li>
<li>Unique id’s are created based on FNV hashing, when compiler optimization is activated this is executed at compile time and not run-time. These unique id’s are used for string references in 16 bit and actor references. These 16 bit hashes speed up comparison and extraction</li>
<li>A number of building blocks supporting an Akka framework are provided by an RTOS like FreeRTOS. So as I first started without an RTOS the result was simulating a lot of an RTOS was offering out of the box. So seen the support of Amazon for FreeRTOS and the general availability for different processors it was an easy arbitration to go for this approach. See also : <a href="https://community.arm.com/iot/embedded/b/embedded-blog/posts/beyond-the-rtos-a-better-way-to-design-real-time-embedded-software">https://community.arm.com/iot/embedded/b/embedded-blog/posts/beyond-the-rtos-a-better-way-to-design-real-time-embedded-software</a> . It was even possible to keep the approach of fine tuning the code first on a linux platform and deploy then on a microcontroller as there exists FreeRTOS simulators on Linux.</li>
<li>the message passed between actors is in a <strong>in-memory serialized form</strong>, based on aspects from <strong>Xdr</strong> ( 4 byte granularity ) and <strong>Protobuf</strong> ( each element is tagged ). The message is copied and a pointer to this copy is passed on. Since most controllers are already 32 bit word aligned, the Xdr form should speed up data retrieval.</li>
<li>little attention has been given on <strong>stopping actors</strong> as in an embedded environment these actors are started once and run forever, so no resource cleanup yet there.</li>
<li>Unique id’s are created based on FNV hashing, when compiler optimization is activated this is executed at compile time and not run-time. These <strong>unique id’s</strong> are used for string references in 16 bit and actor references. These 16 bit hashes speed up comparison and extraction</li>
<li>A number of building blocks supporting an Akka framework are provided by an RTOS like <strong>FreeRTOS</strong>. So as I first started without an RTOS the result was simulating a lot of an RTOS was offering out of the box. So seen the support of Amazon for FreeRTOS and the general availability for different processors it was an easy arbitration to go for this approach. See also : <a href="https://community.arm.com/iot/embedded/b/embedded-blog/posts/beyond-the-rtos-a-better-way-to-design-real-time-embedded-software">https://community.arm.com/iot/embedded/b/embedded-blog/posts/beyond-the-rtos-a-better-way-to-design-real-time-embedded-software</a> . It was even possible to keep the approach of fine tuning the code first on a linux platform and deploy then on a microcontroller as there exists FreeRTOS simulators on Linux.</li>
</ul>
<h2 id="platforms-supported">Platforms supported</h2>
<ul>
Expand Down

0 comments on commit 76a6401

Please sign in to comment.