  Embedded systems including IoT devices are designed for specialized
functions; thus, changes in functions are not considered following their
release. For this reason, changing functions to satisfy the requirements of IoT
systems is difficult. In this study, we focus on updating existing embedded
systems without modifying them. We investigate the design of new functions and
their implementation with limited resources. This paper describes an evolution
mechanism for updating the functionalities of existing embedded systems. The
evolution mechanism uses a control unit that is deployed outside the embedded
system. To guide the steady implementation of the evolution mechanism, we
define an evolution process that effectively uses the state machine diagram at
the design time and runtime to update the embedded systems. The programming
framework implemented in this study supports the evolution process. We evaluate
the evolution mechanism based on the results from two experiments. The first
experiment involved applying the evolution mechanism to a cleaning robot, this
demonstrated that the evolution mechanism systematically enables the injection
of new functions into an embedded system in the real world. The second
experiment, on the probabilistic model checking, demonstrated that the
mechanism provides almost the same performance as the ordinary embedded system
with an improved robustness.
