channels. It was ported to two differnt compilers and
two different OS variants.
The overhead for the introduction of the C++
compiler is very low. The usage of C++ libraries
causes added cost. In our use of objects for
encapsulation and inheritance, there were no use of
additional libraries. We got increased portability and
maintainability.
We found that the Cypress PSoC5 IDE had no support
for C++ libraries, but it was easy to add compiler
directives to enable C++ compiler functionality. IAR
had support for embedded C++ with a limited support
for C++ libraries.
We made a set of base classes hiding the differences
between µC-OS-II and µC-OS-III. The classes
effectively hid all differences managing processes
and message communication. The process
functionality was implemented as sub-classes that are
portable between the two OSes.
The architecture will enable ROM code with
processes for several application variants. The device
can be enabled with one application variant by use of
a script or remote commands. This reduces the need
for downloading new code when changing between
application variants. Downloading code costs energy,
thus the architecture can provide increased
operational battery time.
The architecture can simplify code generation from
design specific languages like ThingML (Harrand,
Fleurey, Morin, & Husa, 2016). ThingML among
other tools are modelling objects using message based
communication. When using the port concept from
the architecture, the code generation from such a tool
is simplified due to the concept similarities such as; i)
many object instances and ii) communication using
channels. The architecture also makes remote
configuration possible by interfacing tools like
Kevoree (Tricoire et al., 2016). Then sensor devices
can be managed using the same tools as cloud
services. Future work will focus on automatic
management of messages reducing manual interface
coding. Today much time is used writing and
maintaining proxy functions dedicated to each
message type. Automating this process will save
coding time and reduce time used for debugging.
ACKNOWLEDGEMENTS
This work has been supported by EU FP7 HEADS
(grant agreement: 611337) project.
REFERENCES
Amjad, M., Sharif, M., Afzal, M. K., & Kim, S. W. (2016).
TinyOS-New Trends, Comparative Views, and
Supported Sensing Applications: A Review. Ieee
Sensors Journal, 16(9), 2865-2889. doi: 10.1109/
Jsen.2016.2519924
Dunkels, A., Finne, N., Eriksson, J., & Voigt, T. (2006).
Run-time dynamic linking for reprogramming wireless
sensor networks. Paper presented at the Proceedings of
the 4th international conference on Embedded
networked sensor systems, Boulder, Colorado, USA.
Gamma, E. (1995). Design patterns : elements of reusable
object-oriented software. Reading, Mass.: Addison-
Wesley.
Gay, D., Levis, P., & Culler, D. (2007). Software design
patterns for TinyOS. Acm Transactions on Embedded
Computing Systems, 6(4). doi: Artn 22 10.1145/
1274858.1274860
Harrand, N., Fleurey, F., Morin, B., & Husa, K. E. (2016).
ThingML: a language and code generation framework
for heterogeneous targets. Paper presented at the
Proceedings of the ACM/IEEE 19th International
Conference on Model Driven Engineering Languages
and Systems, Saint-malo, France.
Hänninen, K., Mäki-Turja, J., Nolin, M., Lindberg, M.,
Lundbäck, J., & Lundbäck, K. L. (2008). The rubus
component model for resource constrained real-time
systems. Paper presented at the SIES'2008 - 3rd
International Symposium on Industrial Embedded
Systems.
Labrosse, J. J. (2003). Embedded Real-Time Operating
System μC/OS-II.
Taherkordi, A., Loiret, F., Rouvoy, R., & Eliassen, F.
(2013). Optimizing Sensor Network Reprogramming
via In Situ Reconfigurable Components. Acm
Transactions on Sensor Networks, 9(2). doi:Artn 14
Doi 10.1145/2422966.2422971
Tricoire, M., Barais, O., Leduc, M., Bourcier, J., Fouquet,
F., Nain, G., Ieee. (2016). KevoreeJS: Enabling
dynamic software reconfigurations in the Browser.
Proceedings 2016 19th International Acm Sigsoft
Symposium on Component-Based Software
Engineering, 49-58. doi:10.1109/cbse.2016.20
van Ommering, R. (1998) Koala, a component model for
consumer electronics product software. Vol. 1429.
Lecture Notes in Computer Science (including
subseries Lecture Notes in Artificial Intelligence and
Lecture Notes in Bioinformatics) (pp. 76-86).
Zurawski, R. (2006). Embedded systems handbook. Boca
Raton: Taylor & Francis.